Una nuova vulnerabilità critica nel framework Python Marimo è già sotto sfruttamento attivo a meno di dieci ore dalla sua divulgazione pubblica. La falla, tracciata come CVE-2026-39987, consente l’esecuzione remota di codice senza bisogno di autenticazione ed è stata valutata da GitHub con un punteggio critico di 9.3 su 10.
Marimo è un ambiente open-source di notebook reattivi in Python, utilizzato principalmente da data scientist, ricercatori in machine learning e sviluppatori che costruiscono dashboard e applicazioni dati. Il progetto ha oltre 20.000 stelle su GitHub e circa 1.000 fork.
Il difetto tecnico
La vulnerabilità risiede nell’endpoint WebSocket /terminal/ws, che espone un terminale interattivo senza applicare alcun controllo di autenticazione. Qualsiasi client, anche non autenticato, può aprire una connessione e ottenere immediatamente una shell interattiva con gli stessi privilegi del processo Marimo.
Sono vulnerabili tutte le versioni fino alla 0.20.4 inclusa, quando Marimo viene eseguito in modalità editor e con l’opzione --host 0.0.0.0, ovvero esposto sulla rete. Gli sviluppatori hanno rilasciato la versione 0.23.0 che corregge il problema.
Sfruttamento in natura
Secondo i ricercatori di Sysdig, che hanno documentato l’intera operazione, nelle prime 12 ore dalla divulgazione 125 indirizzi IP hanno avviato attività di ricognizione. Meno di dieci ore dopo la pubblicazione dell’advisory, è stato osservato il primo tentativo di sfruttamento reale.
L’attaccante ha dimostrato un approccio “hands-on”: dopo aver verificato la vulnerabilità con comandi di base (pwd, whoami, ls), si è concentrato sulla raccolta di credenziali. Ha individuato e letto il file .env estraendo variabili d’ambiente contenenti credenziali cloud e application secret, poi ha cercato chiavi SSH nella directory utente. L’intera fase di acquisizione credenziali è durata meno di tre minuti.
Sysdig descrive l’operatore come “metodico” e orientato a obiettivi di alto valore (token e segreti), senza tentativi di persistenza o installazione di cryptominer. Un attacco rapido e silenzioso, coerente con campagne di credential harvesting per uso successivo.
Cosa fare subito
- Aggiornare immediatamente a Marimo 0.23.0.
- Se l’upgrade non è possibile, bloccare o disabilitare l’accesso all’endpoint
/terminal/ws. - Limitare l’accesso al servizio tramite firewall, evitando l’esposizione pubblica.
- Monitorare le connessioni WebSocket verso l’endpoint vulnerabile.
- Ruotare tutti i segreti esposti: variabili d’ambiente, chiavi API, token, chiavi SSH.
Cosa significa per l’Italia
Marimo è usato in Italia da team di data science in università, centri di ricerca e alcune aziende nel settore fintech e farmaceutico. Qualsiasi istanza esposta su Internet – anche in ambienti di sviluppo o staging – va considerata compromessa fino a prova contraria. Il pattern dell’attaccante suggerisce che il valore primario dell’operazione siano proprio le credenziali cloud dei team di sviluppo, un target che può amplificarsi lateralmente verso ambienti di produzione.
Il caso è anche un promemoria sulla velocità del “patch gap”: dieci ore tra disclosure e sfruttamento sono una finestra strettissima. Per software di nicchia come Marimo, in cui la patch deve essere applicata manualmente da ogni team, la finestra di esposizione reale può estendersi per settimane.
