// 1 CVE · 1 EXPLOIT NELLE ULTIME 24H
La vulnerabilità ZDI-26-365 nel componente CSV Agent di FlowiseAI permette esecuzione remota di codice Python. La patch introduce validazione sintattica

Il 24 giugno 2026 TrendAI ha reso pubblico l'advisory ZDI-26-365 su una vulnerabilità nel componente CSV Agent di FlowiseAI, piattaforma low-code per orchestrazione di workflow con modelli linguistici. La falla, scoperta il 24 febbraio 2026 da Nicholas Zubrisky di TrendAI Research, permette esecuzione remota di codice Python arbitrario attraverso il parametro customReadCSV, con autenticazione bypassabile. L'incidente mette in luce un pattern ricorrente nelle piattaforme AI: l'astrazione che semplifica l'uso di LLM nasconde l'esecuzione non sicura di codice dinamico.

Punti chiave
  • La vulnerabilità ZDI-26-365 consente RCE nel metodo run della classe CSV_Agents di FlowiseAI tramite iniezione nel parametro customReadCSV
  • L'autenticazione è richiesta ma il meccanismo esistente è bypassabile, riducendo la barriera di attacco
  • La patch rilasciata da FlowiseAI introduce la funzione validatePythonCodeForDataFrame per sanificare l'input Python
  • Il messaggio di errore della patch restringe esplicitamente le operazioni consentite a "safe pandas read_csv operations"

Il meccanismo: da wrapper CSV a exec arbitrario

Il componente CSV Agent di FlowiseAI elabora file CSV eseguendo codice Python dinamico. Secondo l'advisory ZDI-26-365, "the specific flaw exists within the run method of the CSV_Agents class. The issue results from the lack of proper validation of a user-supplied string before using it to execute Python code". Il parametro customReadCSV permette agli utenti di fornire una stringa personalizzata che viene inserita direttamente nell'esecuzione Python senza sanificazione sufficiente.

Il commit di patch su GitHub, identificato dalla pull request #5836, conferma l'architettura del fix. Il codice aggiunge const csvReadValidation = validatePythonCodeForDataFrame(customReadCSVFunc) con un blocco condizionale che blocca l'esecuzione se la validazione fallisce. Il messaggio di rifiuto è esplicito: "Custom read_csv code was rejected for security reasons. Please use only safe pandas read_csv operations".

Autenticazione bypassabile: il doppio binario della sicurezza

L'advisory specifica che "authentication is required to exploit this vulnerability, the existing authentication mechanism can be bypassed". Questa configurazione crea una condizione di rischio particolare: l'autenticazione è presente formalmente ma inefficace operativamente. Il dossier non dettaglia la tecnica esatta del bypass, limitando la capacità di valutare la complessità dell'attacco.

Il contesto operativo amplifica il problema. FlowiseAI viene spesso distribuito con accesso a API key, connessioni database e filesystem aziendali. L'esecuzione di codice nel contesto dell'account di servizio, come documentato dall'advisory, apre a esfiltrazione dati, movimento laterale e compromissione dell'infrastruttura orchestrata.

La patch e i suoi limiti: validazione sintattica vs hardening architetturale

Il fix di FlowiseAI si concentra sulla validazione del codice Python prima dell'esecuzione. La funzione validatePythonCodeForDataFrame rappresenta un approccio di sanificazione sintattica: analizza il codice fornito dall'utente e lo blocca se contiene costrutti non considerati sicuri per operazioni pandas read_csv. Tuttavia, il diff parziale disponibile non permette di valutare la completezza di questa funzione né la sua resilienza contro evasioni.

Nel medesimo commit compare anche una modifica a secureAxiosRequest per gestire status code non-2xx, suggerendo che la revisione di sicurezza ha toccato più componenti del sistema di comunicazione. Il dossier non specifica se questa modifica sia correlata direttamente alla vulnerabilità o rappresenti un intervento parallelo.

"This vulnerability allows remote attackers to execute arbitrary code on affected installations of Flowise. Although authentication is required to exploit this vulnerability, the existing authentication mechanism can be bypassed." — ZDI Advisory ZDI-26-365

Cosa fare adesso

Le organizzazioni che utilizzano FlowiseAI devono verificare la presenza della patch #5836 nel proprio ambiente. Il commit 0c8236ac su GitHub contiene la funzione validatePythonCodeForDataFrame e il blocco di validazione su customReadCSVFunc: assicurarsi che il codice sorgente includa questi elementi.

Controllare manualmente la configurazione del parametro customReadCSV in tutti i workflow CSV Agent attivi. Se il campo è popolato con codice personalizzato, verificarne la provenienza e rimuovere eventuali input non attendibili in attesa della conferma di patch.

Monitorare i log di esecuzione per messaggi di errore contenenti "Custom read_csv code was rejected for security reasons": la loro assenza indica che la validazione non è attiva o che il codice malevolo è passato indenne.

Valutare la segmentazione di rete delle installazioni FlowiseAI. L'advisory conferma esecuzione nel contesto dell'account di servizio: isolare l'istanza da database sensibili, API esterne e filesystem condivisi riduce l'impatto di un eventuale exploit.

Perché è importante

Il caso ZDI-26-365 illustra una tensione strutturale nelle piattaforme AI low-code: l'astrazione che rende accessibili capacità avanzate occulta i rischi di esecuzione codice dinamico. Gli utenti configurano workflow visivi senza percepire che parametri come customReadCSV si traducono in esecuzione Python nel runtime sottostante.

La validazione introdotta da FlowiseAI risolve il vettore immediato ma non affronta l'architettura sottostante. Il dossier non documenta se la piattaforma abbia isolato l'esecuzione Python in sandbox con privilegi ridotti, se abbia implementato controllo di integrità sui flussi, o se l'autenticazione sia stata rinforzata indipendentemente dalla sanificazione del codice.

Versioni specifiche affette non sono elencate nell'advisory, impedendo alle organizzazioni di determinare rapidamente se le proprie installazioni siano vulnerabili. Il CVE non risulta assegnato nel dossier, limitando la tracciabilità nei sistemi di gestione vulnerabilità standard.

L'angolo di lettura: quando il low-code diviene opaco

L'adozione accelerata di piattaforme come FlowiseAI in contesti enterprise richiede una rivalutazione dei modelli di rischio. L'orchestrazione visiva di LLM, database e servizi esterni concentra privilegi significativi in interfacce apparentemente innocue. La vulnerabilità nel CSV Agent dimostra che ogni nodo di un workflow può nascondere superfici di esecuzione arbitraria.

La risposta della comunità open source — patch con validazione sintattica — rappresente la pratica standard ma non elimina la classe di rischio. Finché le piattaforme AI eseguiranno codice dinamico su dati potenzialmente ostili, la combinazione di autenticazione debole e parametri utente non sanificati costituirà un vettore sistemico. Il caso sollecita verifiche indipendenti sulla robustezza di validatePythonCodeForDataFrame e sulla sua resistenza a tecniche di evasione non ancora testate pubblicamente.

Domande frequenti

Cosa rende questa vulnerabilità rilevante per ambienti enterprise?

FlowiseAI viene spesso integrato con database aziendali, API esterne e servizi cloud. L'esecuzione remota di codice nel contesto del servizio espone direttamente queste connessioni, con potenziale impatto su riservatezza, integrità e disponibilità dei dati orchestrati.

Perché l'assenza del CVE è significativa?

Senza identificatore CVE, i sistemi automatici di gestione vulnerabilità non rilevano ZDI-26-365 nelle scansioni standard. Le organizzazioni devono intervenire manualmente, con ritardo nella classificazione e nella prioritizzazione delle azioni correttive.

La patch garantisce protezione completa?

Il dossier non documenta test di sicurezza indipendenti sulla funzione validatePythonCodeForDataFrame né la completezza della sua logica di filtraggio. La protezione dipende dalla sua implementazione effettiva, non ancora verificata pubblicamente.

Fonti

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

Fonti


Fonti e riferimenti
  1. zerodayinitiative.com
  2. github.com