Уязвимости для выхода из изолированной среды в Judge0 подвергают системы полному захвату

Father

Professional
Messages
2,438
Reputation
4
Reaction score
547
Points
113
В онлайн-системе выполнения кода с открытым исходным кодом Judge0 было обнаружено множество критических недостатков безопасности, которые могут быть использованы для обеспечения выполнения кода в целевой системе.

Три уязвимости, все критические по своей природе, позволяют "злоумышленнику с достаточным доступом выполнить выход из изолированной среды и получить root-права на хост-компьютере", - говорится в отчете австралийской фирмы по кибербезопасности Tanto Security, report опубликованном сегодня.

Judge0 (произносится как "judge zero") описывается ее сопровождающими как "надежная, масштабируемая система онлайн-выполнения кода с открытым исходным кодом", которая может использоваться для создания приложений, требующих функций онлайн-выполнения кода, таких как оценка кандидатов, электронное обучение, онлайн-редакторы кода и IDE.

Согласно веб-сайту Judge0, сервисом пользуются 23 клиента, среди которых AlgoDaily, CodeChum и PYnative. На сегодняшний день проект разветвлялся на GitHub 412 раз.

Ниже перечислены недостатки, обнаруженные и сообщенные Дэниелом Купером в марте 2024 года -
  • CVE-2024-28185 (Оценка CVSS: 10.0) - Приложение не учитывает символические ссылки, размещенные внутри каталога изолированной среды, которые могут быть использованы злоумышленником для записи в произвольные файлы и обеспечения выполнения кода за пределами изолированной среды.
  • CVE-2024-28189 (оценка CVSS: 10.0) - Обходное исправление для CVE-2024-28185, вызванное использованием UNIX команды chown для ненадежного файла в изолированной среде. Злоумышленник может злоупотребить этим, создав символическую ссылку на файл за пределами изолированной среды, позволяя злоумышленнику запускать chown для произвольных файлов за пределами изолированной среды.
  • CVE-2024-29021 (Оценка CVSS: 9.1) - Конфигурация Judge0 по умолчанию делает службу уязвимой для выхода из изолированной среды через подделку запросов на стороне сервера (SSRF). Это позволяет злоумышленнику, имеющему достаточный доступ к API Judge0, получить возможность выполнения кода без обработки в качестве root на целевой машине.
Проблема коренится в скрипте Ruby с именем "isolate_job.rb", который отвечает за настройку изолированной среды, а также запуск кода и сохранение результатов выполнения.

В частности, это влечет за собой создание символической ссылки в каталоге перед настройкой bash-скрипта для выполнения программы на основе языка отправки, чтобы он позволял выполнять запись в произвольный файл в системе без отправки.

Субъект угрозы может использовать этот недостаток для перезаписи сценариев в системе и добиться выполнения кода за пределами изолированной среды и в контейнере Docker, выполняющем задание отправки.

Более того, злоумышленник может повысить свои привилегии за пределами контейнера Docker из-за того, что он запускается с использованием привилегированного флага, как указано в docker-compose.yml.

"Это позволит злоумышленнику смонтировать файловую систему хоста Linux, а затем злоумышленник сможет записывать файлы (например, вредоносное задание cron), чтобы получить доступ к системе", - сказал Герман Дошилович из Judge0.

"С этого момента злоумышленник будет иметь полный доступ к системе Judge0, включая базу данных, внутренние сети, веб-сервер Judge0 и любые другие приложения, запущенные на хосте Linux".

CVE-2024-29021, с другой стороны, имеет отношение к конфигурации, которая позволяет взаимодействовать с базой данных PostgreSQL Judge0, доступной во внутренней сети Docker, что позволяет злоумышленнику использовать SSRF для подключения к базе данных и изменения типа данных соответствующих столбцов и, в конечном итоге, добиться внедрения команды.

После ответственного раскрытия недостатки были устранены в версии 1.13.1, выпущенной 18 апреля 2024 года. Пользователям Judge0 рекомендуется обновиться до последней версии, чтобы уменьшить потенциальные угрозы.
 
Top