
Доказательство концепции для CVE-2026-39987
Отказ от ответственности Этот скрипт предназначен ТОЛЬКО для образовательных целей и авторизованного тестирования. Несанкционированное использование этого инструмента против систем без явного разрешения ПРОТИВОЗАКОННО. Автор не несёт ответственности за любое злоупотребление этой информацией.
Версии Marimo до 0.23.0 содержат критическую уязвимость удалённого выполнения команд (RCE) без предварительной аутентификации. Эндпоинт /terminal/ws не реализует надлежащий контроль доступа, что позволяет неаутентифицированному злоумышленнику получить полный интерактивный доступ к оболочке системы.
| Детали | Информация |
|---|
| CVE | CVE-2026-39987 |
| Серьёзность | КРИТИЧЕСКИЙ |
| Оценка CVSS | 9.3 (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H) |
| Тип | Удалённое выполнение кода без предварительной аутентификации (RCE) |
| Вектор | WebSocket (/terminal/ws) |
| Затронутый продукт | Marimo < 0.23.0 |
| Патч | Marimo ≥ 0.23.0 |
http.favicon.hash:-1864630356
services.http.response.favicons.hashes: -1864630356
-1864630356/api/version# install uv (skip if already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
uv pip install -r requirements.txt
uv run poc.py -t <target_url>
-t, --target_url (обязательно): WebSocket URI эндпоинта /terminal/ws целевой системы.uv run poc.py -t wss://<target-host>/terminal/ws
После подключения вы получаете интерактивный «сырой» pty-сеанс. Доступны дополнительные локальные команды (никогда не отправляются в удалённую оболочку как введённые):
| Команда | Описание |
|---|---|
.upload | Открывает локальный запрос на указание локального пути к файлу и удалённого назначения, затем отправляет файл. |
!upload <local_path> <remote_path> | То же, что выше, одной строкой. |
!download <remote_path> <local_path> | Забирает файл с целевой системы на ваш локальный компьютер. |
/exit, /bye | Завершает сеанс локально. |
Нажмите Ctrl+C для прерывания/выхода.
>= 0.23.0, где исправлен отсутствующий контроль доступа на /terminal/ws.localhost или внутреннему интерфейсу и поместите перед ним VPN/bastion для удалённого доступа./terminal/ws и другими маршрутами API./terminal/ws и неаутентифицированную активность оболочки в журналах сервера; приведённые выше Shodan/Censys dork-запросы также можно использовать в защитных целях для поиска ваших собственных открытых незапатченных экземпляров.