Tre ore dopo che un altro picco di CVE aveva colpito i server MCP, un secondo rilascio di massa ha raggiunto lo stack degli agenti AI. Sei CVE, tutti assegnati da [email protected], pubblicati tra 20:17:41.107 e 20:17:41.843 UTC — uno scarto di 0,74 secondi — e tutti riconducibili al sito di disclosure di un ricercatore. Prendono di mira Agno, LiteLLM, gpt-researcher, crewai-tools e PentestGPT.

Quello che conta

CVE-2026-37004: "BerriAI litellm <=1.82.4 is vulnerable to Server-Side Template Injection (SSTI), which allows unauthenticated remote attackers to execute arbitrary OS commands via a crafted dotprompt_content parameter in the /prompts/test endpoint due to use of an unsandboxed jinja2.Environment." LiteLLM è un proxy che migliaia di team eseguono davanti ai propri modelli.

La correzione è reale ed è presente nel codice attuale: prompt_manager.py ora importa ImmutableSandboxedEnvironment con il commento in linea "Sandboxed env: templates can come from user input via /prompts/test." Risale al commit d910a956, datato 9 aprile 2026, il cui titolo è "fix(proxy): improve input validation on management endpoints." Il diff sostituisce Environment( con ImmutableSandboxedEnvironment(. Non c'è stato alcun advisory, alcun CVE e in nessun punto di quel subject di commit compare un riferimento a template injection o remote code execution. La versione 1.82.4 è stata pubblicata su PyPI il 18 marzo; la versione attuale è la 1.98.0.

Dove sbaglia la cornice comune

La formula citabile è "RCE non autenticata in LiteLLM, divulgata il 27 agosto." La data che conta è 9 aprile. Per 140 giorni, chiunque leggesse il changelog di LiteLLM per decidere se aggiornare non aveva alcun elemento utile — la più grave correzione di sicurezza della release era descritta nel registro come una pulizia di lint.

La voce su Agno fallisce nella direzione opposta. È depositata contro un comportamento documentato, intenzionale e ancora in distribuzione. "Fino e incluso 2.5.8" implica un 2.5.9 corretto; non esiste. runpy.run_path(...) e exec(code, self.safe_globals, self.safe_locals) sono oggi in main, attraverso un salto di major version fino alla 3.0.1, sotto l'avviso runtime della libreria: "PythonTools can run arbitrary code, please provide human supervision." Uno strumento il cui scopo è eseguire Python scritto dal modello non è un'RCE non patchata, e il tetto di versione crea una correzione che non esiste.

Sei disclosure, zero severità

Il blocco metrics su tutte e sei è vuoto. Nessun CVSS da MITRE, nessuno dal ricercatore, nessuno da NVD. Un'RCE non autenticata in un proxy ampiamente distribuito e una credenziale di telemetria hardcoded in PentestGPT finiscono formalmente nel database come equivalenti, e gli scanner a valle finiranno per ignorarle o inventare un punteggio. Due voci indicano anche una release candidate<= 1.10.2rc1 — come soglia interessata, a fronte di crewai-tools 1.15.18 attuale, su cui nessun risolutore di dipendenze può intervenire.