Исследователь безопасности Джереми Браун обнаружил критическую уязвимость в Terrarium — Python-sandbox, разработанном компанией Cohere AI и развёртываемом в Docker-контейнере. Уязвимость получила идентификатор CVE-2026-5752 и оценку 9.3 по шкале CVSS. Проблема в том, что проект больше не поддерживается, а значит патча не будет — почти наверняка никогда.

Terrarium создавался для запуска ненадёжного кода: того, что пишут пользователи, или того, что генерируют языковые модели. Для этого он использует Pyodide — дистрибутив Python, работающий в браузере и в Node.js через WebAssembly. Это позволяет запускать стандартные Python-пакеты в изолированной среде. На GitHub проект набрал 312 звёзд и 56 форков — не гигантская аудитория, но вполне реальная.
Суть уязвимости — в обходе цепочки прототипов JavaScript. По данным CERT/CC и SentinelOne, sandbox не блокирует доступ к родительским или глобальным прототипам объектов в среде Pyodide WebAssembly. Это классическая prototype pollution, только в контексте, где последствия куда серьёзнее, чем обычно. Изолированный код получает возможность обращаться к объектам хост-среды, манипулировать ими и фактически выходить за границы, которые должны были его сдерживать.
Для эксплуатации нужен только локальный доступ к системе. Никакого взаимодействия с пользователем, никаких специальных привилегий — ничего из того, что обычно усложняет атаку. Просто локальный доступ, и дальше цепочка разворачивается сама.
Что происходит после успешной эксплуатации: атакующий вырывается из sandbox, получает возможность выполнять произвольные команды с рут-привилегиями в процессе Node.js внутри контейнера, читает чувствительные файлы вроде
Об уязвимости сообщают , CERT Coordination Center и SentinelOne. То, что в анализе участвуют сразу три серьёзные организации, говорит о том, что проблему не считают незначительной, хотя сам проект-жертва давно заброшен.
Поскольку Cohere AI больше не занимается Terrarium, ждать официального патча бессмысленно. Тем, кто по какой-то причине продолжает использовать этот инструмент, придётся выстраивать защиту самостоятельно. Сегментация сети снижает риск бокового перемещения после прорыва. Web Application Firewall может поймать подозрительный трафик на подходе. Мониторинг активности контейнера даст шанс заметить что-то неладное до того, как станет совсем плохо. Доступ к контейнеру и его ресурсам стоит жёстко ограничить только авторизованным людям. Инструменты оркестрации контейнеров с нормальными настройками безопасности тоже не лишние. И — обновить все зависимости, которые ещё можно обновить.
История с Terrarium поднимает более широкий вопрос об экосистеме LLM-инструментов. Компании быстро выпускают вспомогательные утилиты для работы с языковыми моделями, эти утилиты набирают аудиторию, а потом разработка останавливается. Люди продолжают использовать их в продакшне, не особо задумываясь о том, когда последний раз кто-то смотрел в этот код. Sandbox для запуска LLM-сгенерированного кода с незакрытой дырой на 9.3 по CVSS — это именно тот сценарий, при котором всё идёт по наихудшему варианту.

Изображение носит иллюстративный характер
Terrarium создавался для запуска ненадёжного кода: того, что пишут пользователи, или того, что генерируют языковые модели. Для этого он использует Pyodide — дистрибутив Python, работающий в браузере и в Node.js через WebAssembly. Это позволяет запускать стандартные Python-пакеты в изолированной среде. На GitHub проект набрал 312 звёзд и 56 форков — не гигантская аудитория, но вполне реальная.
Суть уязвимости — в обходе цепочки прототипов JavaScript. По данным CERT/CC и SentinelOne, sandbox не блокирует доступ к родительским или глобальным прототипам объектов в среде Pyodide WebAssembly. Это классическая prototype pollution, только в контексте, где последствия куда серьёзнее, чем обычно. Изолированный код получает возможность обращаться к объектам хост-среды, манипулировать ими и фактически выходить за границы, которые должны были его сдерживать.
Для эксплуатации нужен только локальный доступ к системе. Никакого взаимодействия с пользователем, никаких специальных привилегий — ничего из того, что обычно усложняет атаку. Просто локальный доступ, и дальше цепочка разворачивается сама.
Что происходит после успешной эксплуатации: атакующий вырывается из sandbox, получает возможность выполнять произвольные команды с рут-привилегиями в процессе Node.js внутри контейнера, читает чувствительные файлы вроде
/etc/passwd, добирается до других сервисов в сети контейнера. И потенциально — выходит за пределы самого Docker-контейнера с дальнейшим повышением привилегий. Об уязвимости сообщают , CERT Coordination Center и SentinelOne. То, что в анализе участвуют сразу три серьёзные организации, говорит о том, что проблему не считают незначительной, хотя сам проект-жертва давно заброшен.
Поскольку Cohere AI больше не занимается Terrarium, ждать официального патча бессмысленно. Тем, кто по какой-то причине продолжает использовать этот инструмент, придётся выстраивать защиту самостоятельно. Сегментация сети снижает риск бокового перемещения после прорыва. Web Application Firewall может поймать подозрительный трафик на подходе. Мониторинг активности контейнера даст шанс заметить что-то неладное до того, как станет совсем плохо. Доступ к контейнеру и его ресурсам стоит жёстко ограничить только авторизованным людям. Инструменты оркестрации контейнеров с нормальными настройками безопасности тоже не лишние. И — обновить все зависимости, которые ещё можно обновить.
История с Terrarium поднимает более широкий вопрос об экосистеме LLM-инструментов. Компании быстро выпускают вспомогательные утилиты для работы с языковыми моделями, эти утилиты набирают аудиторию, а потом разработка останавливается. Люди продолжают использовать их в продакшне, не особо задумываясь о том, когда последний раз кто-то смотрел в этот код. Sandbox для запуска LLM-сгенерированного кода с незакрытой дырой на 9.3 по CVSS — это именно тот сценарий, при котором всё идёт по наихудшему варианту.