Итоги проведения олимпиад
Прошло полтора года, как я участвую в проекте “Виртуальная лаборатория: информатика и программирование”. Это учебный модуль информационного портала “Московской Электронной Школы” (МЭШ), где ученики могут проходить курсы по информатике и программированию, выполнять различные тематические задания, в том числе решать задачи по программированию. Нам присылают код, который мы должны выполнить многократно, используя набор тестов предопределенный автором задачи. И каким бы подозрительным не был код, выполнить мы его обязаны в любом случае. Таково функциональное требование заказчика.

На проект я зашел в тот момент, когда нам объявили, что через три месяца на базе нашего модуля необходимо начать проводить олимпиады по программированию, а нагрузка в связи с этим возрастет в несколько десятков раз. То, с чем пришлось столкнуться, я рассказывал на UWDC 2024, а уже после этого я подготовил более проработанный доклад на TeachLeadConf 2024.
Я намеренно обходил моменты, связанные с особенностью прикладной области этого проекта. Не каждому интересно то, как мы компилируем и исполняем код, который нам прислали школьники. :) Однако, несмотря на кажущуюся простоту, эта задача, действительно, оказалась нелегкой. Что нам только не присылают, как только не пытаются нас “сломать” и “положить”. И некоторым это удавалось сделать, за что пытливым умам можно выразить отдельный респект. Однако за последний год это удалось сделать только один раз, после чего мы исправили уязвимость.
Начиная с UWDC 2024 ко мне обращались люди и интересовались деталями того, как именно мы справляемся с подобными вызовами. Пока лишь могу сказать, что у нас многоуровневая защита - комплекс мер, и детали этого трудно раскрыть в одном коротком посте. Поскольку интерес к этой теме сохраняется, в ближайшее время я постараюсь раскрыть детали и особенности того, как безопасно исполнять чужой код/программы/скрипты.
А у вас была необходимость в запуске подозрительного кода? Подозреваю, что для QA любой код выглядит подозрительно. :-)
Понравилась статья?
Посмею напомнить, что у меня есть Telegram-канал Архитектоника в ИТ, где я публикую материал на похожие темы примерно раз в неделю. Подписчики меня мотивируют, но ещё больше мотивируют живые дискуссии, ведь именно в них рождается истина. Поэтому подписывайтесь на канал и будем оставаться на связи! ;-)
Статьи из той же категории: