Мы ведем постоянную дискуссию, чтобы добавить некоторые функции в проект, добавив поддержку сценариев, и он застрял в вопросах безопасности.

Подумайте, что язык будет использоваться в целях конфигурации, поэтому он должен быть достаточно безопасным в виде файлов .ini с точки зрения конечных пользователей. Действия не будут зависеть от каких-либо внешних двоичных файлов, будут разрешены только родные инструменты языка.

Разве следующие ограничения не делают его достаточно безопасным для запуска ненадежного кода:

  • Ограничить доступ к сети
  • Отключить доступ на запись полностью
  • Предоставить доступ на чтение для текущего каталога
  • Предоставить доступ только для чтения для включения глобальных библиотек

Что еще нужно, чтобы язык сценариев использовался в качестве "инструмента настройки"?

1 ответ1

1

Нет.

Помимо прочего, у вас нет защиты от манипуляций с кешем, отравления с предсказанием ветвлений и атак в стиле гребца молотка, и все это возможно из языка, который, по-видимому, подразумевает связанная дискуссия (Python).

Предполагая, что вы действительно говорите об использовании Python, вам также нужно учитывать тот факт, что код Python может загружать произвольные библиотеки и исполняемые файлы сам по себе с помощью нескольких механизмов, некоторые из которых не зависят от доступа для чтения. Все это должно быть ограничено, и вам, вероятно, следует также ограничить доступ ко многим стандартным библиотечным модулям (например, макросы документов не имеют никакого дела, разговаривая с демоном syslog или выбирая информацию об учетной записи).

Помимо всего этого, вам также необходимо: какой-то способ для пользователя явно отключить автоматический запуск этого кода, при этом идеальная ситуация заключается в том, что он должен явно разрешить его запуск (если это было поведение по умолчанию в MS Office с Если начать с макросов, то несколько крупных вирусов не смогли бы пройти через несколько десятков зараженных систем). Кроме того, чтобы быть абсолютно уверены , что защита от записи включает в себя документ макрос , связанный с, в противном случае вы до сих пор механизм эксфильтрации данных.

TBH, Python на самом деле не так уж хорош для такого рода вещей. Если бы это не было темой обсуждения в первую очередь, я бы на самом деле предложил использовать Lua, он намного лучше разработан для такого типа использования, и его намного легче защитить (хотя материал, упомянутый в начале мой ответ все еще остается проблемой для Луа).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .