Flowise RCE: exploit pubblicato per CVE-2026-40933, CVSS 9.9

Obsidian Security ha pubblicato il codice exploit per CVE-2026-40933 in Flowise: RCE via stdio MCP con CVSS 9.9. Le istanze self-hosted sono a rischio compromi…

Contenuto

Flowise RCE: exploit pubblicato per CVE-2026-40933, CVSS 9.9
Flowise RCE: exploit pubblicato per CVE-2026-40933, CVSS 9.9

Obsidian Security ha reso pubblico il 30 maggio 2026 il codice proof-of-concept per CVE-2026-40933, vulnerabilità di esecuzione remota di codice con punteggio CVSS 9.9 nella piattaforma open-source Flowise. Il vettore di attacco è un file JSON di chatflow condiviso dalla community: al semplice render del canvas, senza necessità di salvataggio o esecuzione manuale, il server esegue comandi arbitrari tramite la funzionalità stdio MCP. Le istanze self-hosted sono esposte a compromissione completa, inclusa lettura di credenziali e accesso ai servizi connessi.

Punti chiave
  • Obsidian Security ha pubblicato codice PoC per CVE-2026-40933 in Flowise, piattaforma LLM workflow con oltre 52.000 stelle GitHub
  • Il vettore è l'importazione di un chatflow malevolo: il render del canvas avvia l'enumerazione tool MCP via stdio, che esegue comandi arbitrari senza sandboxing
  • Flowise Cloud non è affetta (stdio MCP disabilitato); le istanze self-hosted sono vulnerabili di default con privilegi spesso root in deployment containerizzati
  • Il fix ufficiale nella versione 3.1.0 è superabile: Obsidian ha dimostrato bypass in 3.1.2 sostituendo il flag -y con variabile d'ambiente npm_config_yes=true

Come funziona l'attacco: il render del canvas come trigger

La vulnerabilità risiede nella funzionalità Custom MCP Tool di Flowise, che utilizza stdio transport per eseguire comandi come child process. Quando un utente importa un chatflow, il canvas richiede al backend l'enumerazione dei tool esposti dal server MCP configurato. Con stdio transport, questa enumerazione avvia direttamente il comando configurato.

Il meccanismo critico, documentato da Obsidian Security, è che il dropdown di caricamento si attiva al render del canvas, non richiedendo salvataggio o esecuzione esplicita: "the import alone can spawn the command". La serializzazione non sicura dei comandi stdio nell'adattatore MCP permette a un attaccante autenticato di inserire server MCP stdio con comandi arbitrari.

Il PoC pubblicato genera una shell inversa verso l'indirizzo bridge di Docker, dimostrando esecuzione a livello sistema con i privilegi del processo Flowise. Secondo la ricerca di Obsidian, nei deployment containerizzati questi privilegi sono spesso root.

"OS-level execution with the Flowise process's privileges, often root in containerized deployments. Every credential stored in the platform is readable. Every connected service is reachable" — Obsidian Security

La serie di fix parziali e il bypass dimostrato

Flowise ha rilasciato un fix nella versione 3.1.0, come documentato nel record CVE-2026-40933 del National Vulnerability Database: le versioni affette sono quelle precedenti a quella release. Il fix si basa su input validation e allowlist di comandi.

Obsidian Security ha però dimostrato che questo approccio è insufficiente. Testando la versione 3.1.2, i ricercatori hanno aggirato la validazione basata su flag sostituendo -y con la variabile d'ambiente npm_config_yes=true, semanticamente equivalente ma non intercettata dai controlli. Secondo Obsidian: "The current input-validation based fix is easy to circumvent, so the latest version remains affected".

Il dossier non specifica se Flowise abbia successivamente rilasciato un fix definitivo per questo bypass. La data esatta della disclosure iniziale ad aprile 2026 non è documentata con precisione.

Perché stdio MCP è una primitiva di esecuzione trattata come configurazione

L'architettura della vulnerabilità rivela un pattern sistemico nelle piattaforme AI-orchestration: la funzionalità stdio MCP, progettata per accesso locale a tool e servizi, tratta input utente come configurazione trusted di una primitiva di code execution. La mancanza di sandboxing trasforma ogni deployment multi-utente in un contesto dove l'import di un artefatto condiviso dalla community diviene vettore di compromissione server-completa.

Il problema non è tecnicamente un bug di implementazione isolato, ma una discrepanza tra threat model del design e deployment effettivo. Flowise Cloud, che ha stdio MCP disabilitato, non è affetta; le istanze self-hosted lo mantengono abilitato di default. Questa configurazione tipica, combinata con la connessione di Flowise a database, API e account cloud, amplifica il blast radius: "blast radius scales with whatever it connects to", secondo la descrizione di Obsidian.

Cosa fare adesso

Gli operatori di istanze Flowise self-hosted devono considerare le seguenti priorità:

  • Verificare la versione installata: il record NVD indica versioni affette precedenti a 3.1.0, con fix in 3.1.0, ma il bypass dimostrato in 3.1.2 impone cautela su tutte le release fino a eventuale correzione definitiva documentata dal vendor
  • Rivalutare la necessità di stdio MCP in deployment multi-utente: se la funzionalità non è essenziale, la disabilitazione elimina il vettore, replicando la configurazione di Flowise Cloud
  • Isolare l'istanza Flowise in contesto di esecuzione con privilegi minimi, evitando l'esecuzione come root in container o host
  • Controllare i chatflow importati recentemente e limitare l'import da sorgenti non verificate, dato che il solo render del file JSON attiva l'esecuzione

Il contesto: Flowise come bersaglio ricorrente

CVE-2026-40933 non è l'unica vulnerabilità recente nella piattaforma. Fonti di contesto documentano CVE-2025-59528, con exploitation attiva confermata e stime di 12.000-15.000 istanze esposte secondo TheCyberExpress. Tuttavia, quella vulnerabilità ha vettore diverso—JavaScript injection nel nodo CustomMCP—e non va confusa con la stdio MCP di CVE-2026-40933.

Non è confermata exploitation attiva in-the-wild per CVE-2026-40933 al momento della pubblicazione. La pubblicazione del PoC ne abbassa però drasticamente la barriera, trasformando una vulnerabilità tecnicamente complessa in armazzione di massa per attori con capacità di crafting JSON malevolo.

La ricerca di Obsidian Security è pubblicata al dominio obsidiansecurity.com con titolo "When is stdio MCP actually a vulnerability". Il titolo stesso incarna il dilemma centrale: quando una funzionalità di design diventa vulnerabilità sistemica, la risposta non è patching iterativo ma ricalibrazione del threat model fondamentale.

Fonti

Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.

Fonti

Link utili

Apri l'articolo su DeafNews