Krytyczna luka RCE w Marimo aktywnie wykorzystywana po ujawnieniu szczegółów - Security Bez Tabu

Krytyczna luka RCE w Marimo aktywnie wykorzystywana po ujawnieniu szczegółów

Cybersecurity news

Wprowadzenie do problemu / definicja

W projekcie Marimo, otwartoźródłowym środowisku reaktywnych notatników Python, ujawniono krytyczną podatność typu pre-auth remote code execution. Oznacza to możliwość zdalnego wykonania poleceń bez wcześniejszego uwierzytelnienia, jeśli instancja została wystawiona w podatnej konfiguracji. Problem dotyczy szczególnie środowisk używanych do analiz danych, prac badawczych oraz budowy aplikacji i dashboardów opartych o Python.

W skrócie

Luka oznaczona jako CVE-2026-39987 dotyczy wersji Marimo 0.20.4 i starszych. Podatność wynika z niewłaściwej kontroli dostępu do endpointu WebSocket odpowiedzialnego za terminal. W praktyce atakujący może uzyskać interaktywną powłokę działającą z uprawnieniami procesu Marimo, a następnie wykonać rozpoznanie hosta, odczytać pliki konfiguracyjne oraz pozyskać sekrety, takie jak zmienne środowiskowe, poświadczenia chmurowe czy klucze SSH.

  • Podatność ma charakter pre-auth RCE.
  • Dotyczy środowisk Marimo wystawionych w podatnej konfiguracji.
  • Szczególnie narażone są instancje działające w trybie edycji i dostępne z sieci współdzielonej lub Internetu.
  • Po publicznym ujawnieniu szczegółów technicznych bardzo szybko pojawiły się próby wykorzystania luki.

Kontekst / historia

Marimo jest wykorzystywane przez data scientistów, inżynierów ML/AI, badaczy i programistów tworzących aplikacje analityczne. Takie środowiska często mają dostęp do wrażliwych danych, repozytoriów kodu, usług chmurowych oraz sekretów aplikacyjnych, co znacząco podnosi potencjalny wpływ skutecznego ataku.

Podatność została opublikowana 8 kwietnia 2026 roku jako krytyczny problem bezpieczeństwa związany z obejściem uwierzytelniania w terminalu WebSocket. Następnie przygotowano poprawkę w wydaniu 0.23.0. Ryzyko nie rozkłada się jednak równomiernie na wszystkie instalacje — najwyższe pozostaje tam, gdzie usługa działała w trybie edycji i była dostępna z zewnątrz, na przykład przez nasłuch na 0.0.0.0.

Analiza techniczna

Źródłem problemu jest endpoint /terminal/ws, który udostępnia interaktywny terminal przez WebSocket. W podatnych wersjach brakowało skutecznego mechanizmu autoryzacji połączeń przychodzących, co umożliwiało zestawienie sesji przez nieuwierzytelnionego klienta. W efekcie atakujący nie musiał przejmować sesji użytkownika ani omijać dodatkowych warstw logowania.

Po uzyskaniu dostępu do terminala napastnik działa z uprawnieniami procesu Marimo. To kluczowy aspekt techniczny, ponieważ skala skutków zależy od przywilejów samej usługi, dostępnych wolumenów, montowań, zmiennych środowiskowych oraz połączeń z usługami zewnętrznymi. W praktyce obserwowany łańcuch eksploatacji obejmuje potwierdzenie możliwości wykonywania poleceń, rozpoznanie systemu i przejście do pozyskiwania sekretów.

Szczególnie atrakcyjnym celem są pliki .env, które często zawierają tokeny API, dane dostępowe do baz danych, poświadczenia do usług chmurowych, klucze aplikacyjne oraz informacje używane przez pipeline’y CI/CD. Dodatkowym etapem może być sprawdzanie katalogów i plików związanych z SSH, co sugeruje próbę rozszerzenia dostępu poza pojedynczą instancję aplikacji.

Technicznie nie jest to więc wyłącznie lokalna wada komponentu terminalowego, ale podatność umożliwiająca bezpośredni pivot do warstwy sekretów i infrastruktury. Jeśli usługa została uruchomiona w kontenerze z nadmiernymi uprawnieniami, z zamontowanym katalogiem domowym użytkownika lub z szerokim dostępem sieciowym, skutki mogą szybko objąć kolejne systemy.

Konsekwencje / ryzyko

Najpoważniejszym ryzykiem jest kradzież poświadczeń i danych wrażliwych. W środowiskach data science i AI może to oznaczać przejęcie dostępu do zasobów obliczeniowych, magazynów danych, modeli, eksperymentów, rejestrów obrazów kontenerowych czy usług chmurowych. Nawet jednorazowe pozyskanie sekretów może umożliwić późniejszy, trudniejszy do wykrycia atak na inne elementy ekosystemu.

Drugą istotną konsekwencją jest możliwość wykonania dowolnych poleceń systemowych. Otwiera to drogę do odczytu lub modyfikacji danych, pobrania narzędzi post-exploitation, ruchu bocznego w sieci oraz zwiększenia wpływu operacyjnego. Szczególnie niebezpieczne są środowiska developerskie i badawcze, gdzie zwykle występuje słabsza segmentacja oraz większe nagromadzenie sekretów niż w klasycznych systemach produkcyjnych.

Poziom ryzyka należy ocenić jako wysoki także dlatego, że próby wykorzystania luki pojawiły się bardzo szybko po publicznym ujawnieniu szczegółów technicznych. To kolejny przykład, że okno czasowe między disclosure a aktywną eksploatacją jest zbyt krótkie, by polegać wyłącznie na standardowym cyklu aktualizacji.

Rekomendacje

Podstawowym działaniem powinno być niezwłoczne przejście do wersji Marimo 0.23.0 lub nowszej. Jeśli aktualizacja nie jest możliwa od razu, należy zablokować albo całkowicie wyłączyć dostęp do endpointu /terminal/ws oraz ograniczyć ekspozycję instancji na poziomie zapory sieciowej, reverse proxy i reguł dostępu.

  • Zweryfikować, które instancje Marimo działały w trybie edycji i nasłuchiwały na interfejsach dostępnych z zewnątrz.
  • Przeanalizować logi połączeń WebSocket pod kątem żądań do /terminal/ws.
  • Sprawdzić historię działań na hostach, w tym odczyty plików .env, katalogów domowych i lokalizacji związanych z SSH.
  • Zrotować wszystkie sekrety, które mogły znajdować się w zmiennych środowiskowych, plikach konfiguracyjnych lub katalogach roboczych.
  • Przeprowadzić przegląd uprawnień procesu aplikacji i ograniczyć je zgodnie z zasadą najmniejszych uprawnień.
  • Odseparować środowiska notebookowe od zasobów produkcyjnych oraz ograniczyć ich łączność wychodzącą i dostęp do metadanych chmurowych.
  • Upewnić się, że środowiska kontenerowe nie działają z nadmiernymi uprawnieniami roota, capability ani z szerokimi montowaniami wolumenów.

Podsumowanie

CVE-2026-39987 pokazuje, jak pozornie pomocnicza funkcja — terminal udostępniany przez WebSocket — może stać się bezpośrednim wektorem zdalnego wykonania kodu bez uwierzytelnienia. W praktyce zagrożenie nie kończy się na uruchomieniu komend na pojedynczym hoście, lecz obejmuje także możliwość szybkiego przejęcia sekretów i rozszerzenia kompromitacji na inne systemy. Dla zespołów bezpieczeństwa priorytetem powinny być aktualizacja, ograniczenie ekspozycji sieciowej, monitoring endpointu terminalowego oraz rotacja potencjalnie ujawnionych poświadczeń.

Źródła

  1. Critical Marimo pre-auth RCE flaw now under active exploitation — https://www.bleepingcomputer.com/news/security/critical-marimo-pre-auth-rce-flaw-now-under-active-exploitation/
  2. Pre-Auth Remote Code Execution via Terminal WebSocket Authentication Bypass — https://github.com/marimo-team/marimo/security/advisories
  3. Release 0.23.0 · marimo-team/marimo — https://github.com/marimo-team/marimo/releases/tag/0.23.0