Krytyczna luka RCE w Marimo: ekspluatacja w ciągu 9 godzin bez PoC
Krytyczna luka CVE-2026-39987 (CVSS 9.3) w Marimo do wersji 0.23.0 pozwala uzyskać dostęp root przez WebSocket bez uwierzytelniania. Sysdig zarejestrował pierwszy atak w ciągu 9 godzin i 41 minut od opublikowania zalecenia 8 kwietnia 2026 roku. Atakujący stworzyli ekspluatację na podstawie opisu, bez publicznego PoC, i wyeksfiltrują tajemnice z honeypota w ciągu 3 minut.
Problem tkwi w punkcie końcowym /terminal/ws: brakuje wywołania validate_auth(), w odróżnieniu od /ws. Wystarczy ręczne połączenie WebSocket, by uruchomić PTY-shell z uprawnieniami procesu. W obrazach Dockerowych Marimo domyślnie — dostęp root, a także pliki .env z kluczami OpenAI, Anthropic i Google Gemini.
Szczegóły techniczne luki
Marimo używa WebSocket do trwałych połączeń: /ws do interaktywnego UI i komórek, /terminal/ws do wbudowanego terminala. Drugi punkt końcowy sprawdza tylko flagi trybu terminalowego i wsparcia PTY — bez uwierzytelnienia tokenem sesyjnym.
W środowisku sieciowym te sprawdzenia są automatyczne. Wynik: każdy zdalny klient może się połączyć i uruchomić polecenia z uprawnieniami serwera. GHSA-2679-6MX9-H9XC klasyfikuje to jako CWE-306 (brak uwierzytelniania dla krytycznej funkcji). Poprawka w PR #9098 dodaje validate_auth().
Wdrożenie w Dockerze zwiększa ryzyko: proces działa jako root, a tajemnice znajdują się w .env lub ~/.aws/credentials. Złamanie daje dostęp do rozliczeń LLM, modeli i zbiorów danych.
Chronologia ataku i wskaźniki złośliwości
- 00:00: Publikacja zalecenia.
- 09:41: Pierwsze połączenie z
/terminal/wsw honeypocie Sysdig. - <3 min: Przegląd systemu plików, odczyt
.env, kluczy SSH, konfiguracji chmury. - ~1 godzina: Powrót atakującego do weryfikacji.
Brak minerów lub backdoorów — sygnał operacji celowej prowadzonej przez człowieka. Rejestruj WebSocket w proxy (nginx access.log, Caddy stdout). Podobne: połączenia z /terminal/ws zewnętrznych adresów IP po 8 kwietnia 2026.
Typowe ścieżki poszukiwania tajemnic:
.env~/.ssh/id_rsa,~/.ssh/id_ed25519~/.aws/credentials~/.config/gcloud/~/.bash_history
Wzorzec RCE w narzędziach AI
Marimo (20 tys. gwiazdek na GitHubie) jest popularne w Stanford, Mozilla AI, OpenAI, BlackRock. Wdrożenia: Docker, Hugging Face Spaces, CoreWeave. To trzecia luka RCE w ciągu miesięcy:
- Langflow CVE-2026-33017 — ekspluatacja w ciągu 20 godzin.
- Flowise CVE-2025-59528 (CVSS 10.0) — wykorzystanie nawet po poprawce.
- Marimo CVE-2026-39987.
Narzędzia AI (notebooki, przepływy) często traktowane są jako narzędzia deweloperskie: słaba segmentacja, monitorowanie, nadmiar uprawnień. Realność: dostęp produkcyjny do modeli, danych, rozliczeń.
Ochrona i audyt
Aktualizacja — priorytet:
marimo --version≥ 0.23.0.- Docker: ponowne skompilowanie obrazu z użytkownikiem nie-root.
Zakładając, że port był otwarty po 8 kwietnia:
- Obróć tajemnice: klucze LLM, dane dostępu do chmury, klucze SSH.
- Audyt rozliczeń OpenAI/Anthropic/Google: nieznane żądania.
ss -tlnp | grep LISTEN— sprawdź porty Marimo/Jupyter/Flowise na 0.0.0.0.- Uruchom:
marimo edit --host 127.0.0.1+ reverse-proxy (nginx auth, Caddy OAuth2). - Monitoruj: GitHub Security Advisories, osv.dev, CISA KEV.
Co ważne
- Szybkość ataku: 9 godz. 41 min od zalecenia do RCE — norma przy szczegółowym opisie.
- Domyślne uprawnienia root: Docker Marimo wymaga ręcznej konfiguracji USER.
- Tajemnice w centrum uwagi:
.envz kluczami LLM — główny cel. - Wzorzec AI-RCE: Trzecia luka z rzędu — wymaga podejścia produkcyjnego.
- Wykrywanie: Logowanie
/terminal/wsw proxy, audyt użycia LLM.
— Editorial Team
Brak komentarzy.