& quot; Только стандартный ввод / вывод & quot; привилегии под виндой

Я хотел бы настроить онлайн судья (программное обеспечение для автоматического тестирования; принимает потенциально вредоносный код и запускает на нем несколько тестов) в Windows, но такое программное обеспечение обычно пишется для систем * nix, потому что там гораздо проще выполнять песочницу. В настоящее время, похоже, мне придется написать это самому.

  1. Как скомпилировать код C ++ таким образом, чтобы предотвратить любое поведение, кроме stdin / stdout?
  2. Как запустить исполняемый файл в среде, которая позволяет ему выполнять только stdio?

Я рассмотрел удаление некоторых .lib и заголовочные файлы из стандартной установки Visual Studio, но я боюсь, что технически возможно выполнить вызовы WinAPI.

Кроме того, я мог бы создать еще одного пользователя ОС, установить некоторые права в панели управления «Администрирование» и runas исполняемые файлы этого пользователя для получения «безопасной» среды, но я не очень хорош в администрировании и не знаю, можно ли дать программе только права stdio.

3

Решение

Так как проблема такого рода будет целью некоторого довольно «плохого» кода во всех видах различных аспектов, я бы сказал, что ЕДИНСТВЕННОЕ возможное решение — использовать виртуальную машину для запуска «чужого» кода. Таким образом, вместо создания серверного программного обеспечения, которое работает на реальном оборудовании (и может испортить или захватить компьютер в злонамеренных целях), вы запускаете код на виртуальной машине с ограниченными ресурсами и строгими правилами. Как только «результат» завершен, вы выключаете эту ВМ и начинаете заново с «новой» ВМ (созданной путем клонирования ранее созданной ВМ).

И да, удаление lib и заголовков, конечно, не остановит кого-либо от использования вызовов / функций, которые вы не хотите использовать. Это сделает его немного сложнее, но только чуть-чуть. Большинство «вредных» звонков находятся в системе win32.dll что вам также нужно для системного ввода-вывода и тому подобных вещей.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]