Критическая уязвимость в фреймворке Marimo позволяет удаленно выполнять команды без аутентификации

marimo

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

Детали уязвимости

По данным исследователей компании Resecurity, проблема получила идентификатор CVE-2026-39987. Она скрывается в конечной точке WebSocket-протокола (протокол двусторонней связи между клиентом и сервером) под адресом "/terminal/ws". Разработчики Marimo не предусмотрели здесь никакой проверки подлинности. Проще говоря, любой, кто может достучаться до этого интерфейса, получает прямой доступ к командной строке операционной системы. Вместо того чтобы запросить логин и пароль, сервер сразу же запускает псевдотерминал (PTY) - виртуальный терминал, который даёт полный доступ к системной оболочке.

Корень проблемы кроется в пропущенном контроле доступа при обработке WebSocket-соединения. В отличие от других защищённых интерфейсов, этот просто принимает запрос и разворачивает интерактивную среду командной строки. Таким образом атакующий получает возможность удалённо выполнять произвольные команды (так называемый RCE - удалённое выполнение кода) ещё до этапа аутентификации. Это критически опасно, потому что Marimo широко применяется в сферах науки о данных, прототипирования моделей искусственного интеллекта и внутренней аналитики. В таких средах почти всегда хранятся ключи API, учётные данные к базам данных и облачным сервисам, а сами контейнеры часто запускаются с повышенными привилегиями - иногда даже от имени root.

Если злоумышленник успешно эксплуатирует эту уязвимость, он может не только взломать одно приложение, но и получить полный доступ ко всей инфраструктуре. Компрометация одной точки способна привести к утечке чувствительной информации, остановке производственных процессов и серьёзным финансовым потерям. Причём атака может быть проведена минимальными усилиями: достаточно простого WebSocket-клиента и знания адреса цели.

На практике атакующие уже начали использовать эту лазейку для развёртывания вредоносного ПО NKAbuse. Свои полезные нагрузки (payload) они размещают на платформе Hugging Face Spaces, что делает их легко доступными. Схема атаки выглядит следующим образом: злоумышленник подключается к адресу "ws://цель:2718/terminal/ws", не вводя никаких паролей. Затем отправляет команду вроде "id" или "whoami" и сразу получает ответ. После этого он может выполнить любую другую команду, полностью завладев системой. Например, простой скрипт на Python из нескольких строк способен скомпрометировать уязвимый узел за секунды.

Это означает, что уязвимость затрагивает все развёртывания Marimo до версии 0.23.0 включительно. В более старых сборках конечная точка "/terminal/ws" остаётся открытой для всех. Наибольшему риску подвергаются инстансы, которые выставлены в интернет и доступны из ненадёжных сетей. Особенно опасны ситуации, когда Marimo запущен в контейнере или облаке с привилегиями root и находится рядом с другими чувствительными сервисами - например, с платформами искусственного интеллекта, обратными прокси или файлами ".env", содержащими секреты. В таких случаях радиус поражения (blast radius) от одной успешной атаки многократно возрастает.

Прежде всего, необходимо срочно обновить Marimo до версии 0.23.0 или новее. Этот релиз добавляет обязательную аутентификацию для конечной точки терминала, полностью устраняя уязвимость. Если обновление невозможно провести немедленно, следует ограничить доступ к Marimo только доверенными сетями: поместить экземпляры за VPN, в частные подсети или за аутентифицирующие обратные прокси. Категорически не следует оставлять интерфейсы редактирования и особенно конечные точки терминала открытыми для интернета.

Кроме того, командам безопасности стоит строго соблюдать принцип минимальных привилегий: не запускать Marimo от root и давать контейнерам только необходимые права. Рекомендуется перевыпустить все учётные данные, которые могли быть скомпрометированы, а также настроить мониторинг на подозрительные WebSocket-соединения и активность в оболочке, особенно на пути "/terminal/ws". Важно своевременно выявлять попытки закрепления в системе (persistence) и бокового перемещения (lateral movement) на потенциально скомпрометированных хостах.

Эта история в очередной раз напоминает, что даже самые удобные инструменты для разработки и анализа данных могут содержать опасные дефекты, если не уделять должного внимания безопасности доступа. Для специалистов по информационной безопасности сейчас главное - быстро закрыть уязвимость и проверить инфраструктуру на признаки атак. Игнорировать эту угрозу нельзя, ведь злоумышленники уже взяли её на вооружение.

Ссылки

Комментарии: 0