Entre le 19 et le 20 octobre 2026, NVD a publié six CVE notées 9.8 dans cinq plateformes d'agents IA open source que l'on installe soi-même : Letta, DB-GPT (deux CVE), Langchain-Chatchat, piflow et Cognition. Toutes ont été attribuées par VulnCheck.
Le scénario est le même à chaque fois, et il mérite qu'on s'y arrête : l'agent sait exécuter du code ou des commandes shell, et son API ne demande aucune authentification. Pas besoin de prompt injection subtile : il suffit de demander poliment.
| Projet | CVE | CVSS 3.1 | Classe (CWE) | Bornes |
|---|---|---|---|---|
| Letta | CVE-2026-77936 | 9.8 | Configuration par défaut non sûre (CWE-1188) | jusqu'à 0.16.8 inclus |
| DB-GPT | CVE-2026-77932 | 9.8 | Authentification absente (CWE-306) | jusqu'à 0.8.2 inclus |
| DB-GPT | CVE-2026-77933 | 9.8 | Identifiants codés en dur (CWE-1392) | jusqu'à 0.8.2 inclus |
| Langchain-Chatchat | CVE-2026-75128 | 9.8 | Authentification absente (CWE-306) | jusqu'à 0.3.1.3 inclus |
| piflow | CVE-2026-109442 | 9.8 | Authentification absente (CWE-306) | 2.0.0 à 2.0.1 |
| Cognition | CVE-2026-109437 | 9.8 | Authentification absente + défaut non sûr (CWE-306, CWE-1188) | avant 0.13.0 |
Tous les scores CVSS 3.1 sont publiés par VulnCheck (CNA), avec le vecteur AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. VulnCheck publie aussi un CVSS 4.0 : 9.3 pour toutes, sauf Cognition à 9.2 (AT:P). NVD n'a pas analysé ces entrées : statut Received pour Letta, Langchain-Chatchat et piflow, Deferred pour DB-GPT et Cognition. Aucune n'est au CISA KEV à la date de rédaction.
Letta — CVE-2026-77936
Le compose.yaml livré par Letta n'active pas LETTA_SERVER_SECURE. Conséquence : le middleware de mot de passe n'est jamais ajouté, et toutes les routes de l'API sont ouvertes. Le même fichier expose en plus un port PostgreSQL superutilisateur avec des identifiants par défaut.
D'après la description NVD, un attaquant distant peut alors :
- exécuter du Python arbitraire via
POST /v1/tools/run; - gérer les utilisateurs via
/v1/admin; - lancer des commandes système via
COPY PROGRAMcôté PostgreSQL.
Deux chemins indépendants vers l'exécution de code, donc : l'un par l'API de l'agent, l'autre par la base.
DB-GPT — CVE-2026-77932 et CVE-2026-77933
CVE-2026-77932 : le point de terminaison /api/v1/chat/react-agent s'appuie sur une fonction get_user_from_headers factice qui attribue le rôle admin à tout appelant. Un attaquant non authentifié peut envoyer des prompts qui font exécuter, par les outils code_interpreter et shell_interpreter de l'agent ReAct, du Python ou du bash en root dans le conteneur, sans bac à sable.
CVE-2026-77933 : le docker-compose.yml par défaut fixe un MYSQL_ROOT_PASSWORD statique et publie le port 3306 sur toutes les interfaces. Quiconque atteint ce port, ou le réseau Docker partagé dbgptnet, s'authentifie en root@% avec les privilèges FILE et SUPER.
Les deux se combinent : la description de la première précise que le code exécuté peut atteindre la base embarquée avec ses identifiants par défaut.
Langchain-Chatchat — CVE-2026-75128
POST /tools/call invoque n'importe quel outil enregistré, par son nom, sans authentification. Or un outil shell est toujours enregistré. Une seule requête qui le nomme suffit à exécuter des commandes système avec les droits du serveur — root dans l'image Docker livrée.
C'est la variante la plus directe du lot : il n'y a même pas de LLM dans la boucle.
piflow — CVE-2026-109442
L'agent de chat DeepAgents de piflow expose POST /chat et POST /chat/stream sans authentification. On peut lui demander d'appeler l'outil exec_shell, qui passe la commande à subprocess.run sans validation humaine ni liste blanche. NVD souligne l'exposition des secrets d'environnement : clés d'API LLM et identifiants de base de données.
Cognition — CVE-2026-109437
Cognition utilise par défaut un backend de bac à sable local pour son agent, et son API REST/SSE n'a aucune authentification. POST /sessions crée une session, POST /sessions/{id}/messages y poste un message : la boucle ReAct Deep Agents exécute alors les commandes shell dictées par l'attaquant, avec les droits du processus serveur.
C'est le seul des cinq projets pour lequel les références NVD pointent vers une version publiée : la 0.13.0 (« avant 0.13.0 » dans la description).
Ce que ces six CVE ont en commun
Il y a quelques jours, on décrivait déjà Archon et son API d'agent ouverte à tous. Le motif se répète, et il tient à la façon dont ces projets sont conçus :
- L'outil shell n'est pas un bug, c'est la fonctionnalité. Un agent qui « peut exécuter du code » est exactement ce que l'utilisateur veut — sur son poste. Exposé sur le réseau sans authentification, c'est un shell distant.
- Le
docker-composefait foi. Dans trois cas sur cinq (Letta, DB-GPT, Langchain-Chatchat), la description incrimine directement le fichier de déploiement ou l'image livrée. Beaucoup d'utilisateurs lancentdocker compose uptel quel, puis ouvrent le port pour y accéder depuis un autre poste. - Le conteneur tourne en root (DB-GPT, Langchain-Chatchat) : le conteneur limite un peu les dégâts, mais il contient les clés d'API, les données de l'agent et souvent un accès au réseau interne.
- Les secrets valent cher. Une clé d'API LLM volée se revend ou se consomme directement sur la facture de la victime.
Ce sont des déductions tirées des descriptions NVD, pas des constats d'exploitation : aucune campagne n'est documentée dans les références à ce jour.
Versions et correctifs
- Cognition : NVD référence la version 0.13.0 comme première hors plage. Vérifie dans les notes de version qu'elle change bien le backend par défaut et ajoute l'authentification.
- Letta, DB-GPT, Langchain-Chatchat : NVD indique « jusqu'à et y compris » (0.16.8, 0.8.2, 0.3.1.3) sans version corrigée. Consulte les advisories VulnCheck et les dépôts GitHub cités en références.
- piflow : plage 2.0.0 à 2.0.1, sans version corrigée indiquée.
Ces bornes ne sont pas forcément la version à installer : une nouvelle version peut garder le même compose.yaml par défaut. Vérifie la configuration, pas seulement le numéro.
Détection
- Exposition réseau : ports de ces applications et ports de base (5432, 3306) joignables depuis l'extérieur de l'hôte (
ss -tlnp,docker pspour les ports publiés sur0.0.0.0). - Journaux d'accès : appels à
/v1/tools/run,/v1/admin(Letta),/api/v1/chat/react-agent(DB-GPT),/tools/call(Langchain-Chatchat),/chatet/chat/stream(piflow),/sessions(Cognition) depuis des IP inconnues. - Processus : shells ou interpréteurs lancés par le processus applicatif ;
COPY ... PROGRAMdans les journaux PostgreSQL ; connexionsroot@%sur MySQL. - Facturation LLM : une hausse inexpliquée de consommation sur la clé d'API utilisée par l'agent.
Mitigation
- Ne jamais exposer ces services directement : écoute sur
127.0.0.1, accès via VPN ou reverse proxy avec authentification. - Letta : activer
LETTA_SERVER_SECUREavec un mot de passe fort, retirer la publication du port PostgreSQL et changer ses identifiants. - DB-GPT : changer
MYSQL_ROOT_PASSWORD, ne plus publier le port 3306, et couper l'accès réseau à l'agent ReAct tant qu'aucun correctif n'est disponible. - Langchain-Chatchat, piflow : bloquer
/tools/callet les routes de chat au niveau du proxy, ou désactiver les outils shell si la configuration le permet. - Cognition : passer en 0.13.0 ou au-delà.
- Si l'instance a été exposée : la considérer comme compromise, renouveler toutes les clés d'API LLM et identifiants présents dans l'environnement, et reconstruire les conteneurs.
Sur le même sujet, voir aussi les failles Langflow de juillet.
Pourquoi surveiller en continu vos outils IA auto-hébergés
Ces plateformes s'installent en une commande, souvent hors du radar de l'équipe sécurité, et changent de version chaque semaine. Six CVE critiques en deux jours sur une seule catégorie d'outils : sans inventaire, impossible de savoir si l'une tourne quelque part chez toi.
Avec cveo.tech, ajoute tes outils IA auto-hébergés à ton parc et reçois une alerte dès qu'une CVE critique les touche.