Stampa

LangChain Core sotto attacco: CVE-2025-68664 ruba segreti e manipola LLM via prompt injection

Una vulnerabilità critica in LangChain Core sta mettendo in allerta chi sviluppa applicazioni basate su modelli linguistici di grandi dimensioni. Il problema riguarda langchain-core, pacchetto Python centrale dell’ecosistema LangChain, e consente a un attaccante di sottrarre segreti e influenzare le risposte di un LLM tramite tecniche di prompt injection. La falla è tracciata come CVE-2025-68664 con punteggio CVSS 9.3, quindi ad alta priorità per qualsiasi team DevSecOps che utilizza pipeline di orchestrazione LLM.

Il cuore dell’attacco è una serialization injection nelle funzioni dumps e dumpd. In pratica queste funzioni non gestiscono correttamente i dizionari che contengono la chiave lc, un marcatore usato internamente da LangChain per identificare oggetti serializzati. Se dati controllati dall’utente includono una struttura con lc, durante la deserializzazione possono essere interpretati come oggetti LangChain legittimi invece che come semplici dati. Questo apre percorsi pericolosi in cui un contenuto malevolo viene ricostruito come oggetto e può attivare comportamenti inattesi.

Gli impatti possibili includono l’estrazione di segreti da variabili di ambiente quando la deserializzazione avviene con secrets_from_env impostato a true, opzione che in precedenza risultava abilitata di default. Inoltre è possibile istanziare classi dentro namespace considerati affidabili come langchain_core, langchain e langchain_community. In alcuni scenari viene citata anche la possibilità di arrivare a esecuzione di codice sfruttando template Jinja2, un punto delicato quando i template vengono popolati con input non fidato.

Un aspetto particolarmente rilevante per la sicurezza AI è che il bug di escaping facilita l’iniezione di strutture oggetto LangChain attraverso campi controllabili indirettamente, ad esempio metadata, additional_kwargs o response_metadata. In contesti di streaming o catene che serializzano e deserializzano output del modello, l’output LLM diventa di fatto un input non fidato e può trasformarsi nel vettore di attacco.

Patch e mitigazioni

Le patch introducono default più restrittivi in load e loads tramite un parametro allowlist chiamato allowed_objects, che permette di specificare quali classi sono ammesse in serializzazione e deserializzazione. Inoltre i template Jinja2 risultano bloccati di default e secrets_from_env viene impostato a false per prevenire il caricamento automatico di segreti dall’ambiente.

Versioni impattate

Le versioni vulnerabili includono langchain-core dalla 1.0.0 alla 1.2.4 e le versioni precedenti alla 0.3.81, con fix rispettivamente in 1.2.5 e 0.3.81. Esiste anche una falla simile in LangChain.js identificata come CVE-2025-68665, legata allo stesso problema della chiave lc.

Penetration testing cyber , prompt injection , langchain core , vulnerabilita critica , serialization injection , segreti ambiente