Каков принцип работы сайта Codepad.org?
Мне интересно принцип работы сайта Codepad.org. (Принцип работы онлайн-компилятора Си)
Я думаю, что принцип следовать этим шагам.
Пользователь отправляет код C.
Сайт отправляется в GCC, установленный на сервере.
GCC скомпилировать код.
GCC вернуть строки и отправить на веб-сайт (веб-сервер)
Веб-сервер возвращает строки пользователю.
Это правильные шаги? Затем, как защитить от злокачественного кода, такого как удаление всех файлов с сервера?
1 ответ
Выполнение кода осуществляется супервизором на основе geordi. Стратегия состоит в том, чтобы запускать все под ptrace, при этом многие системные вызовы запрещены или игнорируются. Компиляторы и финальные исполняемые файлы выполняются в изолированной тюрьме со строгими ограничениями ресурсов. Руководитель написан на Хаскеле.
Также:
паранойя
Когда ваше приложение выполняет удаленное выполнение кода, вы должны ожидать проблем с безопасностью. Вместо того, чтобы полагаться только на супервизор chroot и ptrace, я принял некоторые дополнительные меры предосторожности:
Процессы супервизора выполняются на виртуальных машинах, которые защищены брандмауэром, так что они не могут устанавливать исходящие соединения.
Машины, на которых работают виртуальные машины, также сильно защищены брандмауэром и периодически восстанавливаются из их исходных образов.