CVE-2026-39987 в Marimo: критическая Pre-Auth RCE эксплуатировалась менее чем через 10 часов после раскрытия

Прослушать статью

Уязвимость CVSS 9.3 позволяет выполнять удалённый код без аутентификации на доступных извне серверах Marimo и была быстро использована в реальной среде, утверждает Sysdig

Критическая уязвимость удалённого выполнения кода до аутентификации в Marimo, open-source платформе Python notebook, принадлежащей AI cloud-компании CoreWeave, была использована в реальных атаках менее чем через 10 часов после публичного раскрытия, сообщили в Sysdig Threat Research Team.

Уязвимость, отслеживаемая как CVE-2026-39987 и получившая оценку 9,3 из 10 по шкале критичности, затрагивает все версии Marimo до 0.23.0.

Для эксплуатации не нужны вход в систему, похищенные учётные данные или сложный эксплойт. Злоумышленнику достаточно отправить один запрос соединения на конкретную конечную точку на доступном извне сервере Marimo, чтобы получить полный контроль над системой, написали исследователи Sysdig в блоге.

Уязвимость позволяет неаутентифицированному атакующему получить полноценную интерактивную оболочку и выполнять произвольные системные команды на любом доступном экземпляре Marimo через одно соединение, без каких-либо учётных данных, говорится в публикации.

«В Marimo есть уязвимость Pre-Auth RCE», — написала команда Marimo в своём GitHub security advisory. «Конечная точка Terminal WebSocket /terminal/ws не выполняет проверку аутентификации, что позволяет неаутентифицированному атакующему получить полноценную PTY-оболочку и выполнять произвольные системные команды».

Marimo — это реактивный notebook на Python, у которого около 20 000 звёзд на GitHub; CoreWeave приобрела проект в октябре 2025 года.

Как работает уязвимость

Сервер Marimo включает встроенную terminal-функцию, которая позволяет выполнять команды прямо из браузера. Этот terminal был доступен по сети без какой-либо проверки аутентификации, тогда как другие части того же сервера корректно требовали входа перед подключением, говорится в публикации.

«Конечная точка terminal полностью пропускает эту проверку, принимая соединения от любого неаутентифицированного пользователя и предоставляя полноценную интерактивную оболочку, работающую с правами процесса Marimo», — добавили авторы.

На практике любой, кто мог достучаться до сервера через интернет, мог сразу попасть в живую командную оболочку, часто с правами уровня администратора, ни разу не вводя пароль, заявили в Sysdig.

Учётные данные были похищены менее чем за три минуты

Чтобы отследить реальную эксплуатацию, исследователи развернули honeypot-серверы с уязвимыми экземплярами Marimo у нескольких облачных провайдеров и увидели первую попытку эксплуатации через 9 часов и 41 минуту после раскрытия. На тот момент готового инструмента для атаки не существовало. Нападавший собрал его сам, опираясь только на описание в advisory, написали исследователи Sysdig.

Атакующий действовал поэтапно в ходе четырёх сессий. Короткая первая сессия подтвердила, что уязвимость действительно эксплуатируема. Во второй сессии он вручную просматривал файловую систему сервера. К третьей сессии атакующий нашёл и прочитал environment-файл, содержащий AWS access keys и другие учётные данные приложения. Вся операция заняла меньше трёх минут, говорится в публикации.

«Это полная операция по краже учётных данных, выполненная менее чем за 3 минуты», — написала команда Sysdig.

Затем атакующий вернулся более чем через час, чтобы повторно проверить те же файлы. Такое поведение соответствовало действиям человека, который вручную проходит список целей, а не автоматического сканера, говорится в публикации.

Часть более широкой тенденции

Темп эксплуатации согласуется с тенденцией, наблюдаемой в AI и open-source tooling. Ранее в этом году критическая уязвимость в Langflow была превращена в оружие через 20 часов после раскрытия; её также отслеживала Sysdig. В случае Marimo этот промежуток сократился примерно вдвое, при том что на тот момент публичного эксплойт-кода ещё не было в обращении.

«Нишевое или менее популярное ПО — не значит более безопасное ПО», — говорится в посте Sysdig. Любое интернет-доступное приложение с опубликованным критическим advisory становится целью в течение нескольких часов после раскрытия, независимо от размера своей инсталляционной базы, добавили исследователи.

В случае Marimo на момент первой атаки ещё не был присвоен номер CVE, а значит, организации, полагающиеся на сканирование по CVE, вообще не выделили бы это предупреждение, отметили в Sysdig.

Уязвимость также укладывается в шаблон критических RCE-уязвимостей в смежных с AI инструментах для разработчиков — включая MLflow, n8n и Langflow, — где функции выполнения кода, созданные для удобства, становятся опасными при публикации в интернет без последовательного контроля аутентификации.

Что следует сделать организациям

Marimo выпустила исправленную версию 0.23.0, которая закрывает пробел в аутентификации в terminal endpoint. Организациям, использующим любую более раннюю версию, следует немедленно обновиться, заявили в Sysdig.

Командам, которые не могут обновиться сразу, следует заблокировать внешний доступ к серверам Marimo с помощью правил межсетевого экрана или поместить их за аутентифицированный proxy, говорится в публикации. Любой экземпляр, который был доступен извне, следует считать потенциально скомпрометированным.

«Учётные данные, хранившиеся на этих серверах, включая cloud access keys и API tokens, следует сменить в качестве меры предосторожности», — рекомендовали в Sysdig.

CoreWeave на запрос о комментарии оперативно не ответила.

Материал первоначально опубликован в CSO.


Материал — перевод статьи с английского.

Оригинал: Critical flaw in Marimo Python notebook exploited within 10 hours of disclosure