Критична вразливість CVE-2026-39987 (CVSS 9.3) в інтерактивних ноутбуках Marimo — передавтентифікаційне remote code execution через WebSocket-ендпоінт термінала — внесена до каталогу CISA KEV з кінцевим строком усунення 7 травня 2026 року. За даними Sysdig, кваліфікований оператор-людина, використовуючи власний Python-інструментарій без будь-якого ІІ-агента, пройшов повний ланцюжок від вразливого ноутбука до SSH-бастіона за вісім секунд — швидкість, яку досі дослідники пов’язували виключно з автоматизованими атаками. Вразливість зачіпає версії Marimo нижче 0.23.0; патч доступний. Ми вже писали про вразливості в Marimo раніше.
Технічна суть вразливості
Згідно з бюлетенем безпеки GitHub Advisory, CVE-2026-39987 класифікується як CWE-306 — відсутність автентифікації для критичної функції. Ендпоінт /terminal/ws в Marimo приймає WebSocket-з’єднання без перевірки автентичності, надаючи неавтентифікованому зловмиснику повноцінну інтерактивну оболонку (PTY) та можливість довільного виконання команд.
Варто зазначити розбіжність у даних щодо вразливих версій: поле пакета в бюлетені GitHub вказує версії нижче 0.23.0 як уразливі, тоді як детальний розділ того ж документа називає Marimo ≤ 0.20.4. Версія 0.23.0 вказана як виправлена.
Анатомія атаки: дев’ять годин, 850 команд, нуль публічних інструментів
За даними Sysdig (через їхнє дослідження), ланцюжок атаки розгорнувся так:
- 18:57:22 — встановлено WebSocket-з’єднання з уразливим ендпоінтом
- 18:57:26 — витягнуто облікові дані AWS із сховища застосунку
- 18:57:30 — SSH-автентифікація на бастіон-хості з використанням закритого ключа з AWS Secrets Manager
Вісім секунд від першого підключення до повного контролю над бастіоном. Як повідомляє Sysdig, оператор використав єдиний фоновий виклик Python3, який в одному скрипті витягував облікові дані, отримував SSH-ключ із Secrets Manager, записував його на диск і автентифікувався на бастіоні.
За дев’ятигодинну сесію (з 12:52 до 21:50) зловмисник виконав понад 850 інтерактивних команд, не застосувавши жодного відомого публічного наступального інструменту. Усі скрипти були написані та налагоджені вручну прямо в сесії. Sysdig особливо підкреслює: оператор обійшов пастку, в яку потрапляв кожен профільований ними автономний ІІ-агент під час атаки на ту саму вразливість.
Джерело початкового підключення — IP-адреса 172.236.12[.]17. У ході сесії зловмисник розгорнув listener у стилі asyncssh на власному VPS.
Контекст: ІІ пришвидшує атаки, але не замінює майстерність
Цей інцидент ілюструє важливий тез: хоча ІІ-інструменти скорочують час від виявлення вразливості до її експлуатації та знижують поріг входу для менш кваліфікованих зловмисників, досвідчені оператори здатні діяти на тій самій швидкості без автоматизації — і водночас ефективніше обходити захисні механізми. Як зазначає Sysdig, ІІ змінює економіку атак (більше цілей, швидша експлуатація, менше рутини), але поки що не замінив кваліфікованого зловмисника, який уміє створювати інструменти з нуля та уникати пасток.
Паралельні кампанії: Redis і Dahua
Криптомайнінг через Redis
Паралельно з подіями навколо Marimo, Hunt.io розкрила кампанію криптомайнінгу, в ході якої були скомпрометовані 3 562 сервери Redis зі списку в 12 966 хостів, виявлених скануванням порту 6379. Серед попередньо відібраних серверів без автентифікації (2 342 хости) рівень компрометації досяг 72,6%.
Жертви працювали на Redis версій від 2.8.17 (2015) до 7.2.0 (2023) і Linux від застарілих RHEL/CentOS 6 до актуальних ядер Ubuntu. Hunt.io зазначає, що причиною масової компрометації стала відсутність автентифікації, а не вразливість конкретної версії Redis.
Основний метод — команда SLAVEOF для підміни реплікації (rogue replication), через яку на цільовий сервер доставлявся майнер XMRig. Із чотирьох випробуваних технік лише реплікація спрацювала в масштабі: ін’єкція SSH-ключів через AOF і спроби виходу з пісочниці MongoDB не дали результатів у 2 810 спробах. Ланцюжок компрометації WordPress було виявлено, але не підтверджено в масштабі. Кампанію не атрибутовано жодній відомій групі.
Індикатори компрометації з дослідження: IP-адреси 47.250.92[.]230, 34.166.99[.]116, 20.198.10[.]42, 188.245.99[.]156; домен pool.moneroocean[.]stream.
Operation CameraSwarm
За даними індексу блогу Hunt.io, у межах операції Operation CameraSwarm за 35 днів були скомпрометовані понад 14 530 IP-камер Dahua на території України та Росії. Атака використовувала brute force і вразливості обходу автентифікації CVE-2021-33044 та CVE-2021-33045 (обидві — CVSS 9.8, CWE-287), а також техніку P2P-ретрансляції. Обидві вразливості Dahua внесені до каталогу CISA KEV із серпня 2024 року.
Оцінка впливу
Найбільшому ризику від CVE-2026-39987 піддаються організації, які використовують Marimo для інтерактивних обчислень у хмарних середовищах, особливо за наявності доступу до AWS Secrets Manager з того самого інстанса. Ланцюжок «WebSocket → облікові дані → SSH-бастіон» демонструє, як єдина вразливість в інструменті для роботи з даними може призвести до повної компрометації хмарної інфраструктури.
Кампанія проти Redis підкреслює масштаб проблеми відкритих баз даних без автентифікації: 72,6% незахищених серверів були скомпрометовані.
Рекомендації
- Marimo: негайно оновіть до версії 0.23.0 або вище. Якщо оновлення неможливе — заблокуйте доступ до ендпоінта
/terminal/wsна рівні мережевого контролю - AWS: проведіть аудит інстансів, на яких працює Marimo, на предмет доступу до Secrets Manager. Ротуйте SSH-ключі та облікові дані AWS, що зберігаються в Secrets Manager, якщо інстанс був доступний ззовні
- Redis: увімкніть автентифікацію (
requirepass), обмежте мережевий доступ до порту 6379, вимкніть командуSLAVEOFчерезrename-command - Dahua: оновіть прошивку пристроїв до версій, що усувають CVE-2021-33044 і CVE-2021-33045, змініть стандартні облікові дані
- Перевірте наявність зазначених IOC у мережевих логах
Інцидент з Marimo — наочна демонстрація того, що стратегії захисту, розраховані на виявлення автоматизованих атак, є недостатніми: кваліфікований оператор здатен пройти шлях від вразливості до повного контролю за секунди, використовуючи лише власний код і уникаючи типових індикаторів. Пріоритет — оновлення Marimo до 0.23.0 та аудит ланцюжка доступу від обчислювальних ноутбуків до секретів хмарної інфраструктури.