Создание защищенного от бомб рабочего процесса (на окнах) - PullRequest
2 голосов
/ 20 ноября 2010

Я пишу программу просмотра PDF, которая использует различные библиотеки, написанные на C. Этот C-код потенциально прост в использовании.И слишком много строк для проверки.Я должен предположить, что этот код может содержать уязвимые ошибки.

Дело в том, что код C довольно прост.Поток байтов входит на одном конце, а битовый массив (также поток байтов) выходит на другом конце.

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

Я думаю, что процесс не должен быть в состоянии:

  • любой доступ к диску
  • открытые сокеты
  • ограниченный объем использования памяти
  • доступ к разделяемой памяти с другими процессами
  • загрузка других DLL
  • ... что-нибудь еще?

Возможно ли это?Это где-то описано?

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Это не совсем возможно. В конечном итоге любой потенциальный код эксплойта будет работать с теми привилегиями, с которыми работает этот процесс. Если вы используете его как обычный пользователь, вы ограничите возможный ущерб, но лучше всего просто исправить код как можно больше.

1 голос
/ 20 ноября 2010

Если у вас есть исходный код - вы можете убедиться, что он не выполняет описанные действия.Ну, ограничить доступную память немного сложнее.Однако вы можете использовать SetProcessWorkingSetSize.

Кроме того, после сборки исполняемого файла вы можете проверить его таблицу импорта DLL (с ​​помощью обходчика зависимостей), чтобы убедиться, что он не имеет доступа к какой-либо функции файла / сокета.

...