Deux avis ont été publiés concernant MetaGPT, l’un des frameworks multi-agent les plus cités, avec 70,148 étoiles sur GitHub. CVE-2026-79408 concerne une injection de commande système via l’argument path de RepoParser.rebuild_class_views() dans metagpt/repo_parser.py. CVE-2026-79407 concerne un traversal de chemin via la valeur FILE_NAME dans metagpt/ext/spo/utils/load.py, permettant la lecture arbitraire de fichiers. Les deux sont signalés pour la version 0.8.1.

Ce qu’implique « affects 0.8.1 », et pourquoi c’est faux ici

Une plage de versions dans un avis signifie normalement qu’une mise à jour existe. Ce n’est pas le cas. Aucun des deux enregistrements ne comporte de champ de version corrigée. Le code vulnérable est toujours dans la branche par défaut : repo_parser.py construit encore f"pyreverse {str(path)} -o dot" et le transmet à subprocess.run(..., shell=True), et load.py concatène encore FILE_NAME à un chemin de configuration sans normalisation. La version 0.8.2, la plus récente, ne corrige rien — elle a été publiée en mars 2025, et le dernier push du dépôt remonte au 21 janvier 2026. Il n’est pas archivé ; il n’évolue simplement plus.

Le problème du scanner

Aucun des deux avis n’affiche de score CVSS, ni de la part de l’éditeur ni de NVD ; la gravité est indiquée comme inconnue. La plupart des scanners de dépendances sont configurés avec un seuil de gravité — élevé et plus, ou moyen et plus. Une entrée sans score ne franchit pas ce seuil. Dans de nombreux pipelines, ces deux cas ne déclencheront rien du tout, ce qui constitue la différence pratique entre une vulnérabilité divulguée et une vulnérabilité visible.

Où se situe le primitive

Le chemin d’injection de commande se trouve dans l’analyse du dépôt — la fonction que l’agent appelle sur une base de code fournie par l’utilisateur. C’est exactement la surface vers laquelle un agent de codage autonome pointe par conception des entrées non fiables.

Le point structurel

Les avis supposent qu’un mainteneur se trouve en face. Lorsqu’un projet largement utilisé cesse d’accepter des commits, la divulgation produit un registre public permanent d’une faille impossible à corriger, et la charge bascule entièrement sur ceux qui l’ont intégré en interne — la plupart ne verront jamais l’alerte.