Назад | Перейти на главную страницу

Как предотвратить внедрение / замену кода для службы Windows?

Эй!

В рамках нашего продукта у нас есть локальный установщик на серверах наших клиентов, который взаимодействует с их базами данных. В настоящее время мы работаем над преобразованием его в службу Windows. Мы узнали, как делать служба Windows, использующая nssm, но одна вещь, с которой мы сталкиваемся, - это как гарантировать, что мы не подвергаем наших клиентов рискам безопасности (например, повышенным привилегиям), позволяя злоумышленнику переключать наш код на свой.

В частности, служба выполнит такую ​​команду, как %SOME_DIR%\node.exe my_javascript.js и мы не хотим, чтобы внешний проигрыватель просто отключал node.exe или файл javascript.

Итак, мой вопрос состоит из трех частей:

Большое спасибо за ответы!

Привет ☀️

Фил

Посмотрим, смогу ли я ответить на ваши 3 вопроса.

  1. Предполагая, что исполняемый файл вашей службы и файл .js расположены в каталоге, к которому у обычного пользователя есть доступ (доступ для записи), он может легко изменить файл .js (для добавления / удаления кода), заменить файл .js с совершенно новым с тем же именем (перезаписать законный) или даже удалить его (что препятствует правильному запуску службы). То же можно сказать и об исполняемом файле. Его даже можно было заменить злонамеренным.

  2. Это проблема безопасности, поскольку вам не всегда нужны права администратора в системе, чтобы иметь возможность изменять файлы. Ситуация, которую вы представляете, может быть использована злоумышленником с правами пользователя для получения прав администратора (повышение привилегий).

  3. Вы должны поместить исполняемый файл службы и файл .js в каталог (и), где только пользователи с правами администратора имеют доступ на запись. Это должно снизить риск. Кроме того, убедитесь, что вы поместили команду службы в кавычки (""), чтобы предотвратить перечисление пути службы без кавычек Windows (злоупотребление службой с помощью командной строки, которая не заключена в кавычки и в которой есть пробелы).

Если вам нужны подробности по любому из моих ответов, не стесняйтесь спрашивать!