безопасность

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
sufix
Posts:10
Joined:27 March 2008, 09:00
безопасность

Post by sufix » 27 March 2008, 09:12

я использую ejudge-2.3.7 с reuse-4.3.4 на linux-2.6.23.1-cher1
я столкнулся с проблемой возможности использования функции system, в частости на c++
при отправке кода с system("rm /home/ejudge/blabla.txt"); файл /home/ejudge/blabla.txt действительно удаляется. так как владельцем /home/judges также является пользователь ejudge, удалить рабочий каталог, человеку, знакомому с ejudge не составляет особого труда.
возможно, эта проблема решается средствами ejudge, но я, изучив документацию на wiki-разделе и "Краткие описания изменений", ничего по этому поводу не нашел.
заранее благодарен за любую помощь.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: безопасность

Post by cher » 27 March 2008, 10:32

Включите защищенный режим выполнения (secure_run). В веб-интерфейсе настройки это соответствует "Run programs securely".

dk
Posts:129
Joined:25 March 2006, 19:37
Location:Москва, школа 179
Contact:

Re: безопасность

Post by dk » 27 March 2008, 10:56

И еще необходимо использовать патченное ядро Linux.

sufix
Posts:10
Joined:27 March 2008, 09:00

Re: безопасность

Post by sufix » 27 March 2008, 11:30

1)опция secure_run и так установлена
2)ядро патченное
может быть причина в том, что патч относительно старый? и мне стоит собрать пропатченное linux-2.6.23.12?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: безопасность

Post by cher » 27 March 2008, 13:32

При выполнении configure для ejudge должно выдаваться примерно следующее:

Code: Select all

checking for new secure execution interface in the running kernel... supported
Кроме того, в каталоге ejudge/extra/captest есть небольшой набор тестов.
Запустить их можно с помощью

Code: Select all

make && make tests
Начало вывода должно быть примерно таким:

Code: Select all

./t1
t1: checking for disabled syscalls
t1: new interface detected
ok
./t2
t2: checking for one-time exec
t2: new interface detected
ok

sufix
Posts:10
Joined:27 March 2008, 09:00

Re: безопасность

Post by sufix » 27 March 2008, 13:42

Code: Select all

checking for new secure execution interface in the running kernel... supported
эта строка была

Code: Select all

./t6
t6: checking millisecond time limits
info: child signaled: 9
info: child user+sys ms: 500
ok
All tests have passed successfully
upd
странно, но после того как я добавил в serve.cfg новый компилятор, рестартнул ejudge, функция system перестала выполняться и процессы перестали форкаться, однако результат сабмита не расценился как security violation.
а вот видимо для этого придется патчить 2.6.23.12 - судя по "новостям", поддержка security violation появилась начиная с этой версии

p.s. спасибо за помощь

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: безопасность

Post by cher » 27 March 2008, 21:52

Возможно, Вы установили опцию безопасного запуска "на лету" при работающем турнире. В случаях модификации турнира на лету нужно выполнять команду "Reload contest settings" в интерфейсе new-master или перезапускать ejudge, а иначе модификации не вступят в силу.

dk
Posts:129
Joined:25 March 2006, 19:37
Location:Москва, школа 179
Contact:

Re: безопасность

Post by dk » 27 March 2008, 23:17

Насколько я понимаю, security violation проявляется довольно редко. Я, например, ни разу его не видел, хотя мне регулярно сдают программы с вызовом system("pause")

Post Reply