Aller au contenu
Blog

EvoScientist · OpenSRE · Vibe-Trading

Agents IA : la validation humaine contournée dans EvoScientist, OpenSRE et Vibe-Trading (CVE-2026-77930, 109444, 114108)

CVE-2026-77930, 109444 et 114108 : trois agents IA exécutent des commandes shell sans validation ni authentification. Mécanisme, versions et mitigation.

5 min de lectureCVE-2026-77930CVE-2026-109444CVE-2026-114108

Les 20 et 21 octobre 2026, NVD a publié trois CVE notées 9.8 dans des agents IA open source : EvoScientist, OpenSRE et Vibe-Trading (HKUDS). Toutes trois ont été attribuées par VulnCheck.

Il y a deux jours, on parlait de cinq plateformes d'agents dont l'API était ouverte à tous. Ce lot-ci est plus instructif : dans deux cas sur trois, l'API n'a pas besoin d'être exposée. C'est le garde-fou censé demander ton accord avant chaque commande qui ne fait pas son travail, et le contenu que l'agent lit suffit à le piloter.

ProjetCVECVSS 3.1Classe (CWE)Bornes
EvoScientistCVE-2026-779309.8Autorisation absente (CWE-862)0.1.0 à avant 0.2.5
OpenSRECVE-2026-1094449.8Autorisation absente (CWE-862)jusqu'à 0.1.2026.10.19 inclus
Vibe-Trading (HKUDS)CVE-2026-1141089.8Authentification absente (CWE-306)0.1.0 à avant 0.1.7

Les trois 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, et VulnCheck donne 9.3 en CVSS 4.0 pour chacune. NVD ne les a pas analysées : statut Deferred pour les trois. Aucune n'est au CISA KEV à la date de rédaction.


EvoScientist — CVE-2026-77930

EvoScientist demande une validation humaine avant d'exécuter une commande shell. Sauf que cette validation (le paramètre interrupt_on) n'est pas appliquée aux sous-agents asynchrones.

D'après la description NVD, un attaquant n'a qu'à placer des instructions dans du contenu que l'agent ingère, une page web récupérée par exemple. L'agent appelle alors start_async_task, délègue la commande à un sous-agent, et celle-ci s'exécute avec les privilèges de l'utilisateur et les secrets de son environnement, sans que la demande de confirmation n'apparaisse jamais.

La référence NVD pointe vers la version 0.2.5, première hors plage, et vers le commit correctif.

OpenSRE — CVE-2026-109444

OpenSRE est un agent qui trie des alertes d'exploitation. En mode sans interface (headless), la fonction execution_allowed() du présentateur renvoie toujours True : l'outil shell_run s'exécute sans confirmation.

Le vecteur d'attaque décrit par NVD est parlant : il suffit d'injecter des instructions dans une alerte ou un message Slack que l'agent va trier. Il exécute les commandes sur l'hôte et peut exfiltrer les identifiants LLM, Slack et cloud. Pour un outil de SRE, branché par construction sur la supervision et les comptes cloud, c'est le pire scénario.

NVD indique « jusqu'à 0.1.2026.10.19 inclus » sans version corrigée.

Vibe-Trading — CVE-2026-114108

Ici, pas besoin d'injection. La fonction require_auth() de l'API FastAPI sort immédiatement si API_AUTH_KEY n'est pas définie : sans cette variable, toute l'API est ouverte. Un attaquant non authentifié peut alors :

  • poster des messages sur /sessions/{id}/messages pour faire exécuter des commandes shell en root via l'outil BashTool ;
  • déposer des fichiers .py ou .sh via /upload ;
  • lire l'historique des sessions et récupérer des clés d'API partielles.

La première version hors plage est la 0.1.7 d'après la description.


Ce que ce lot apprend

  1. Une validation humaine n'est un contrôle que si elle couvre tous les chemins. Chez EvoScientist, le chemin asynchrone y échappe ; chez OpenSRE, un mode d'exécution la neutralise. Un contrôle qui dépend du mode ou du chemin d'appel est un contrôle à tester, pas à supposer.
  2. Tout contenu lu par l'agent est une entrée de l'attaquant. Une page web, une alerte, un message Slack : si l'agent les lit et peut agir, l'auteur de ce contenu peut agir aussi. C'est la prompt injection indirecte, et elle n'a pas besoin d'un port ouvert.
  3. « Sécurisé si configuré » veut dire ouvert par défaut. Le cas Vibe-Trading reprend le motif déjà vu chez Letta ou Cognition : l'authentification dépend d'une variable que personne n'a pensé à remplir.

Ce sont des déductions tirées des descriptions NVD : aucune exploitation n'est documentée dans les références à ce jour.


Versions

  • EvoScientist : passe en 0.2.5 ou au-delà (version référencée par NVD).
  • Vibe-Trading : passe en 0.1.7 ou au-delà, et définis quand même API_AUTH_KEY.
  • OpenSRE : aucune version corrigée indiquée par NVD. Consulte le dépôt Tracer-Cloud/opensre et l'advisory VulnCheck cités en références.

Ces bornes viennent de la description NVD : ce sont des bornes, pas forcément la version à installer. Vérifie les notes de version.


Détection

  • Inventaire : ces outils s'installent souvent sur un poste de développeur ou une VM de test. Cherche les processus Python evoscientist, opensre, et les API FastAPI de Vibe-Trading.
  • Vibe-Trading : appels à /sessions/*/messages ou /upload depuis des IP inconnues ; variable API_AUTH_KEY absente de l'environnement.
  • OpenSRE : commandes shell lancées par le processus de l'agent qui ne correspondent à aucune action de triage attendue ; alertes ou messages Slack contenant des instructions en langage naturel adressées à l'agent.
  • EvoScientist : appels à start_async_task dans les journaux de l'agent après la lecture d'une page web.
  • Facturation LLM et cloud : consommation inhabituelle sur les clés présentes dans l'environnement.

Mitigation

  1. Mets à jour EvoScientist et Vibe-Trading dans les versions indiquées ci-dessus.
  2. OpenSRE : n'utilise pas le mode headless avec l'outil shell_run actif tant qu'aucun correctif n'est publié, et limite les sources (canaux Slack, alertes) que l'agent traite.
  3. Fais tourner les agents avec le minimum de secrets : pas d'identifiants cloud administrateur dans leur environnement, des clés d'API LLM dédiées et plafonnées.
  4. Isole l'exécution : conteneur sans privilèges, sans accès au réseau interne, plutôt que l'hôte ou le poste du développeur.
  5. Si un agent a lu du contenu non maîtrisé avec une version vulnérable : considère ses secrets comme exposés et renouvelle-les.

Pourquoi surveiller en continu vos agents IA

Ces projets sortent une version par semaine et s'installent en dehors de tout processus de validation. Trois CVE critiques en deux jours, dont une sans aucune version corrigée : sans inventaire, impossible de savoir lesquels tournent chez toi et avec quels secrets.

Avec cveo.tech, ajoute tes outils IA à ton parc et reçois une alerte dès qu'une CVE critique les touche.

Chaque lundi

Les CVE critiques de la semaine, dans votre boîte mail

Un email par semaine : les vulnérabilités CVSS ≥ 9 publiées ces sept derniers jours, et nos dernières analyses. Rien d'autre.

Double confirmation par email. Désinscription en un clic, à tout moment.

Surveillez votre propre parc

Recherche CVE, inventaire de parc et alertes email, gratuitement.