Агентство по кибербезопасности и защите инфраструктуры США (CISA) добавило в свой каталог известных эксплуатируемых уязвимостей (KEV) очередную критическую брешь. Речь идет об идентификаторе CVE-2026-39987, затрагивающем платформу Marimo - популярный реактивный Python notebook, используемый специалистами по анализу данных и машинному обучению. Уязвимость позволяет злоумышленнику получить полный контроль над сервером без какой-либо аутентификации, и, судя по решению CISA, такие атаки уже происходят в реальных условиях.
Обход аутентификации через терминальный WebSocket
Marimo представляет собой интерактивную среду для работы с кодом на Python, во многом схожую с Jupyter, но с более современным подходом к реактивности и совместной работе. Однако до версии 0.23.0 в нем присутствовала серьезная ошибка проектирования безопасности. Как следует из описания уязвимости, конечная точка "/terminal/ws", предназначенная для работы с терминалом через протокол веб-сокетов (WebSocket), не проверяла подлинность пользователя. В отличие от других эндпоинтов, например "/ws", которые корректно вызывают функцию "validate_auth()", терминальный канал пропускал это требование. Проверялись лишь режим работы платформы и поддержка терминальной сессии, но не то, кто именно подключается.
Это означает, что любой неаутентифицированный посетитель, знающий адрес сервера Marimo, может открыть веб-сокетное соединение к "/terminal/ws" и получить полноценную псевдотерминальную оболочку (PTY). С этого момента атакующий может выполнять произвольные системные команды с теми же привилегиями, что и процесс Marimo. Поскольку платформа обычно запускается с правами пользователя или даже root, последствия могут быть катастрофическими.
Уязвимости присвоен максимально высокий уровень критичности по шкале CVSS версии 4.0 - 9,3 балла. Вектор атаки сетевой (AV:N), сложность низкая (AC:L), не требуется никаких привилегий (PR:N) и взаимодействия с пользователем (UI:N). Атакующему достаточно отправить HTTP-запрос на уязвимый endpoint. Анализ показывает, что воздействие на конфиденциальность, целостность и доступность оценивается как высокое (VC:H, VI:H, VA:H). Это классический пример уязвимости, соответствующей CWE-306 - отсутствие аутентификации для критически важной функции.
Интересно, что проблема была исправлена в версии 0.23.0, выпущенной 9 апреля 2026 года. Однако, учитывая скорость, с которой CISA добавила CVE-2026-39987 в свой каталок, можно предположить, что эксплойты начали распространяться почти сразу после публикации информации об уязвимости. Такая оперативность со стороны агентства служит сигналом для всех организаций, использующих Marimo: промедление с обновлением недопустимо.
В первую очередь под угрозой находятся компании и исследовательские группы, развернувшие Marimo на публично доступных серверах или в корпоративных сетях без достаточной изоляции. Платформа часто используется для построения интерактивных дашбордов, совместной работы с данными и прототипирования моделей машинного обучения. Во многих случаях такие серверы имеют доступ к базам данных, файловым хранилищам и облачным API. Компрометация Marimo через уязвимость CVE-2026-39987 означает, что злоумышленник получает контроль над узлом, с которого может двигаться дальше по внутренней инфраструктуре.
Утечка конфиденциальных данных, внедрение бэкдоров или программ-вымогателей - вот лишь несколько вероятных сценариев. Учитывая, что речь идет о полной PTY-оболочке, атакующий может выполнять не только скрипты Python, но и любые системные утилиты: от "curl" до "ssh". Это делает атаку особенно опасной, поскольку жертва может долгое время не замечать постороннего присутствия, если злоумышленник действует аккуратно.
Разработчики Marimo уже выпустили исправление в версии 0.23.0. Первое и главное, что следует сделать, - обновить платформу до актуальной сборки. Для тех, кто использует Docker-образы, необходимо пересобрать контейнеры с последней версией. Если прямое обновление невозможно по каким-либо причинам, единственной контрмерой становится изоляция сервера: запрет доступа к "/terminal/ws" через фаервол или прокси-сервер либо размещение Marimo во внутренней сети без доступа из интернета.
Кроме того, стоит проверить журналы доступа: любые необычные подключения к конечной точке "/terminal/ws" от неизвестных IP-адресов могут свидетельствовать о попытке эксплуатации уязвимости. Если такие следы обнаружены, необходимо принять меры по расследованию инцидента и смене всех критических паролей и ключей доступа.
Добавление CVE-2026-39987 в каталог CISA подтверждает, что данная уязвимость уже используется в реальных атаках, а значит, угроза не теоретическая, а практическая. Для сообщества специалистов по кибербезопасности это еще одно напоминание о важности принципа наименьших привилегий и строгой проверки аутентификации на всех конечных точках, особенно тех, что предоставляют прямой доступ к системной оболочке. Marimo - пример того, как небольшая, на первый взгляд, недосмотр в коде может привести к катастрофическим последствиям. Организациям, использующим инструменты для совместной работы с кодом, настоятельно рекомендуется внедрить процессы автоматического обновления и регулярно отслеживать уведомления CISA. Только так можно минимизировать риск повторения подобных инцидентов в будущем.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-39987
- https://github.com/marimo-team/marimo/security/advisories/GHSA-2679-6mx9-h9xc
- https://github.com/marimo-team/marimo/pull/9098
- https://github.com/marimo-team/marimo/commit/c24d4806398f30be6b12acd6c60d1d7c68cfd12a
- https://www.cisa.gov/news-events/alerts/2026/04/23/cisa-adds-one-known-exploited-vulnerability-catalog