Le typosquatting mise sur les fautes de frappe et les confusions : une lettre manquante, un I majuscule au lieu d’un l minuscule, un trait d’union en moins. Le schéma est ancien — crossenv volait des variables d’environnement en 2017, jeIlyfish des clés SSH et GPG en 2019 —, mais il est aujourd’hui exploité à l’échelle industrielle : Check Point a recensé en 2024 plus de 500 paquets PyPI malveillants en deux vagues, et Microsoft a documenté le 28 mai 2026 14 paquets npm publiés par un même acteur en quatre heures, qui ciblaient des identifiants AWS, des jetons Vault, le contexte de GitHub Actions et des jetons npm.
Slopsquatting et agents de codage : sécuriser la chaîne d’approvisionnement logicielle IA
Les modèles d’IA suggèrent des paquets qui n’existent pas — et des attaquants peuvent enregistrer précisément ces noms. Les agents de codage dotés d’un accès au terminal installent ce qu’ils jugent bon. Ce dossier relie typosquatting et slopsquatting dans npm et PyPI à un modèle de sécurité pour les agents de codage et leur harness : chaîne d’attaque, cinq couches de protection, obligations au titre du CRA, de NIS2 et de DORA, autoévaluation et livre blanc CISO (en allemand).
Mise à jour: octobre 2026 · Valeri Milke, Lead Auditor ISO 27001 & ISO 42001
Vous recevez le lien de téléchargement immédiatement sur la page et par e-mail.
agent · ~/portail-clients — dependency gate actif
PromptTéléchargez le modèle depuis Hugging Face en ligne de commande.
AgentPour cela, j’installe le paquet CLI adéquat :
$pip install huggingface-cli
Dependency gate · Politique
- ✕Doc. de l’éditeurInstallation officielle : huggingface_hub[cli] — le nom diffère
- ✕ConnuNom halluciné à plusieurs reprises — expérience de Bar Lanyado (Lasso Security)
- ✕Liste d’autorisationNon autorisé
BLOQUÉ · Écart par rapport à la doc. de l’éditeur — ticket d’approbation transmis à l’AppSec
Reconstitué d’après l’expérience documentée de Bar Lanyado (Lasso Security, 2024).
PromptDéfinissez les variables d’environnement dans les scripts npm de manière multiplateforme.
AgentJ’ajoute la dépendance adéquate :
$npm install crossenv
Dependency gate · Politique
- ✕NomVariante de cross-env par le séparateur
- ✕HistoriqueTyposquat connu : supprimé en 2017, volait des variables d’environnement
- ✓Scripts d’installationDésactivés dans le build — aucun code exécuté à l’installation
- ✕Liste d’autorisationNon autorisé
BLOQUÉ · Suspicion de typosquat — cross-env était visé
Cas historique de l’écosystème npm (2017).
PromptValidez les saisies du formulaire avec un schéma.
AgentJ’utilise la bibliothèque autorisée, en version fixe :
$npm install zod --save-exact
Dependency gate · Politique
- ✓Liste d’autorisationAutorisé, responsable : équipe plateforme
- ✓Âge de la versionVersion plus ancienne que le délai de carence de 7 jours
- ✓Scripts d’installationDésactivés (allowScripts)
- ✓LockfileVersion épinglée, hash d’intégrité vérifié
AUTORISÉ · La modification apparaît dans la pull request pour approbation
- 19,7 % de références de paquets inventées par 16 modèles de code
- 30 000+ téléchargements d’un paquet factice vide (selon Lasso)
- 237+ dépôts contenant une commande npx hallucinée
19,7 %des références de paquets de 16 modèles de code étaient inventées — 440 445 sur 2,23 millions (USENIX Security 2025)
43 %des noms inventés revenaient à chacune de dix répétitions — prévisible signifie enregistrable
24 CVEdans des IDE IA et des agents de codage, issues d’une seule série de recherches (IDEsaster, décembre 2025)
11/09/2026Depuis cette date, les obligations de signalement du CRA s’appliquent — la diligence pour les composants incombe au fabricant intégrateur
En juin 2024, des chercheurs réunis autour de Joseph Spracklen (University of Texas at San Antonio) ont montré que 16 modèles de code avaient inventé, dans 576 000 exemples de code, 19,7 % de leurs références de paquets — 205 474 noms uniques qui n’existaient ni dans npm ni dans PyPI. 43 % d’entre eux réapparaissaient à chacune de dix répétitions. Qui enregistre de tels noms n’a plus besoin de fautes de frappe : depuis 2025, cela s’appelle le slopsquatting. Parallèlement, le paysage des outils a basculé — de l’assistant qui suggère à l’agent qui installe dans le terminal, appelle des serveurs MCP et charge des skills. HiddenLayer considère donc le harness, et non le modèle, comme la véritable surface d’attaque et organise la défense en cinq couches : visibilité, contrôle, validation, surveillance et gouvernance. ThreatLocker complète le volet paquets : vérifier les noms, piloter les dépendances au moyen de listes d’autorisation, désactiver les scripts d’installation, tenir les secrets à l’écart des chemins de build, Zero Trust à l’exécution. Un test pratique d’octobre 2026 le montre : les outils actuels inventent encore des paquets — rarement, mais de manière reproductible. Cette page en fait un programme : la chaîne d’attaque montre où vos contrôles agissent. La carte du harness situe dix relations de confiance d’un agent de codage, avec des cas documentés. La vérification du nom de paquet contrôle les suggestions localement dans le navigateur. La matrice des obligations établit la correspondance avec le CRA, NIS2, DORA, l’AI Act et la responsabilité du fait des produits. L’autoévaluation mesure votre niveau de maturité — et le livre blanc CISO fournit feuille de route, configuration de référence, modèle de politique et catalogue d’audit.
De la faute de frappe au paquet inventé
Jalons du typosquatting, des hallucinations de paquets et des attaques contre les agents de codage — jusqu’aux obligations qui s’appliquent aujourd’hui.
1er août 2017
crossenv : typosquatting dans npm
Un paquet nommé crossenv imite cross-env et envoie les variables d’environnement à un serveur tiers. npm supprime une quarantaine de paquets du même acteur.
1er décembre 2019
jeIlyfish sur PyPI
Un I majuscule au lieu d’un l minuscule : la copie de jellyfish vole des clés SSH et GPG depuis décembre 2018, avant d’être signalée et supprimée.
28 mars 2024
huggingface-cli et plus de 500 typosquats
Bar Lanyado (Lasso Security) publie son expérience avec un paquet vide sous un nom halluciné — plus de 30 000 téléchargements en trois mois selon Lasso. Le même jour, Check Point signale plus de 500 typosquats malveillants sur PyPI.
12 juin 2024
L’étude sur les hallucinations
Spracklen et al. publient leur analyse : 16 modèles de code, 576 000 exemples de code, 19,7 % de références de paquets hallucinées. Les travaux paraissent en 2025 à l’USENIX Security.
8 avril 2025
Le terme slopsquatting
Andrew Nesbitt définit le slopsquatting comme la variante IA du typosquatting et attribue le terme à Seth Larson, de la Python Software Foundation.
26 août 2025
s1ngularity : les CLI d’IA comme outil
Des versions compromises de Nx appellent les interfaces en ligne de commande d’IA installées localement pour rechercher des secrets. GitGuardian recense 2 349 secrets exfiltrés.
15 septembre 2025
Shai-Hulud
Un ver npm autoréplicatif compromet plus de 500 paquets au moyen de jetons volés. Une deuxième vague suit en novembre.
21 janvier 2026
react-codeshift
Aikido découvre une commande npx hallucinée dans des skills d’agent générés par IA, diffusée dans plus de 237 dépôts, et enregistre le nom à titre défensif.
10 mars 2026
L’ENISA cite le slopsquatting
La Technical Advisory for Secure Use of Package Managers mentionne expressément le slopsquatting comme nouveau vecteur d’attaque du développement assisté par IA.
28 juillet 2026
Cinq couches pour le harness
HiddenLayer publie son modèle de sécurité pour les agents de codage : visibilité, contrôle, validation, surveillance, gouvernance. La veille, la Commission a précisé dans ses lignes directrices sur le CRA que la diligence incombe au fabricant intégrateur.
11 septembre 2026
Les obligations de signalement du CRA s’appliquent
Les fabricants signalent les vulnérabilités activement exploitées via la plateforme unique de signalement (Single Reporting Platform) de l’ENISA : alerte précoce sous 24 heures, notification sous 72 heures, rapport final au plus tard 14 jours après la mise à disposition d’une mesure corrective.
6 octobre 2026
Test pratique avec trois outils
Un développeur teste 30 tâches npm avec trois outils de codage IA : six noms de paquets inventés, dont deux chez plusieurs outils. Un échantillon — mais un signal clair.
Neuf messages clés sur le slopsquatting et les agents de codage
Résumé de chaque message clé — dépliez pour les détails, chiffres et sources.
Dans le slopsquatting, un modèle de langage invente un nom de paquet et un attaquant l’enregistre. Il n’est plus nécessaire d’imiter un paquet réel. La plupart des noms inventés ne sont pas des fautes de frappe : dans l’étude de Spracklen et al., seuls 13,4 % des noms Python hallucinés se trouvaient à deux caractères au plus d’un paquet réel — la détection classique du typosquatting est donc inopérante. Le terme est attribué à Seth Larson (Python Software Foundation) ; Andrew Nesbitt l’a popularisé le 8 avril 2025.
Les hallucinations ne sont pas du bruit : sur dix répétitions de la même requête, 43 % des noms inventés revenaient à chaque fois, 58 % plus d’une fois. Certes, 81 % des noms ne provenaient que d’un seul modèle — mais une prépublication de 2026 (non évaluée par les pairs) a relevé 127 noms inventés à l’identique par cinq modèles actuels ; 53 d’entre eux pouvaient encore être enregistrés. Qui collecte ces noms connaît les cibles avant qu’une victime ne les saisisse.
OWASP LLM09: Unsafe Code Generation →À ce jour, aucun cas publiquement documenté n’est connu dans lequel un attaquant aurait enregistré à des fins malveillantes un nom dont l’hallucination est avérée, et où des victimes l’auraient installé à la suite d’une suggestion d’IA. Il est en revanche établi que de tels noms sont installés : un paquet factice vide publié sous le nom halluciné huggingface-cli a été téléchargé plus de 30 000 fois en trois mois selon Lasso Security ; une commande npx hallucinée dans des skills d’agent générés par IA s’est propagée en 2026 dans plus de 237 dépôts. Ce n’est pas un signal de fin d’alerte, mais une fenêtre de temps.
Un nom erroné ne devient dangereux que lorsque du code s’exécute. Les scripts de cycle de vie npm, le code de build des paquets source Python et les fichiers .pth exécutent du code, souvent sans qu’un humain ne regarde. Le ver npm Shai-Hulud s’est propagé en 2025 à plus de 500 paquets parce que des jetons volés permettaient de nouvelles publications. Depuis le 8 juillet 2026, npm v12 désactive par défaut les scripts d’installation des dépendances — le code exécuté à l’import n’est pas concerné.
Un agent de codage se compose d’un modèle et d’un harness : fichiers de règles, entrées, terminal, serveurs MCP, skills, gestionnaires de paquets, secrets, dépôt et réseau. Les attaques documentées visent presque toujours le harness — caractères Unicode cachés dans des fichiers de règles, descriptions d’outils empoisonnées, configurations MCP remplacées, une injection qui active le mode d’approbation automatique (CVE-2025-53773). La série de recherches IDEsaster a mis au jour plus de 30 vulnérabilités, dont 24 CVE, dans des IDE IA.
La sécurité MCP en détail →HiddenLayer organise la défense en cinq couches : visibilité sur chaque relation de confiance, contrôle des droits et des approbations, validation avant d’accorder sa confiance, surveillance en dehors du modèle et gouvernance avec des responsables et une réponse aux incidents. L’essentiel : les modèles de langage suivent des instructions — ils n’appliquent pas de politique de sécurité. Des règles dans le prompt réduisent le risque, mais ne remplacent pas un contrôle.
Contrôle à l’exécution avec l’Agent Control Standard →La revue, les scans et les règles des agents sont des obstacles : ils n’agissent que si quelqu’un remarque l’erreur. Les points de rupture interrompent l’attaque indépendamment de cela — un proxy de registre avec liste d’autorisation, des scripts d’installation désactivés, des agents sans accès aux secrets de l’hôte, un contrôle des flux sortants. Un délai de carence de quelques jours intercepte les paquets fraîchement enregistrés, mais pas les noms qu’un attaquant occupe depuis longtemps. L’objectif : au moins trois points de rupture indépendants.
En vertu de l’art. 13, par. 5, du CRA, les fabricants doivent faire preuve de la diligence requise lorsqu’ils intègrent des composants de tiers — expressément aussi open source ; l’obligation s’applique à partir du 11 décembre 2027, les obligations de signalement de l’art. 14 depuis le 11 septembre 2026 déjà. Selon les lignes directrices de la Commission du 27 juillet 2026, ni les dépôts de paquets ni les développeurs individuels n’ont d’obligations au titre du CRA. NIS2 (§ 30 BSIG, loi allemande sur le BSI) exige la sécurité de la chaîne d’approvisionnement et du développement, DORA l’analyse et le test du code open source avant la mise en production, dans la mesure du possible.
Vers le dossier CRA →Interactif · Chaîne d’attaque
Où votre chaîne se rompt-elle ? Sept étapes, du nom de paquet inventé à la propagation
Une attaque par slopsquatting ou par typosquatting a besoin de chacune des étapes. Activez des contrôles et observez à quelle étape l’attaque s’arrête — et si vous ne disposez que d’un seul point de rupture ou d’une défense en profondeur. L’affectation des contrôles aux étapes est une appréciation de VamiSec fondée sur les sources citées.
Situation de départ
Obstacles seulementDes obstacles, oui ; un point de rupture, non
Vos contrôles compliquent certaines étapes, mais n’arrêtent pas l’attaque de manière sûre. La revue, les scans et les règles dans le prompt supposent qu’un humain ou un modèle remarque l’erreur.
- Points de rupture
- 0 / 7
- Premier point de rupture
- —
- Étapes avec obstacles seulement
- 3
- Contrôles actifs
- 3 / 16
Activer des contrôles
Visibilité
Contrôle
Validation
Surveillance
Gouvernance
interrompt l’étape complique l’étape
Étape 01 / 07
Un modèle suggère un nom de paquet qui n’existe pas — ou un humain fait une faute de frappe
Les modèles de code ajoutent des dépendances qui semblent plausibles mais n’ont jamais été publiées. Le typosquatting, lui, mise sur les fautes de frappe et les confusions avec des noms connus. Dans les deux cas, tout commence avant même qu’un gestionnaire de paquets ne s’exécute.
PreuveDans l’étude de Spracklen et al. (USENIX Security 2025), 19,7 % des paquets suggérés par 16 modèles de code n’existaient pas.
Ce qui agit à cette étape — un clic active ou désactive
Les instructions dans AGENTS.md ou dans des fichiers de règles réduisent le taux d’erreur, mais ne constituent pas un contrôle : le modèle peut les ignorer, et des attaquants peuvent les manipuler.
Guide OpenSSF pour les assistants de code (août 2025)Mesure à quelle fréquence vos outils inventent des paquets ou suggèrent des commandes dangereuses dans votre stack — et si vos contrôles fonctionnent.
HiddenLayer · Validation
Un attaquant enregistre le nom dans npm ou PyPI
Les hallucinations récurrentes sont prévisibles. Qui les collecte occupe précisément ces noms — avec une description plausible, un README copié et un script d’installation. Pour le typosquatting, des variantes de noms populaires suffisent.
PreuveFin 2023, Bar Lanyado a publié à titre de test un paquet vide sous un nom halluciné à plusieurs reprises — selon Lasso Security, il a été téléchargé plus de 30 000 fois en trois mois.
Ce qui agit à cette étape — un clic active ou désactive
Vous n’avez aucune influence sur cette étape : l’enregistrement d’un nom a lieu dans le registre public. Les étapes qui la précèdent et qui la suivent n’en sont que plus importantes.
Le nom se retrouve dans le code, le manifeste ou la commande d’installation
Par du code copié, l’autocomplétion, un agent qui installe lui-même un module manquant, ou une documentation qui propage le mauvais nom. C’est au plus tard ici qu’un second regard est utile.
PreuveL’étude a relevé des noms hallucinés qui réapparaissaient sans cesse lors de requêtes répétées — ils n’arrivent donc pas dans le code par hasard, mais de manière reproductible.
Ce qui agit à cette étape — un clic active ou désactive
Sans inventaire, vous ne savez pas quels agents travaillent dans quels dépôts et avec quels droits — aucun autre contrôle ne peut alors être imposé de manière généralisée.
HiddenLayer · VisibilitéLes instructions dans AGENTS.md ou dans des fichiers de règles réduisent le taux d’erreur, mais ne constituent pas un contrôle : le modèle peut les ignorer, et des attaquants peuvent les manipuler.
Guide OpenSSF pour les assistants de code (août 2025)Mesure à quelle fréquence vos outils inventent des paquets ou suggèrent des commandes dangereuses dans votre stack — et si vos contrôles fonctionnent.
HiddenLayer · ValidationL’agent peut suggérer des paquets, mais pas les installer lui-même. N’est efficace que si la personne qui approuve vérifie réellement le nom.
HiddenLayer · ContrôleLes nouveaux paquets et les modifications du lockfile deviennent visibles et nécessitent une approbation nominative avant le merge.
ThreatLocker 2026 ; NIS2, art. 21(2)(e)
Le gestionnaire de paquets résout le nom et télécharge le paquet
Sans liste d’autorisation, proxy interne ni âge minimal des versions, npm ou pip récupère ce qui figure dans le registre — y compris un paquet créé il y a deux jours. C’est ici que se situe le point de rupture le plus fort contre le slopsquatting.
PreuveUn proxy avec liste d’autorisation ne connaît tout simplement pas un nom inventé — l’installation échoue.
Ce qui agit à cette étape — un clic active ou désactive
Les builds et les agents ne téléchargent que via un proxy qui ne délivre que des paquets autorisés. Un nom inventé n’y existe pas.
NIS2, art. 21(2)(d)Les nouveaux paquets et les modifications du lockfile deviennent visibles et nécessitent une approbation nominative avant le merge.
ThreatLocker 2026 ; NIS2, art. 21(2)(e)Les squats fraîchement enregistrés sont souvent découverts et supprimés en quelques jours. Un délai de carence les intercepte — mais pas les noms qu’un attaquant occupe depuis plus longtemps.
Fonction du gestionnaire de paquets, p. ex. pnpm minimumReleaseAgenpm ci, --frozen-lockfile ou --require-hashes empêchent qu’un build résolve silencieusement d’autres paquets. Les nouvelles dépendances, en revanche, sont ajoutées délibérément.
ThreatLocker 2026Détecte les paquets malveillants connus et les schémas suspects, comme les scripts d’installation avec accès réseau — mais pas de manière fiable les squats nouveaux et inconnus.
ThreatLocker 2026
Les scripts d’installation ou le code d’import s’exécutent avec les droits du développeur, de l’agent ou du build
Les scripts de cycle de vie npm (preinstall, install, postinstall) et le code de build des paquets source Python s’exécutent automatiquement lors de l’installation. Avec des agents de codage disposant d’un accès au terminal, personne ne regarde souvent.
PreuveSelon Microsoft, un seul acteur a publié en 2026 14 paquets npm malveillants en quatre heures ; leurs hooks d’installation s’exécutaient automatiquement.
Ce qui agit à cette étape — un clic active ou désactive
Interrompt la voie d’exécution la plus fréquente des paquets npm malveillants. Le code qui ne s’exécute qu’à l’import subsiste — d’où la nécessité d’isoler en plus.
npm ignore-scripts ; ThreatLocker 2026Détecte les paquets malveillants connus et les schémas suspects, comme les scripts d’installation avec accès réseau — mais pas de manière fiable les squats nouveaux et inconnus.
ThreatLocker 2026Empêche les scripts d’installation de lancer des programmes inconnus et limite ce à quoi les gestionnaires de paquets et les environnements d’exécution peuvent accéder.
ThreatLocker 2026 · Zero Trust à l’exécutionConteneur, devcontainer ou VM sans identifiants montés : même si du code malveillant s’exécute, il ne trouve rien qui vaille la peine d’être volé.
HiddenLayer · Contrôle ; OWASP ASI05Détecte les accès aux fichiers d’identifiants, les processus inattendus et les destinations réseau inhabituelles — en dehors du modèle, qui n’applique lui-même aucune politique de sécurité.
HiddenLayer · Surveillance
Le code malveillant accède aux secrets
Identifiants cloud, jetons Vault, jetons de publication npm, clés SSH, contexte des jobs CI — tout ce qui est accessible sur la machine, dans le conteneur ou dans le build.
PreuveLes paquets décrits par Microsoft ciblaient des identifiants AWS, des jetons HashiCorp Vault, le contexte de GitHub Actions et des jetons de publication npm.
Ce qui agit à cette étape — un clic active ou désactive
Conteneur, devcontainer ou VM sans identifiants montés : même si du code malveillant s’exécute, il ne trouve rien qui vaille la peine d’être volé.
HiddenLayer · Contrôle ; OWASP ASI05Empêche les scripts d’installation de lancer des programmes inconnus et limite ce à quoi les gestionnaires de paquets et les environnements d’exécution peuvent accéder.
ThreatLocker 2026 · Zero Trust à l’exécutionLes jetons volés expirent rapidement et ne permettent pas grand-chose. Pour la publication de vos propres paquets : Trusted Publishing plutôt que des jetons stockés.
ThreatLocker 2026 ; npm Trusted PublishingDétecte les accès aux fichiers d’identifiants, les processus inattendus et les destinations réseau inhabituelles — en dehors du modèle, qui n’applique lui-même aucune politique de sécurité.
HiddenLayer · Surveillance
Les données sont exfiltrées, des jetons volés propagent l’attaque
Exfiltration par le réseau ; avec des jetons de publication volés, l’attaquant manipule d’autres paquets. Une simple erreur devient ainsi une attaque de la chaîne d’approvisionnement contre vos clients.
PreuveLe ver npm Shai-Hulud s’est propagé de lui-même en 2025 à d’autres paquets grâce à des jetons volés.
Ce qui agit à cette étape — un clic active ou désactive
Sans connexion vers l’extérieur, le butin reste dans le conteneur — et le build n’atteint les registres que via le proxy.
HiddenLayer · ContrôleEmpêche les scripts d’installation de lancer des programmes inconnus et limite ce à quoi les gestionnaires de paquets et les environnements d’exécution peuvent accéder.
ThreatLocker 2026 · Zero Trust à l’exécutionLes jetons volés expirent rapidement et ne permettent pas grand-chose. Pour la publication de vos propres paquets : Trusted Publishing plutôt que des jetons stockés.
ThreatLocker 2026 ; npm Trusted PublishingDétecte les accès aux fichiers d’identifiants, les processus inattendus et les destinations réseau inhabituelles — en dehors du modèle, qui n’applique lui-même aucune politique de sécurité.
HiddenLayer · SurveillanceRéduit le délai de confinement : qui renouvelle quels jetons, qui bloque quoi, qui signale à qui — et dans quel délai.
HiddenLayer · Gouvernance ; CRA, art. 14
Modèle simplifié. Les attaques réelles sautent des étapes : si un paquet légitime est compromis, comme chalk et debug en 2025, la chaîne commence à l’étape 4 — seuls les contrôles à partir de cette étape agissent alors.
Interactif · Carte du harness
Le harness est la surface d’attaque : dix composants auxquels un agent de codage fait confiance
Un agent de codage est plus qu’un modèle. Fichiers de règles, entrées, terminal, serveurs MCP, skills, gestionnaires de paquets, secrets, dépôt, réseau et fournisseur du modèle forment son harness — et chacun de ces composants est une relation de confiance qu’un attaquant peut exploiter. Choisissez un composant ou un chemin d’attaque documenté.
Chemin d’attaque
Agent de codageModèle + harness
Fichiers de règles, fichiers de contexte et prompt système
AGENTS.md, CLAUDE.md, .cursor/rules, copilot-instructions.md, documentation du projet et tout ce qui aboutit dans la fenêtre de contexte.
ASI01ASI06LLM01
Menaces et cas documentés- Rules File Backdoor
Des caractères Unicode invisibles (zero-width joiner, marqueurs bidi) cachent des instructions dans les fichiers de règles de Cursor et de GitHub Copilot. Les humains ne les voient pas lors de la revue, le modèle les suit — d’une session à l’autre et aussi dans les forks.
Pillar Security, 18 mars 2025 — classé par Cursor et GitHub comme relevant de la responsabilité de l’utilisateur, pas de CVE - CopyPasta
Une injection de prompt déguisée en mention de licence, placée dans un commentaire Markdown caché d’un README, amène l’agent à copier la charge utile dans chaque fichier qu’il modifie — l’injection se propage d’elle-même d’une base de code à l’autre.
HiddenLayer, 4 septembre 2025 — démontré sur Cursor, également sur Windsurf, Kiro et Aider
- ValidationTraiter les fichiers de règles et de contexte comme du code : revue, CODEOWNERS, détection automatique des caractères invisibles.
- ContrôleConsidérer le contenu du dépôt comme une entrée non fiable — ne pas laisser exécuter d’instructions provenant de commentaires ou de fichiers.
- SurveillanceDéclencher une alerte en cas de modification des configurations d’agents et des fichiers de règles.
Prompts et contenus externes
Issues, pull requests, tickets, messages de chat, pages web, documentation et sorties d’outils que l’agent lit.
ASI01LLM01
Menaces et cas documentés- Fausse instruction utilisateur
Un commentaire HTML caché dans un README utilisait les balises de contrôle internes de Cursor (<user_query>) pour que du texte injecté soit traité comme une instruction de l’utilisateur. Une clé d’API a été exfiltrée via curl — alors que curl figurait sur la liste de blocage.
HiddenLayer, 31 juillet 2025 — corrigé dans Cursor 1.3 - Toxic Agent Flow
Une issue piégée dans un dépôt public a amené un agent utilisant le serveur MCP officiel de GitHub à écrire des données de dépôts privés dans une pull request publique.
Invariant Labs, 26 mai 2025 — lié à l’architecture, pas un défaut du serveur MCP
- ContrôleLimiter les agents, pour chaque tâche, à un seul dépôt et à des sources de données minimales (least agency).
- ValidationVérifier les actions planifiées avant leur exécution — pas seulement le prompt.
- SurveillanceDétecter et bloquer les flux de données entre destinations privées et publiques.
Terminal, système de fichiers et appels d’outils
Commandes shell, droits d’écriture sur les fichiers, paramètres de l’IDE, listes d’autorisation de commandes et mode d’approbation automatique.
ASI02ASI05LLM06
Menaces et cas documentés- Approbation automatique par injection
Une injection de prompt a amené GitHub Copilot en mode agent à écrire « chat.tools.autoApprove » dans les paramètres de VS Code. Les commandes du terminal s’exécutaient ensuite sans confirmation — exécution de code à distance.
CVE-2025-53773, CVSS 3.1 : 7,8 — août 2025 - Contournement des autorisations de commandes
Des commandes autorisées comme grep ou echo ont été combinées à des commandes ajoutées afin de contourner les confirmations et d’exfiltrer des variables d’environnement.
Gemini CLI (Tracebit, juillet 2025, corrigé dans 0.1.14) ; Claude Code CVE-2025-54795 (CVSS 4.0 : 8,7)
- ContrôleInterdire les modes d’approbation automatique ; installation, push, suppression et modifications cloud uniquement avec approbation humaine.
- ContrôleExécuter les agents dans un conteneur, un devcontainer ou une VM — sans accès à l’hôte.
- SurveillanceJournaliser chaque commande exécutée avec son contexte (qui, quel prompt, quel dépôt).
Serveurs MCP et descriptions d’outils
Serveurs MCP locaux et distants, leurs descriptions d’outils, paramètres et fichiers de configuration tels que mcp.json.
ASI04ASI02MCP Top 10
Menaces et cas documentés- Tool Poisoning & Rug Pull
Des instructions cachées dans les descriptions d’outils arrivent dans le contexte avec le rang d’un message système. Un serveur peut remplacer sa description après l’approbation — lors d’une expérience, un historique WhatsApp a ainsi fuité.
Invariant Labs, 1er et 7 avril 2025 - MCPoison
Cursor n’approuvait les entrées MCP que d’après leur nom. Quiconque disposait d’un accès en écriture au dépôt pouvait remplacer la commande et les arguments après l’approbation — exécution de code silencieuse et persistante.
CVE-2025-54136, CVSS 3.1 : 7,2 — corrigé dans Cursor 1.3
- VisibilitéRecenser tous les serveurs MCP par agent — avec source, version et autorisations.
- ValidationVérifier les descriptions d’outils et les métadonnées cachées avant l’approbation ; approuver à nouveau à chaque modification.
- ContrôleN’autoriser que des serveurs MCP approuvés, en versions fixes, pas « latest ».
Skills, plugins et places de marché
Skills d’agent avec frontmatter YAML, plugins, extensions et les places de marché dont ils proviennent.
ASI04
Menaces et cas documentés- Skills malveillants
Les métadonnées du frontmatter YAML sont chargées dans le prompt système avant que du code ne s’exécute. Des autorisations ou des déclencheurs cachés modifient le comportement sans attirer l’attention dans les vues des places de marché.
HiddenLayer, 28 juillet 2026 - ToxicSkills
Snyk a examiné 3 984 skills : 534 (13,4 %) présentaient au moins une constatation critique, 76 étaient avérés malveillants.
Snyk, 5 février 2026
- ValidationVérifier les skills, frontmatter compris, avant l’approbation ; vérifier leur provenance et leur auteur.
- ContrôleN’autoriser que des skills sélectionnés issus d’un catalogue interne.
- VisibilitéInventorier les skills installés sur chaque poste de travail.
Gestionnaires de paquets et registres
npm, pnpm, Yarn, pip, uv, Poetry — et les registres publics npm et PyPI depuis lesquels ils téléchargent.
ASI04ASI05LLM09LLM03
Menaces et cas documentés- Slopsquatting
Le modèle suggère un paquet qui n’existe pas. Les hallucinations récurrentes sont prévisibles — un attaquant enregistre précisément ces noms.
Spracklen et al., USENIX Security 2025 : 19,7 % de paquets hallucinés - Typosquatting et scripts d’installation
Des noms similaires captent les fautes de frappe ; les scripts de cycle de vie exécutent immédiatement du code lors de l’installation — avec les droits de l’agent.
OWASP ASI05 : installations de paquets non vérifiées
- ContrôleNe se procurer les paquets que via un proxy interne avec liste d’autorisation ; âge minimal des versions.
- ContrôleDésactiver par défaut les scripts d’installation, imposer le lockfile.
- ValidationVérifier chaque nouvelle dépendance au regard de la documentation de l’éditeur, de son âge, de ses mainteneurs et de son dépôt.
Secrets, jetons et identités
Identifiants cloud, clés d’API, jetons npm et PyPI, clés SSH, identifiants Git, l’identité sous laquelle l’agent agit.
ASI03
Menaces et cas documentés- Recherche de secrets via une CLI d’IA
En août 2025, des versions compromises de Nx ont appelé des interfaces en ligne de commande d’IA installées localement — selon Wiz avec des options qui suppriment les demandes de confirmation — pour rechercher des secrets. L’agent est devenu l’outil de l’attaquant ; selon GitGuardian, cela a réussi sur 95 des 366 systèmes attaqués.
s1ngularity / Nx, 26 août 2025 - Clé d’API avant la boîte de dialogue de confiance
Un paramètre du dépôt redirigeait les requêtes d’API vers un point de terminaison tiers avant que l’utilisateur n’accorde sa confiance au projet — la clé d’API pouvait fuiter.
Claude Code CVE-2026-21852, CVSS 4.0 : 5,3 — corrigé dans 2.0.65
- ContrôleIdentifiants à courte durée de vie et à portée restreinte (OIDC) plutôt que des jetons de longue durée ; aucun secret de production sur les systèmes des agents.
- ContrôleDonner aux agents leur propre identité, aux droits minimaux — et non celle du développeur.
- SurveillanceDétecter les accès aux fichiers d’identifiants et les usages inhabituels de jetons.
Dépôt, pipelines et release
Branches, pull requests, workflows CI, configuration de build, pipelines de release et droits de publication.
ASI04ASI08
Menaces et cas documentés- Extension compromise dans la release
Un jeton GitHub aux droits trop larges dans la configuration de build a permis de committer du code dans l’extension Amazon Q ; la version 1.84.0 contenait une instruction de suppression adressée à l’agent. Elle ne s’est pas exécutée en raison d’une erreur de syntaxe.
AWS-2025-015 / CVE-2025-8217 — corrigé dans 1.85.0 - Configuration provenant du dépôt
Des fichiers de projet lançaient des serveurs MCP ou du code avant que l’utilisateur n’accorde sa confiance au projet.
Codex CLI CVE-2025-61260 ; Claude Code CVE-2025-59536 (CVSS 4.0 : 8,7)
- ContrôleProtection des branches et revue obligatoire aussi pour les commits d’agents ; les agents ne doivent pas merger eux-mêmes.
- ContrôleAttribuer des droits minimaux aux jetons des pipelines ; Trusted Publishing plutôt que des jetons de publication stockés.
- GouvernanceIntégrer les identités d’agents au concept d’autorisations et les recertifier régulièrement.
Réseau et flux sortants
Connexions sortantes des agents, des gestionnaires de paquets et des jobs de build — y compris vers des domaines autorisés qui peuvent servir de canal d’exfiltration.
ASI02
Menaces et cas documentés- Exfiltration via des destinations autorisées
Les secrets fuient par requête HTTP, par DNS ou par des commits dans des dépôts publics — souvent via des destinations autorisées pour le travail.
notamment s1ngularity 2025, Tracebit 2025
- ContrôleLimiter le trafic sortant des agents et des builds aux destinations autorisées (deny by default).
- SurveillanceDéclencher une alerte en cas de destinations, de volumes de données et de schémas d’envoi inhabituels.
Modèle, fournisseur et IA fantôme
Les modèles utilisés, leurs fournisseurs, le traitement des données et les outils que les collaborateurs utilisent sans approbation.
LLM09ASI10
Menaces et cas documentés- Hallucination et non-déterminisme
Pour une même tâche, le même modèle suggère des paquets et des commandes différents — la sécurité ne peut pas être déléguée au modèle.
OWASP LLM09: Unsafe Code Generation - IA fantôme
Les comptes privés et les extensions contournent l’inventaire, les approbations et la journalisation.
HiddenLayer : visibilité et surveillance
- GouvernanceDéfinir dans une politique les outils, modèles et classes de données autorisés.
- VisibilitéDétecter l’IA fantôme à partir des données d’identité, de licences et des postes de travail.
- SurveillanceSurveiller l’utilisation des API et toute consommation de calcul anormale.
Les cas assortis d’un numéro CVE sont corrigés ; les versions correctives sont indiquées dans l’avis de sécurité correspondant. Les scores CVSS sont indiqués avec leur version (3.1 ou 4.0) et ne sont pas directement comparables. L’affectation des contrôles aux cinq couches suit le modèle de HiddenLayer (28 juillet 2026) et constitue une appréciation de VamiSec.
Interactif · Vérification du nom de paquet
Nom de paquet plausible ou piège ? Vérifiez une suggestion
Saisissez un nom de paquet qui vous a été suggéré par un assistant, un agent ou un README. La vérification compare localement avec des paquets npm et PyPI répandus, détecte les schémas typiques de typosquatting et de combosquatting et signale les noms fantaisistes à consonance plausible. Seul le registre peut montrer si un nom est inventé — la vérification fournit les commandes de contrôle adéquates.
npm install
Exemples
La vérification s’exécute entièrement dans votre navigateur : rien n’est envoyé ni enregistré, et aucune requête n’est adressée à npm ou à PyPI.
Aucun nom saisi pour l’instant
Saisissez un nom de paquet — par exemple issu d’une suggestion d’IA, d’un README ou d’un journal d’agent.
La vérification en 5 minutes avant chaque nouvelle dépendance
- Comparer avec la documentation de l’éditeurNon pas avec la réponse de l’IA, mais avec la documentation ou le dépôt du projet. Le nom correspond-il exactement ?
- Âge, mainteneurs, téléchargementsCréé récemment, peu de téléchargements, changement de mainteneur peu avant la release : s’arrêter et se renseigner.
- Examiner les scripts d’installationpreinstall, postinstall ou du code de build qui télécharge du contenu supplémentaire ou ouvre des connexions : c’est un signal d’alerte.
- Dépôt et provenanceUn dépôt est-il lié, le code correspond-il à la description, existe-t-il une provenance de build ?
- Approuver et épinglerN’intégrer que via la liste d’autorisation, épingler la version, vérifier le diff du lockfile dans la pull request.
Interactif · Matrice des obligations
Quelle règle s’applique où ? Huit domaines de contrôle, cinq textes réglementaires plus des guides
Il n’existe pas de loi spécifique pour les dépendances suggérées par l’IA et les agents de codage — mais le CRA, NIS2 avec le BSIG, DORA, l’AI Act et la responsabilité du fait des produits s’appliquent à des endroits précis. Choisissez votre rôle pour mettre en évidence les textes pertinents, et une cellule pour afficher la référence et l’appréciation. Seul le texte juridique fait foi ; les guides constituent une orientation non contraignante sur l’état de l’art.
Votre rôle
| Domaine de contrôle × texte | CRAart. 14 depuis le 11 septembre 2026, art. 13 et annexe I à partir du 11 décembre 20275 | NIS2 / BSIGapplicable8 | DORAapplicable depuis le 17 janvier 20257 | AI Actapplicable par étapes à partir de 20252 | Responsabilité produitspour les produits mis sur le marché après le 9 décembre 2026 ; via le droit national1 | GuidesOrientation7 |
|---|---|---|---|---|---|---|
| Sélection et provenance des composants | — | — | ||||
| Inventaire et SBOM | — | — | ||||
| Développement sécurisé et tests, y compris pour le code IA | — | — | ||||
| Modifications et approbations | — | — | — | |||
| Intégrité et protection contre les logiciels malveillants | — | — | — | |||
| Vulnérabilités des composants et signalement | — | — | ||||
| Responsabilité de la direction et compétences | — | — | ||||
| Classification, responsabilité et sanctions | — | — |
Choisissez une cellule pour voir la référence et l’appréciation. Le filtre par rôle masque les textes qui ne sont pas pertinents pour votre profil.
Cyber Resilience Act, règlement (UE) 2024/2847art. 14 depuis le 11 septembre 2026, art. 13 et annexe I à partir du 11 décembre 2027
- Sélection et provenance des composantsart. 13(5)
Lorsqu’ils intègrent des composants de tiers, les fabricants doivent faire preuve de la diligence requise — expressément aussi pour les logiciels libres et open source ; l’étendue de cette diligence dépend du risque (considérant 34). L’obligation s’applique à partir du 11 décembre 2027. Selon les lignes directrices non contraignantes de la Commission C(2026) 5252 (exemple 34), ni les dépôts de paquets ni les développeurs individuels n’ont d’obligations au titre du CRA — la diligence incombe au fabricant intégrateur.
- Inventaire et SBOMannexe I, partie II, point 1
Identifier et documenter les composants, notamment au moyen d’une SBOM dans un format courant et lisible par machine, couvrant au minimum les dépendances de premier niveau. Le CRA n’impose actuellement aucun format ; la page de mise en œuvre de la Commission ne mentionne aucun acte d’exécution au titre de l’art. 13, par. 24 (disposition facultative) (état au 27 juillet 2026). S’applique à partir du 11 décembre 2027.
- Développement sécurisé et tests, y compris pour le code IAannexe I, partie I, point 2 a), b), j) · partie II, point 3
Sur la base de l’évaluation des risques et lorsque cela est applicable : mettre à disposition des produits sans vulnérabilités exploitables connues, avec une configuration sécurisée par défaut, limiter la surface d’attaque et tester la sécurité de manière efficace et régulière. S’applique à partir du 11 décembre 2027.
- Vulnérabilités des composants et signalementart. 13(6) · art. 14
À partir du 11 décembre 2027 : signaler les vulnérabilités des composants intégrés à leur fabricant ou à leur mainteneur (art. 13, par. 6). Depuis le 11 septembre 2026 : signaler simultanément les vulnérabilités activement exploitées au CSIRT coordinateur et à l’ENISA via la plateforme unique de signalement : alerte précoce sous 24 heures, notification sous 72 heures, rapport final au plus tard 14 jours après la mise à disposition d’une mesure corrective.
- Classification, responsabilité et sanctionsart. 64(2) et (10)
Les infractions à l’annexe I, à l’art. 13 et à l’art. 14 sont passibles d’amendes allant jusqu’à 15 millions d’euros ou 2,5 % du chiffre d’affaires annuel mondial, le montant le plus élevé étant retenu. Pas d’amendes à l’encontre des stewards de logiciels open source ; les micro et petites entreprises en sont exemptées en cas de non-respect du délai d’alerte précoce de 24 heures.
Directive NIS2 (UE) 2022/2555 et BSIG (loi allemande sur le BSI, en vigueur depuis le 6 décembre 2025)applicable
- Sélection et provenance des composantsart. 21(2)(d) et (3) · § 30, al. 2, phrase 2, n° 4 BSIG
Les mesures de gestion des risques comprennent la sécurité de la chaîne d’approvisionnement. Selon l’art. 21, par. 3, de NIS2, le choix des mesures relatives à la chaîne d’approvisionnement doit tenir compte des vulnérabilités propres à chaque fournisseur direct, de la qualité globale de ses produits et de ses pratiques en matière de cybersécurité, y compris la sécurité de ses procédures de développement — disposition non reprise mot pour mot dans le BSIG, mais mobilisable par une interprétation conforme à la directive.
- Inventaire et SBOMRègl. d’exécution 2024/2690, annexe, point 6.1.2, c)
Lors de l’acquisition de produits TIC, exiger des informations sur les composants matériels et logiciels utilisés. Contraignant uniquement pour les types d’entités numériques visés par le règlement d’exécution, par exemple les fournisseurs de services d’informatique en nuage et les fournisseurs de services gérés.
- Développement sécurisé et tests, y compris pour le code IAart. 21(2)(e) · § 30, al. 2, phrase 2, n° 5 BSIG
Mesures de sécurité lors de l’acquisition, du développement et de la maintenance des systèmes informatiques, des composants et des processus, y compris la gestion et la divulgation des vulnérabilités.
- Modifications et approbationsRègl. d’exécution 2024/2690, annexe, point 6.2
Règles de développement sécurisé couvrant toutes les phases, y compris des exigences de sécurité pour les environnements de développement — contraignantes pour les types d’entités numériques énumérés, une bonne orientation pour les autres.
- Intégrité et protection contre les logiciels malveillantsRègl. d’exécution 2024/2690, annexe, points 6.6.1, c), et 6.9
Correctifs uniquement issus de sources fiables et avec vérification de l’intégrité ; protection contre les logiciels malveillants et non autorisés au moyen de mesures de détection et de prévention.
- Vulnérabilités des composants et signalement§ 30, al. 2, phrase 2, n° 5 BSIG
La gestion et la divulgation des vulnérabilités font partie des mesures minimales — selon l’appréciation de VamiSec, cela inclut la détection et le traitement rapides des dépendances compromises.
- Responsabilité de la direction et compétencesart. 20 NIS2 · § 38 BSIG
L’organe de direction met en œuvre les mesures, en surveille l’application, engage sa responsabilité selon le droit des sociétés en cas de manquement fautif à ses obligations et suit régulièrement des formations.
- Classification, responsabilité et sanctions§ 65, al. 2 et 5 à 7, BSIG
Amendes lorsque les mesures prévues au § 30, al. 1, ne sont pas prises ou pas documentées : jusqu’à 10 millions d’euros pour les entités particulièrement importantes et 7 millions d’euros pour les entités importantes ; au-delà de 500 millions d’euros de chiffre d’affaires total, jusqu’à 2 % ou 1,4 % du chiffre d’affaires total.
DORA, règlement (UE) 2022/2554, et RTS (UE) 2024/1774applicable depuis le 17 janvier 2025
- Sélection et provenance des composantsRTS, art. 16(8)
Le code source des prestataires tiers de services TIC et des projets open source doit être analysé et testé avant la mise en production — dans la mesure du possible. S’applique aux entités financières relevant du cadre complet de gestion du risque lié aux TIC (titre II).
- Inventaire et SBOMRTS, art. 10(2)(d)
Suivre l’utilisation de bibliothèques tierces et open source par les services TIC soutenant des fonctions critiques ou importantes — y compris les versions et les mises à jour.
- Développement sécurisé et tests, y compris pour le code IARTS, art. 16(3) et (4)
Revues du code source avec tests statiques et dynamiques ainsi que tests de sécurité des progiciels au plus tard lors de la phase d’intégration — que le code ait été écrit par un humain ou par un agent.
- Modifications et approbationsart. 9(4)(e) · RTS, art. 17(1)
Toutes les modifications des systèmes de TIC sont enregistrées, testées, évaluées, approuvées, mises en œuvre et vérifiées ; l’approbation et la mise en œuvre sont fonctionnellement séparées. Lorsqu’un agent suggère une nouvelle dépendance, il s’agit, selon l’appréciation de VamiSec, d’une modification — à faire approuver par une instance indépendante.
- Intégrité et protection contre les logiciels malveillantsRTS, art. 16(7)
Prévoir des contrôles visant à protéger l’intégrité du code source — selon l’appréciation de VamiSec, cela inclut aussi ce qu’un agent est autorisé à écrire dans le dépôt et la configuration.
- Vulnérabilités des composants et signalementRTS, art. 10(2)(d)
Surveiller les versions et les mises à jour des bibliothèques utilisées — condition préalable pour réagir rapidement à un paquet compromis.
- Responsabilité de la direction et compétencesart. 28(1)
Les entités financières restent à tout moment pleinement responsables lorsqu’elles recourent à des services TIC — selon l’appréciation de VamiSec, également pour les services d’agents de codage obtenus en externe (SaaS), qui devraient être considérés comme des services TIC.
Règlement sur l’IA (UE) 2024/1689, tel que modifié par le règlement (UE) 2026/1744applicable par étapes à partir de 2025
- Responsabilité de la direction et compétencesart. 4, tel que modifié par le règl. (UE) 2026/1744
Les fournisseurs et les déployeurs de systèmes d’IA prennent des mesures pour favoriser la maîtrise de l’IA. Depuis l’omnibus numérique (en vigueur depuis le 27 juillet 2026), il n’est plus nécessaire de garantir un niveau de compétence déterminé pour chaque personne.
- Classification, responsabilité et sanctionsart. 6(2) · annexe III
Le développement logiciel ne figure pas à l’annexe III — un assistant de codage IA n’est généralement pas un système d’IA à haut risque. Les obligations des art. 53 et 55 incombent aux fournisseurs des modèles GPAI, et non aux entreprises qui utilisent des agents de codage.
Directive sur la responsabilité du fait des produits (UE) 2024/2853pour les produits mis sur le marché après le 9 décembre 2026 ; via le droit national
- Classification, responsabilité et sanctionsart. 4, point 1 · art. 8(1) · art. 11(2)
Le logiciel est un produit. La responsabilité du fabricant couvre aussi les dommages causés par des composants défectueux intégrés sous son contrôle ; l’absence de mises à jour logicielles nécessaires à la sécurité ne l’exonère pas. S’applique aux produits mis sur le marché après le 9 décembre 2026, et uniquement aux dommages subis par des personnes physiques. La directive produit ses effets via le droit national ; la promulgation du projet de loi du gouvernement allemand (BT-Drs. 21/4297) n’a pas pu être vérifiée au 8 octobre 2026.
BSI, ANSSI, ENISA, OWASP, HiddenLayer — orientation non contraignanteOrientation
- Sélection et provenance des composantsENISA, mars 2026 · BSI CON.8.A6 · Grundschutz++ DEV.4.2
L’ENISA cite expressément le slopsquatting et recommande la visibilité sur tous les paquets sélectionnés par l’IA. L’IT-Grundschutz du BSI prévoit de se procurer les bibliothèques auprès de sources fiables (CON.8.A6) ; Grundschutz++ prévoit, sous forme d’exigence « SOLLTE » (devrait), d’interdire les artefacts provenant de sources non fiables ou inconnues (DEV.4.2) — expressément aussi les paquets et les modèles.
- Inventaire et SBOMBSI TR-03183-2 v2.1.0 · Grundschutz++ DEV.4.3
SBOM avec résolution récursive des dépendances, au moins jusqu’au premier composant situé hors du périmètre de livraison, en CycloneDX 1.6 ou ultérieur ou en SPDX 3.0.1 ou ultérieur — plus en profondeur que le minimum du CRA.
- Développement sécurisé et tests, y compris pour le code IABSI/ANSSI 2024 · OWASP LLM09
Les assistants de codage IA ne remplacent pas des développeurs expérimentés ; vérifier le code généré et faire croître l’assurance qualité au même rythme que la productivité. L’OWASP classe les bibliothèques inventées sous LLM09, Unsafe Code Generation.
- Modifications et approbationsHiddenLayer · Contrôle
Approbation humaine pour les actions à fort impact, droits minimaux par défaut et vérification des prompts système et des configurations par défaut avant la mise en service.
- Intégrité et protection contre les logiciels malveillantsBSI CON.8.A20 · Grundschutz++ DEV.4.4
Rechercher les vulnérabilités des composants externes inconnus qui n’ont pas fait l’objet de revues établies ; garantir l’intégrité par somme de contrôle ou certificat cryptographique.
- Vulnérabilités des composants et signalementENISA, mars 2026
Fiches pratiques pour la sélection, l’intégration avec lockfiles et vérification des hashs, la surveillance et la remédiation ; gestion des vulnérabilités renforcée pour les paquets sélectionnés par l’IA.
- Responsabilité de la direction et compétencesHiddenLayer · Gouvernance
Un responsable pour chaque agent en production, intégration des agents de codage dans les threat models et la gouvernance de l’IA, réponse aux incidents spécifique aux agents, revue régulière des droits et des intégrations de confiance.
- Obligation contraignante
- Contraignant pour certains destinataires ou indirect
- Guide, non contraignant
État au 8 octobre 2026. L’affectation aux domaines de contrôle est une appréciation de VamiSec et ne constitue pas un conseil juridique. Les citations d’actes juridiques de l’UE reposent sur les versions originales anglaises ; les lignes directrices de la Commission et les documents de l’ENISA, du BSI et de l’OWASP ne sont pas contraignants.
Texte intégral
Slopsquatting et agents de codage en détail : 13 chapitres, de l’état des lieux au plan à 90 jours
Les chapitres mènent de la situation actuelle à la mécanique des attaques, aux cinq couches de protection, à l’hygiène des dépendances, aux obligations découlant du CRA, de NIS2, de DORA et de l’AI Act, puis au plan de mise en œuvre. Chaque chiffre est sourcé ; obligation, pratique et recommandation VamiSec sont signalées séparément.
De la suggestion à l’exécution
Les outils de codage IA font partie du quotidien des développeurs. Depuis que des agents installent eux-mêmes des paquets et appellent des outils, le risque se déplace de la suggestion erronée vers l’exécution sans supervision.
En peu de temps, les outils d’IA sont passés du stade de l’expérimentation à celui d’équipement de base du développement logiciel. Dans la Stack Overflow Developer Survey 2025, 84 % des répondants déclaraient utiliser des outils d’IA dans leur processus de développement ou prévoir de le faire (2024 : 76 %). Ils étaient effectivement utilisés par 78,5 % d’entre eux, quotidiennement par 47,1 %. En 2025, à peine un tiers utilisait des agents d’IA dans son travail (environ 31 %), et 37,9 % n’avaient aucun projet en ce sens.
84 %utilisent des outils d’IA ou prévoient de le faire (Stack Overflow 2025)
73 %utilisent quotidiennement des assistants et agents de codage (Stack Overflow 2026)
> 1 millionde pull requests du Copilot Coding Agent, de mai à septembre 2025 (Octoverse)
+178 %de hausse des dépôts publics utilisant un SDK de LLM, à plus de 1,1 million (Octoverse 2025)
Un an plus tard, le centre de gravité s’est déplacé. Dans l’enquête 2026 (30 903 réponses valides provenant de 169 pays), les assistants et agents de codage constituent, avec 66 %, le principal cas d’usage de l’IA, devant les chatbots généralistes (63 %). Stack Overflow résume que l’« écrasante majorité » utilise désormais quotidiennement des assistants et agents de codage (73 %) – ce chiffre couvre les deux ensemble, pas les agents seuls. L’Octoverse 2025 de GitHub va dans le même sens : plus de 180 millions de développeuses et développeurs, dont environ 36 millions de nouveaux, et près de 80 % des nouveaux utilisent Copilot dès leur première semaine. GitHub ne communique pas de taux d’acceptation des pull requests du Coding Agent.
Les assistants suggèrent, les agents exécutent
Pour la sécurité, ce qui compte est moins la quantité de code qu’écrit un modèle que ce qu’il est autorisé à faire lui-même. Un assistant formule une suggestion qu’un humain lit, adopte ou rejette. Un agent travaille dans le terminal, exécute npm install ou pip install, intègre des serveurs MCP (Model Context Protocol, l’interface vers des outils et sources de données externes) et des skills (paquets d’instructions réutilisables pour agents), et lit comme contexte le contenu des dépôts, les issues et la documentation. HiddenLayer souligne que les agents peuvent adopter des paquets typosquattés avec moins de contrôle humain et que des serveurs MCP distants peuvent changer sans que l’organisation s’en aperçoive (HiddenLayer, 16 juillet 2026).
| Dimension | Assistant (suggestion) | Agent (exécution) |
|---|---|---|
| Nom de paquet | apparaît dans le chat ou le code ; un humain décide de l’installation | est installé directement dans le terminal |
| Contexte | le prompt de la développeuse ou du développeur | README, issues, fichiers de règles, descriptions d’outils, pages web – chaque source est un point d’entrée possible pour une injection de prompt, c’est-à-dire des instructions cachées dans des données |
| Droits | aucun en propre | ceux de la session : système de fichiers, réseau, tokens, profils cloud |
| Extensions | quasiment aucune | serveurs MCP, skills, hooks, plugins |
| Point de contrôle | revue avant le commit | boîte de dialogue d’approbation – sauf approbation automatique |
Comparaison simplifiée ; appréciation de VamiSec.
Il est avéré que des agents exécutent des instructions d’installation sans vérifier à qui appartient la ressource : des chercheurs ont trouvé, sur 6 214 domaines, 8 265 fichiers llms.txt ou llms-full.txt ; 120 d’entre eux renvoyaient à des paquets ou domaines non enregistrés. Après qu’ils eurent occupé certains de ces noms avec des paquets balises (beacon), une entreprise du Fortune 500 s’est manifestée en moins d’une heure ; les chaînes de processus pointaient vers Claude, OpenAI Codex et Nous Research Hermes (selon Schneier, citant Ars Technica, septembre 2026). Il ne s’agit pas d’une hallucination – les noms provenaient de la documentation des éditeurs –, mais la logique est la même : celui qui occupe le premier un nom libre détermine ce que l’agent installe. Les versions ne sont pas plus sûres : sur environ 37 000 recommandations de mise à niveau générées par IA et analysées, GPT-5 a halluciné 27,8 % des versions de composants selon Sonatype.
Trois sources de départ et leur appréciation
ThreatLocker, 15 septembre 2026
Blog d’éditeur sur le typosquatting et le slopsquatting dans npm et PyPI. Cite Spracklen et al. et recommande la vérification des paquets, des listes de dépendances approuvées ou un registre ou proxy interne, l’épinglage (pinning) avec lockfiles, l’analyse de composition logicielle (SCA), la désactivation des scripts de cycle de vie et des builds isolés avec des identifiants à courte durée de vie. Appréciation : les deux incidents qui y sont cités (Microsoft 2026, Check Point 2024) relèvent du typosquatting classique.
HiddenLayer, 28 juillet 2026
Cadre pour les agents de codage et leur harness – l’environnement d’exécution constitué de prompts, d’outils, de skills et de serveurs MCP autour du modèle. Cinq couches : Visibilité, Contrôle, Validation, Surveillance, Gouvernance. Conceptuel, sans statistiques propres.
Harsh, dev.to, 6 octobre 2026
Autotest avec 30 prompts npm courants soumis à trois outils de codage ; chacun a suggéré au moins un nom de paquet inexistant. Un échantillon, pas une étude : chaque prompt n’a été exécuté qu’une fois, aucun taux ne peut être calculé. L’auteur qualifie lui-même le résultat de « signal, pas un verdict ».
L’idée directrice de ce dossier : la chaîne d’approvisionnement logicielle commence aujourd’hui dans le prompt. Un nom de paquet qu’un modèle suggère ou qu’un agent reprend d’un fichier de skill est le premier maillon d’une chaîne qui, via l’enregistrement, la résolution et l’exécution, va jusqu’aux tokens volés et à la propagation. Qui n’évalue que le modèle néglige les étapes auxquelles une attaque peut réellement être interrompue.
Typosquatting : ancien, mais industrialisé
Enregistrer des noms de paquets prêtant à confusion est un schéma ancien. Ce qui est nouveau, c’est la vitesse, l’automatisation et des cibles qui se trouvent désormais dans les outils d’IA eux-mêmes.
Dans le typosquatting, un attaquant enregistre un nom qui ressemble à s’y méprendre à celui d’un paquet populaire et mise sur les fautes de frappe, les copier-coller inattentifs ou les outils automatisés. Les registres publics attribuent les noms au premier arrivé ; un nouveau compte suffit. Les schémas sont peu nombreux :
| Schéma | Principe | Exemple documenté |
|---|---|---|
| Omission | Des caractères manquent | « suport-color », manifestement calqué sur supports-color (SANDWORM_MODE, Socket 2026) |
| Insertion, substitution, permutation | Un caractère est ajouté, remplacé ou interverti | « reqjuests » (requests), « tensoflom » (tensorflow) – Check Point 2024 |
| Homoglyphes | Caractères visuellement similaires, par exemple rn au lieu de m ou un chiffre au lieu d’une lettre | « jeIlyfish » avec un I majuscule au lieu d’un l (PyPI, signalé le 1er décembre 2019, en ligne depuis le 11 décembre 2018 ; volait des clés SSH et GPG) |
| Séparateurs | Variation du tiret, du tiret bas ou du point | « crossenv » au lieu de cross-env (npm, 1er août 2017 ; transmettait des variables d’environnement, environ 40 paquets du compte hacktask supprimés) |
| Préfixe, suffixe, marque | Nom connu plus un ajout comme -setup, -helper ou -utility | Imitations d’outils OpenSearch et Elasticsearch, parfois avec une fausse URL de dépôt (Microsoft 2026) ; imitations de Claude Code (Socket 2026) |
| Confusion de scope | Un paquet avec scope (@name/…) en imite un sans scope – ou inversement | pas documenté individuellement dans les cas analysés ; dans le cas Microsoft, des paquets avec et sans scope propre (@vpmdhaj) sont apparus |
Noms d’exemple tirés de Check Point (28 mars 2024), Microsoft (28 mai 2026), Socket (20 février 2026) ainsi que des cas historiques crossenv (npm, 2017) et jeIlyfish (PyPI, 2019). Ne pas installer.
De l’acteur isolé au travail à la chaîne
Check Point, mars 2024 (PyPI)
Plus de 500 paquets malveillants en deux vagues (environ 200, puis plus de 300), chacun publié depuis un compte de mainteneur distinct : les comptes ont été créés le 26 mars, les téléversements ont suivi le lendemain. Sous Windows, setup.py chargeait une seconde étape qui volait des mots de passe et des fichiers et remplaçait des logiciels de portefeuille crypto. PyPI a supprimé les paquets peu après le signalement.
Microsoft, 28 mai 2026 (npm)
Un compte nouvellement créé a publié en quatre heures 14 paquets imitant des outils OpenSearch, Elasticsearch, DevOps et de configuration. Des hooks d’installation dérobaient des identifiants AWS (IMDSv2, rôles de tâches ECS, STS, Secrets Manager dans au moins 16 régions), des tokens HashiCorp Vault, des tokens GitHub Actions avec leur contexte et des tokens npm dotés de droits de publication.
21 764paquets open source malveillants au premier trimestre 2026 (Sonatype)
46 par journouveaux paquets npm malveillants en moyenne – 75 % de tous les nouveaux cas (Sonatype, T1 2026)
+73 %de hausse des détections de paquets open source malveillants en 2025 ; près de 90 % concernaient npm (ReversingLabs)
Ni Check Point ni Microsoft ne rattachent ces campagnes à l’IA ; il s’agit de typosquatting et d’usurpation de marque. La cible est révélatrice : sont visés les environnements de build, les rôles cloud et les tokens de publication – précisément les droits avec lesquels travaillent aussi les agents de codage. Sonatype désigne l’abus de la confiance accordée aux noms, outils et workflows de release connus comme le vecteur d’attaque le plus efficace du premier trimestre 2026.
SANDWORM_MODE : le typosquatting vise l’agent
La transition est marquée par une campagne décrite par Socket le 20 février 2026 : au moins 19 paquets npm typosquattés, dont trois imitant Claude Code, ont volé des identifiants npm, GitHub, CI et crypto ainsi que des clés d’API de LLM de neuf fournisseurs. Ils inscrivaient en outre leur propre serveur MCP dans la configuration de Claude Code, Claude Desktop, Cursor, VS Code Continue et Windsurf. Les outils de ce serveur, aux noms anodins comme index_project ou lint_check, contenaient une injection de prompt : l’assistant devait lire les clés SSH, les identifiants AWS, .npmrc et .env, et taire cette étape à l’utilisateur. Pour se propager, le logiciel malveillant utilisait des tokens npm volés, des workflows pull_request_target injectés et SSH comme voie de repli.
Appréciation de VamiSec : le paquet n’est ici que l’ouvre-porte. La véritable charge utile est une modification durable de l’environnement de l’agent, qui agit dans chaque session future avec les droits de la développeuse ou du développeur.
Ce que font les registres – et où cela s’arrête
- Contrôle du typosquatting : selon ses propres déclarations, PyPI détecte et signale automatiquement un typosquatting potentiel lors de la création d’un projet ; PyPI ne communique ni seuils ni chiffres (rétrospective annuelle 2025).
- Quarantaine : les administrateurs peuvent retirer des projets de l’index sans les supprimer. Depuis août 2024, cela a concerné environ 140 projets, dont un seul a été libéré (PyPI, 30 décembre 2024). En mars 2026, la quarantaine se déclenchait déjà automatiquement via des signaleurs de confiance.
- Marqueurs de statut : via la PEP 792, les API de l’index signalent le statut « quarantined » ; les installateurs doivent alors afficher un avertissement.
- Délai de réaction : en 2025, PyPI a traité plus de 2 000 signalements de logiciels malveillants, 66 % en moins de quatre heures et 92 % en moins de 24 heures.
Les limites sont structurelles. Toutes ces mesures interviennent après le téléversement ; la fenêtre de temps jusqu’à la suppression demeure. npm aussi a réagi à Shai-Hulud en bloquant les téléversements contenant des indicateurs connus – là encore de manière réactive. Et un contrôle de similarité ne détecte que ce qui ressemble à un nom existant. C’est précisément là qu’il échoue face aux noms qu’un modèle de langage invente de toutes pièces.
Slopsquatting : quand le modèle invente le nom
Les modèles de langage inventent des noms de paquets – de manière reproductible et rarement identifiables comme fautes de frappe. Celui qui enregistre le premier un tel nom détermine ce qui est installé.
Le terme slopsquatting est attribué à Seth Larson (Python Software Foundation) ; Andrew Nesbitt l’a popularisé le 8 avril 2025. Il désigne la situation suivante : un modèle de langage hallucine un nom de paquet inexistant, un attaquant l’enregistre avec du code malveillant. La mesure de référence provient de Spracklen et al. (USENIX Security 2025, Distinguished Paper Award), qui n’emploient eux-mêmes pas ce terme.
19,7 %des 2,23 millions de références de paquets hallucinées (440 445)
205 474noms de paquets inventés uniques
43 %des hallucinations sont revenues dans les dix répétitions (échantillon : 500 prompts)
48,6 %des noms Python inventés : à six modifications de caractères ou plus des paquets réels
Les chercheurs ont fait générer par 16 modèles de code 576 000 échantillons de code en Python et JavaScript. Était considéré comme halluciné ce qui n’existait pas sur PyPI ou npm le 10 janvier 2024 – une borne inférieure. Les 19,7 % se rapportent aux références de paquets, non aux échantillons de code.
| Constat | Résultat (Spracklen et al.) | Conséquence pour la défense |
|---|---|---|
| Type de modèle | Modèles commerciaux : 5,2 % en moyenne, open source : 21,7 % (seulement trois modèles commerciaux, tous d’OpenAI) | Le choix du modèle réduit le risque, sans l’éliminer |
| Température | Température plus élevée, davantage d’hallucinations (maximum : GPT-4 8,9 %, GPT-3.5 31,8 %) ; d’autres paramètres de décodage n’ont pas aidé | Même des réglages conservateurs produisent des paquets inventés |
| Reproductibilité | 500 prompts, dix fois chacun : 43 % dans toutes les exécutions, 58 % plus d’une fois, 39 % plus jamais | Beaucoup de noms inventés sont prévisibles – donc enregistrables |
| Spécificité du modèle | 81 % des noms provenaient d’un seul des 16 modèles | Faible recoupement ; le risque dépend du modèle |
| Distance des noms | Sur 76 489 noms Python : 13,4 % à une distance de Levenshtein de 1–2, 37,9 % de 3–5, 48,6 % de 6 ou plus | Le plus souvent pas des fautes de frappe – la détection classique du typosquatting ne fonctionne pas |
| Confusion de langage | 8,7 % des noms Python inventés sont de vrais paquets npm | Un nom existant n’est pas automatiquement le bon |
| Contre-mesures au niveau du modèle | RAG (Retrieval-Augmented Generation), auto-affinement (self-refinement) et fine-tuning aident ; le fine-tuning a réduit le taux de 83 % chez DeepSeek, mais aussi la performance HumanEval de 51,4 % à 25,3 % | Corriger le modèle coûte en qualité – les contrôles ont aussi leur place hors du modèle |
Spracklen et al., USENIX Security 2025 (arXiv:2406.10279 v3). Distance de Levenshtein = nombre de modifications de caractères individuels entre deux noms. La reproductibilité a été étudiée sur quatre modèles et en Python.
Éléments de preuve issus de la recherche et de la pratique, de 2023 à 2026
En 2023, chez Vulcan Cyber, Bar Lanyado a montré que ChatGPT 3.5 recommandait des paquets non publiés pour plus de 40 questions Node.js sur 201 et plus de 80 questions Python sur 227. Pour son étude de suivi publiée en 2024 chez Lasso Security, il a téléversé un paquet vide sous le nom huggingface-cli, halluciné de manière répétée (le vrai : huggingface_hub[cli]) – avec, selon Lasso, plus de 30 000 téléchargements authentiques en trois mois. Alibaba mentionnait pip install huggingface-cli dans le premier commit du README de son dépôt GraphTranslator (26 février 2024).
Modèles de pointe 2026 (prépublication)
Aleksandr Churilov a reproduit la méthodologie en 2026 avec cinq modèles actuels : taux de 4,62 % à 6,10 %. Les cinq ont inventé à l’identique 127 noms ; après un signalement coordonné, 53 restaient enregistrables (état : avril 2026). Non évalué par des pairs ; l’extraction par expressions régulières et les listes de référence de 2024 peuvent fausser les valeurs.
Agents (Trend Micro, 2025)
Les agents de codage dotés de raisonnement ont inventé environ moitié moins de noms de paquets que les modèles de base, mais pas zéro – pas même Cursor avec validation en direct via des serveurs MCP.
Échantillon dev.to (6 octobre 2026)
Dans l’autotest décrit en introduction, Claude Haiku 4.5 a inventé deux noms de paquets, GitHub Copilot un et ChatGPT/Codex trois ; deux sont apparus chez plusieurs outils, et ils n’ont délibérément pas été publiés. Pas une mesure, mais un indice que le problème persiste.
react-codeshift (Aikido, 21 janvier 2026)
Un nom npm jamais publié, mélange de jscodeshift et de react-codemod, figurait comme commande npx dans des Agent Skills générés par IA et s’est retrouvé dans au moins 237 dépôts. Aikido l’a enregistré comme espace réservé inoffensif et attribue les téléchargements qui ont suivi à des agents ayant suivi les skills.
HalluSquatting (Spira et al., 2026)
Des dépôts et des skills sont eux aussi hallucinés – jusqu’à 85 % et 100 % respectivement dans les scénarios de test. Des ressources enregistrées à l’avance ont fonctionné avec les six assistants de codage testés dans 20 à 65 % des essais. Avec une recherche web préalable, Cursor CLI a cloné correctement dans 93,4 % des cas, sans recherche dans 0,9 %. Prépublication, aucune infection réelle connue.
Aucune attaque documentée à ce jour
Au 8 octobre 2026, aucun cas publiquement documenté n’est connu dans lequel un attaquant aurait enregistré de manière malveillante un nom dont l’hallucination est prouvée et où des victimes l’auraient installé à la suite d’une suggestion d’IA. L’affirmation selon laquelle PhantomRaven (2025), par exemple, exploiterait le slopsquatting est une appréciation de Koi sans preuve publiée. Pour les 53 noms de Churilov non plus, Socket et InfoWorld ne constatent pas d’enregistrements malveillants.
Appréciation de VamiSec : il n’y a pas lieu de lever l’alerte. Les conditions préalables sont documentées : les hallucinations se répètent, un petit recoupement existe entre modèles, et des espaces réservés inoffensifs ont reçu de véritables installations, récemment apparemment par des agents. En même temps, un cas réel reste difficile à repérer : le nom ne ressemble généralement pas à une faute de frappe, et Seth Larson juge difficile, probablement impossible, de chiffrer les tentatives d’installation de paquets hallucinés (The Register, 12 avril 2025). L’absence de cas documentés ne prouve donc pas que le risque soit faible.
Le déclenchement : scripts d’installation, code d’import et tokens
Un faux nom de paquet ne devient dangereux que lorsque du code s’exécute. Les incidents de 2025-2026 montrent à quel point le chemin est court entre l’installation, les tokens volés et l’autopropagation.
Entre la suggestion d’un nom et le dommage, il y a l’exécution. Les gestionnaires de paquets offrent pour cela plusieurs points de déclenchement, et tous ne peuvent pas être désactivés d’un simple interrupteur. Le conseil répandu de désactiver les scripts de cycle de vie (ignore-scripts) est juste, mais incomplet.
| Point de déclenchement | Quand le code s’exécute | Cas documenté | npm ignore-scripts l’arrête-t-il ? |
|---|---|---|---|
| Scripts de cycle de vie npm (preinstall, install, postinstall) | lors de l’installation | Cas Microsoft (mai 2026) ; Shai-Hulud (septembre et novembre 2025) | oui |
| Paquet source Python (setup.py) | lors de l’installation depuis le paquet source | Check Point 2024 | non applicable (pip) |
| Fichier .pth | à chaque démarrage de l’interpréteur Python, sans import | litellm 1.82.8 (24 mars 2026) : le fichier figurait dans le RECORD, les contrôles de hachage n’ont rien signalé | non – pas un script de cycle de vie |
| Code exécuté à l’import | au premier import ou require | mentionné par l’OWASP sous ASI05 | non |
| Dépendance Git | lors de l’installation : un .npmrc fourni peut remplacer le chemin vers le programme git | motif de l’introduction de --allow-git=none (GitHub, 18 février 2026) | non |
| Dépendance URL | la charge utile est chargée depuis une adresse HTTP lors de l’installation, invisible dans le tarball du registre | PhantomRaven (selon Koi, octobre 2025) | pas le chargement ultérieur ; pour cela --allow-remote=none |
Sources : Microsoft 28 mai 2026 ; Check Point 28 mars 2024 ; Snyk 24 mars 2026 ; GitHub Changelog 18 février 2026 ; The Register 30 octobre 2025 ; OWASP Top 10 for Agentic Applications 2026.
Six incidents, un même schéma
- 1Les CLI d’IA comme outil de l’attaquants1ngularity/Nx – 26 août 2025
Via un workflow pull_request_target vulnérable à l’injection de commandes shell, des attaquants ont dérobé le token npm et publié des versions malveillantes de Nx pendant environ quatre heures. La charge utile recherchait les CLI d’IA installées localement et, selon Wiz, les lançait avec --dangerously-skip-permissions, --yolo ou --trust-all-tools afin d’inventorier les secrets. Selon GitGuardian, cela n’a réussi que sur 95 des 366 systèmes cibles (environ 26 %) ; au total, 2 349 secrets uniques ont été rendus publics.
- 2Hameçonnage, clipper cryptochalk/debug – 8 septembre 2025
Un mainteneur s’est laissé piéger par un e-mail d’hameçonnage provenant de support@npmjs[.]help ; le domaine avait été enregistré le 5 septembre 2025. Des versions malveillantes de 18 paquets populaires (Aikido ; Socket compte 19 versions), totalisant selon Aikido plus de 2 milliards de téléchargements hebdomadaires, remplaçaient dans le navigateur des adresses de portefeuilles en interceptant fetch, XMLHttpRequest et window.ethereum.
- 3Ver se propageant via des tokens volésShai-Hulud – septembre 2025
Un ver auto-réplicant injectait des scripts post-install, recherchait des secrets avec TruffleHog, dans les variables d’environnement et les métadonnées cloud, et publiait d’autres paquets à l’aide de tokens npm dérobés. GitHub a supprimé plus de 500 paquets compromis ; Wiz fait remonter la campagne à des identifiants issus de s1ngularity.
- 4preinstall et porte dérobée de runnerShai-Hulud 2.0 – à partir du 24 novembre 2025
La deuxième vague se déclenchait dès la phase preinstall, déguisée en installateur Bun, enregistrait les hôtes infectés comme runners GitHub auto-hébergés et a créé, selon Wiz, plus de 25 000 dépôts malveillants. Lorsqu’elle ne parvenait ni à voler des identifiants ni à exfiltrer des données, elle tentait, selon Unit 42, de détruire le répertoire personnel.
- 5Poste du mainteneur compromisaxios – 31 mars 2026
Après une ingénierie sociale et l’infection de son poste par un RAT (cheval de Troie d’accès à distance), axios 1.14.1 et 0.30.4 ont été publiés via le compte personnel du mainteneur principal, avec une dépendance supplémentaire qui chargeait en plusieurs étapes d’autres logiciels malveillants, RAT compris – pendant environ trois heures. Dans son alerte du 20 avril 2026, la CISA a expressément recommandé ignore-scripts=true et min-release-age=7 (jours) dans le .npmrc ainsi qu’une MFA résistante à l’hameçonnage.
- 6Provenance valide, l’agent comme lieu de persistanceTanStack / Mini Shai-Hulud – 11 mai 2026
Via un workflow pull_request_target et un cache Actions empoisonné, des attaquants ont lu dans la mémoire du runner le token OIDC destiné au Trusted Publishing et publié 84 versions malveillantes de 42 paquets @tanstack – avec une provenance SLSA Build Level 3 valide (StepSecurity). Pour assurer sa persistance, le logiciel malveillant écrivait dans .claude/settings.json un hook SessionStart qui exécute node .vscode/setup.mjs à chaque démarrage de Claude Code, ainsi qu’une tâche VS Code avec runOn: folderOpen.
Deux leçons
Premièrement : la provenance – la preuve signée indiquant de quel dépôt et de quel build provient un paquet – atteste l’origine, pas l’innocuité. En substance, selon StepSecurity, la provenance SLSA confirme quel pipeline a produit un artefact – et non s’il s’est comporté comme prévu. Dans le cas Red Hat « Miasma », 32 paquets manipulés portaient eux aussi des signatures valides, car les attaquants avaient utilisé la voie de publication OIDC légitime (Microsoft, 2 juin 2026). La documentation de npm précise elle-même que la provenance ne garantit pas un contenu exempt de code malveillant.
Deuxièmement : les tokens sont la monnaie de la propagation. La plupart de ces charges utiles recherchaient des identifiants npm, GitHub, cloud ou d’API de LLM et utilisaient des droits de publication pour la vague suivante. Appréciation de VamiSec : chaque session d’agent dans laquelle des tokens en clair, des profils cloud ou des droits d’écriture sur un registre sont accessibles est un point de départ possible d’une telle vague. Mini Shai-Hulud montre en outre que la configuration de l’agent elle-même devient un lieu de persistance.
Le harness est la surface d’attaque
Les attaques contre des agents de codage documentées ici ne cassent aucun modèle. Elles exploitent la confiance – accordée aux fichiers de contexte, aux descriptions d’outils, aux configurations et à la logique d’approbation.
Dans son cadre du 28 juillet 2026, HiddenLayer place une thèse au centre : la surface d’attaque essentielle d’un agent de codage n’est pas le modèle, mais son harness – prompts, outils, skills, serveurs MCP et logique d’orchestration autour du modèle. HiddenLayer voit la racine des attaques dans une confiance mal placée. Dès le 16 juillet 2026, l’entreprise avait classé chaque source lue par un agent comme point d’entrée possible d’une injection de prompt indirecte.
> 30vulnérabilités dans des IDE d’IA, dont 24 avec CVE (IDEsaster, 6 décembre 2025)
13,4 %534 des 3 984 Agent Skills examinés présentent au moins une constatation critique (Snyk)
76skills ou charges utiles dont le caractère malveillant est confirmé (Snyk, 5 février 2026)
Classes d’attaques documentées
| Attaque (source, date) | Composant du harness exploité | Référence OWASP |
|---|---|---|
| Injection de prompt cachée dans Cursor (HiddenLayer, 31 juillet 2025) | Un commentaire HTML caché dans un README utilise les tokens de contrôle du prompt système pour passer pour une instruction de l’utilisateur ; contournement de la liste de refus via $(), exfiltration de clés SSH via des outils ne nécessitant pas d’autorisation. Corrigé dans Cursor 1.3 | LLM01, ASI01, ASI02 |
| CopyPasta (HiddenLayer, 4 septembre 2025) | Injection de prompt dans un commentaire caché du README, déguisée en licence ; l’agent la copie dans chaque fichier modifié (Cursor, mais aussi Windsurf, Kiro, Aider) | LLM01, ASI01, ASI06 |
| Rules File Backdoor (Pillar Security, 18 mars 2025) | Fichiers de règles de Cursor et de GitHub Copilot contenant des caractères Unicode invisibles ; pas de CVE, les deux éditeurs considérant que cela relève de la responsabilité de l’utilisateur | LLM01, ASI01, ASI06 |
| Tool Poisoning, Rug Pull (Invariant Labs, avril 2025) | Instructions cachées dans les descriptions d’outils MCP ; un rug pull modifie la description après l’approbation. Démo : l’agent a lu ~/.cursor/mcp.json et ~/.ssh/id_rsa | ASI02, ASI04 |
| Toxic Agent Flow (Invariant Labs, 26 mai 2025) | Une issue malveillante dans un dépôt public amène l’agent à écrire, via le serveur MCP officiel de GitHub, des contenus privés dans une PR publique – un défaut d’architecture, pas un bug du serveur | ASI01, ASI02 ; scénario OWASP sous ASI04 |
| RCE par approbation automatique, CVE-2025-53773 (GitHub Copilot dans VS Code/Visual Studio ; CVSS 3.1 : 7,8) | Une injection de prompt écrit chat.tools.autoApprove: true dans .vscode/settings.json ; les confirmations disparaissent, les commandes de terminal s’exécutent | LLM01, ASI05 |
| MCPoison, CVE-2025-54136 (Cursor ; CVSS 3.1 : 7,2) | Les entrées MCP n’étaient approuvées que par leur nom de clé ; un commit remplace ensuite la commande. Corrigé dans Cursor 1.3 | ASI04, ASI05 |
| CurXecute, CVE-2025-54135 (Cursor ; CVSS 3.1 : 8,6) | Un message Slack lu via MCP amène l’agent à écrire une entrée mcp.json qui démarre sans approbation – même si la modification est refusée. Correctif en 1.3.9 selon l’entrée CVE, en 1.3 selon les découvreurs | LLM01, ASI01, ASI05 |
| Fichiers de projet dans Claude Code et Codex CLI (2025-2026) | CVE-2025-59536 : du code du projet s’exécutait avant la boîte de dialogue de confiance (CVSS 4.0 : 8,7). CVE-2026-21852 : un paramètre du dépôt pouvait, avant la boîte de dialogue, envoyer la clé d’API à un point de terminaison tiers (CVSS 4.0 : 5,3). CVE-2025-61260 : la configuration du projet lançait des commandes MCP sans approbation (CVSS 3.1 : 9,8, notation CISA-ADP) | ASI04, ASI05 |
| ToxicSkills (Snyk, 5 février 2026) | Skills issus de ClawHub et de skills.sh : injection de prompt dans 91 % des 76 skills dont le caractère malveillant est confirmé, code malveillant dans tous | ASI01, ASI04 |
| Amazon Q pour VS Code 1.84.0 (AWS-2025-015, CVE-2025-8217) | Un token GitHub doté de droits trop étendus dans CodeBuild a permis d’injecter du code ; selon The Register, le prompt devait supprimer des fichiers et des ressources cloud. Selon AWS, il ne s’est pas exécuté en raison d’une erreur de syntaxe ; rien n’a été supprimé | ASI01, ASI02, ASI04 |
LLM01 Prompt Injection, LLM09 Misinformation (OWASP Top 10 for LLM Applications 2025) ; ASI01 Agent Goal Hijack, ASI02 Tool Misuse and Exploitation, ASI04 Agentic Supply Chain Vulnerabilities, ASI05 Unexpected Code Execution (RCE), ASI06 Memory & Context Poisoning (OWASP Top 10 for Agentic Applications 2026). Correspondance : appréciation de VamiSec ; Amazon Q et Toxic Agent Flow selon l’OWASP. CVSS 4.0 et 3.1 ne sont pas directement comparables.
L’OWASP classe les hallucinations de paquets elles-mêmes sous LLM09 Misinformation (« Unsafe Code Generation »), et non sous LLM03 Supply Chain. Dans la liste Agentic, ASI05 couvre le cas où des paquets installés sans vérification exécutent du code malveillant lors de l’installation ou de l’import ; ASI04 recommande entre autres de rechercher les typosquats.
IDEsaster (Ari Marzouk) décrit pour Copilot, Cursor, Windsurf, Claude Code et d’autres IDE d’IA une nouvelle chaîne : injection de prompt → outils → fonctions de base de l’IDE, comme les schémas JSON distants ou des paramètres d’espace de travail écrasés. S’y ajoutent des failles dans la logique d’approbation et de sandbox des CLI d’agents, par exemple une boîte de dialogue de confirmation contournable dans Claude Code (CVE-2025-54795, CVSS 4.0 : 8,7) ou une évasion de sandbox via un répertoire de travail imposé par le modèle dans Codex CLI (CVE-2025-59532, CVSS 4.0 : 8,6).
Idée directrice : la sécurité hors du modèle
La plupart des cas partagent une même structure : le modèle a fait ce que son contexte suggérait. Là où les éditeurs ont apporté des corrections, ce n’était pas au niveau du modèle, mais dans le harness – par une nouvelle approbation des configurations MCP modifiées, la boîte de dialogue de confiance avant toute exécution, la vérification canonique des chemins ou des listes d’autorisation plus restrictives. HiddenLayer intitule d’ailleurs sa couche de surveillance ainsi : la sécurité doit exister en dehors du modèle. Appréciation de VamiSec : traitez les fichiers de règles, les configurations MCP, les hooks et les skills comme du code exécutable – avec revue, gestion de versions et approbation – et toute source lue par l’agent comme une entrée non fiable.
Visibilité : connaître chaque relation de confiance
On ne peut sécuriser que ce que l’on connaît. La première couche recense les agents, les modèles, les composants du harness, les droits et les dépendances – y compris les outils que personne n’a déclarés.
Ce que recommande HiddenLayer (pratique)
HiddenLayer intitule la première couche de son cadre du 28 juillet 2026 « Understand Every Trust Relationship » – comprendre chaque relation de confiance. Elle porte sur quatre objets :
- Tous les agents, modèles, harnesses, outils, serveurs MCP et skills utilisés – y compris, expressément, l’IA fantôme (shadow AI).
- Les autorisations de chaque agent et les systèmes qu’il peut atteindre.
- L’origine et l’intégrité des outils, des skills et des services externes.
- Les interactions à l’exécution entre agents, outils, dépôts et systèmes externes.
L’origine et l’intégrité ne sont pas une simple formalité : les serveurs MCP distants peuvent changer sans que l’organisation s’en aperçoive (HiddenLayer, 16 juillet 2026). Un inventaire qui ne contient que des noms devient donc obsolète sans que personne ne le remarque. Contre l’IA fantôme, le BSI et l’ANSSI recommandent des comptes d’entreprise contrôlés plutôt que des accès privés, ainsi que des règles claires sur les outils pouvant être utilisés avec quelles données. Dans sa recommandation juridiquement non contraignante sur les gestionnaires de paquets du 10 mars 2026, l’ENISA conseille en outre d’assurer la visibilité sur tous les paquets que sélectionnent les outils d’IA.
Mise en œuvre : nomenclature des agents et SBOM (recommandation VamiSec)
Nous recommandons de tenir l’inventaire sous la forme d’une nomenclature des agents (AI-BOM) : un répertoire lisible par machine qui consigne, pour chaque agent, l’outil et sa version, le modèle et le fournisseur, le mode de fonctionnement, les serveurs MCP et skills connectés avec leur version ou leur hachage, les fichiers de règles ainsi que l’identité utilisée. S’y ajoute la SBOM (Software Bill of Materials, nomenclature de tous les composants logiciels) de chaque release. En cas d’incident, les deux répondent à la même question : où se trouve le composant concerné ?
| Quoi recenser | Source des données | Responsable |
|---|---|---|
| Agents et harness : outil, version, mode | Distribution logicielle, inventaire des terminaux, listes d’extensions des IDE | Équipe plateforme |
| Modèles et fournisseurs | Contrats, achats, logs de la passerelle IA ou du proxy | Achats avec l’AppSec |
| Serveurs MCP, skills, fichiers de règles | Fichiers de configuration dans les dépôts et les répertoires personnels, p. ex. mcp.json, settings.json, AGENTS.md | Responsables des dépôts |
| Identités et droits des agents | Fournisseur d’identité, gestion des tokens du registre, de la plateforme Git et du cloud | IAM |
| Dépendances | Génération de SBOM dans le pipeline CI, lockfiles | Équipe produit |
| IA fantôme | Logs DNS et proxy comparés à la liste d’autorisation | Sécurité de l’information |
| Interactions à l’exécution | Télémétrie des hooks des agents, logs d’audit, EDR | SOC |
Recommandation VamiSec. Adaptez les rôles à votre organisation – l’essentiel est un responsable nommé pour chaque ligne.
La profondeur de la SBOM mérite de la précision. À l’annexe I, partie II, point 1, le CRA exige une SBOM dans un format courant et lisible par machine couvrant au minimum les dépendances de premier niveau – applicable à partir du 11 décembre 2027 ; il n’impose actuellement aucun format particulier. La BSI TR-03183-2 (version 2.1.0) exige en revanche, pour les SBOM conformes à la TR, une résolution récursive et cite CycloneDX à partir de 1.6 ou SPDX à partir de 3.0.1. Du code malveillant peut arriver par des dépendances transitives : la version malveillante axios 1.14.1 ajoutait la dépendance plain-crypto-js, qui chargeait d’autres étapes malveillantes (CISA, 20 avril 2026). Nous recommandons donc la SBOM récursive comme standard de travail – en tant que bonne pratique, et non comme obligation du CRA. Selon l’ENISA (SBOM Adoption State of Play, juin 2026), 24 % des répondants ont besoin d’une analyse en profondeur complète, mais seuls 14 % l’obtiennent.
Lien avec la chaîne d’attaque
La visibilité n’est pas un point de rupture, mais la condition de tous les autres. Elle complique l’étape 03 (Adoption), car les nouveaux paquets, serveurs MCP et skills sont repérés. Sans inventaire, les listes d’autorisation, l’isolation et la surveillance ne peuvent pas être appliquées de manière exhaustive. Après un incident, elle limite l’étape 07 (Propagation) : les dépôts, hôtes et tokens concernés peuvent être nommés immédiatement, au lieu de devoir d’abord être recherchés.
Preuve : nomenclature des agents
Inventaire versionné avec date de mise à jour, personne responsable pour chaque entrée et rapprochement régulier avec l’usage réel.
Preuve : configuration de référence
Serveurs MCP et skills approuvés pour chaque agent, avec version ou hachage ; les écarts sont documentés.
Preuve : SBOM par release
Format, profondeur et moment de génération traçables, archivés avec la documentation technique.
Preuve : rapprochement de l’IA fantôme
Analyse périodique des données proxy ou DNS par rapport à la liste d’autorisation, avec les mesures prises.
Ancrage réglementaire : les entités financières soumises au cadre DORA complet doivent, en vertu de l’art. 10(2)(d) du règlement délégué (UE) 2024/1774 (RTS sur la gestion du risque lié aux TIC), suivre quelles bibliothèques tierces et open source utilisent les services TIC soutenant des fonctions critiques ou importantes – y compris leurs versions et mises à jour. Le Grundschutz++ du BSI prévoit, en tant qu’exigence SOLLTE (« devrait »), de documenter les composants par une SBOM avant la release (DEV.4.3, avec renvoi à la TR-03183-2).
Contrôle : limiter les dommages d’une compromission
Tôt ou tard, un agent lit une instruction manipulée ou suggère un mauvais paquet. La deuxième couche fait en sorte qu’il ait alors peu de droits, atteigne peu de choses et ne trouve rien de précieux.
Ce que recommande HiddenLayer (pratique)
Sous « Limit the Impact of Compromise », HiddenLayer cite cinq mesures : le moindre privilège par défaut, l’approbation humaine pour les actions lourdes de conséquences, l’accès aux seuls outils, serveurs MCP et skills approuvés, la limitation des connexions réseau sortantes inutiles ainsi que l’examen des prompts système et des configurations par défaut avant le déploiement. L’OWASP Top 10 for Agentic Applications 2026 étend le moindre privilège à la « Least Agency » : pas d’autonomie là où elle n’est pas nécessaire. La ligne directrice publiée le 1er mai 2026 par la CISA, la NSA et des autorités partenaires des Five Eyes recommande elle aussi de ne pas accorder aux agents un large accès aux données sensibles et aux systèmes critiques.
Des vulnérabilités documentées montrent que les valeurs par défaut ne sont pas automatiquement sûres : avant la version 1.0.4, Claude Code contenait une liste trop large de commandes « sûres », par laquelle des contenus de fichiers pouvaient être exfiltrés sans confirmation (CVE-2025-55284, CVSS 4.0 : 7,1). Chez GitHub Copilot (VS Code/Visual Studio), l’obligation de confirmation pouvait être entièrement désactivée par injection de prompt (CVE-2025-53773, voir chapitre 5).
Mise en œuvre en six étapes (recommandation VamiSec)
- 1Environnement d’exécutionIsoler
Les agents disposant d’un accès au terminal et les builds s’exécutent dans des conteneurs, des devcontainers ou des VM – sans identifiants de l’hôte montés, sans agent SSH ni profils cloud. Si du code malveillant s’exécute, il trouve aussi peu que possible qui vaille la peine d’être volé.
- 2IdentitéAttribuer une identité propre
L’agent ne travaille pas avec les tokens personnels de la développeuse, mais avec une identité propre aux droits étroitement définis : uniquement les dépôts et scopes dont la tâche a besoin, aucun droit de publication.
- 3TokensIdentifiants à courte durée de vie
Publier ses propres paquets via Trusted Publishing (OIDC) plutôt qu’avec des tokens enregistrés – disponible pour tous sur npm depuis le 31 juillet 2025, à partir de npm CLI 11.5.1. Là où des tokens subsistent, choisir la durée de validité la plus courte possible en pratique.
- 4Outils, MCP, skillsImposer des listes d’autorisation
Seuls les outils, serveurs MCP et skills approuvés peuvent être chargés ; les paquets passent exclusivement par le proxy interne (voir Hygiène des dépendances).
- 5RéseauLimiter l’egress
Trafic sortant uniquement vers des destinations approuvées. Même des outils anodins transportent des données : HiddenLayer a montré en 2025 comment une clé SSH a été exfiltrée via l’URL d’image d’un diagramme.
- 6ConfigurationImposer les paramètres de manière centralisée
Approbation automatique désactivée ; approbation requise pour les installations, les commandes réseau et les accès en écriture à la configuration de l’agent. Bloquer les options comme --dangerously-skip-permissions, --yolo ou --trust-all-tools – selon Wiz, le logiciel malveillant s1ngularity appelait les CLI d’IA locales précisément avec celles-ci. Là où l’outil prend en charge des politiques gérées de manière centralisée, celles-ci devraient primer sur les paramètres issus du dépôt.
7 joursExpiration par défaut des nouveaux tokens npm granulaires avec droit d’écriture (depuis mi-octobre 2025)
90 joursDurée de validité maximale de ces tokens
2 hDurée de validité des tokens de session après npm login
9 déc. 2025Tokens npm classiques définitivement révoqués
L’approbation humaine n’est efficace que si la personne voit ce qu’elle approuve. Dans la démo de tool poisoning d’Invariant Labs, la boîte de dialogue de confirmation n’affichait pas les entrées complètes. Le BSI recommande expressément une confirmation par l’utilisateur avant qu’un LLM n’exécute des fonctions (Evasion Attacks on LLMs, 6 novembre 2025). Nous recommandons des boîtes de dialogue qui affichent intégralement la commande, le nom du paquet et la destination – et des approbations peu nombreuses mais prises au sérieux plutôt que des confirmations permanentes.
Lien avec la chaîne d’attaque
Cette couche fournit le plus grand nombre de points de rupture : l’isolation sans secrets de l’hôte interrompt l’étape 06 (Accès), le contrôle de l’egress l’étape 07 (Propagation), la liste d’autorisation dans le proxy l’étape 04 (Résolution). L’approbation humaine complique l’étape 03 (Adoption). Des tokens à courte durée de vie et aux droits étroits limitent la portée d’identifiants volés.
Preuves pour les auditeurs
- Configuration imposée de manière centralisée pour chaque agent (approbation automatique, obligations d’approbation, options bloquées) avec historique des modifications.
- Définition de l’image ou du devcontainer sans identifiants montés, accompagnée des règles d’egress.
- Inventaire des tokens avec identité, scope et date d’expiration ; Trusted Publishing pour les paquets propres.
- Échantillons tirés des journaux d’approbation.
Ancrage réglementaire : pour les entités essentielles et importantes, l’art. 21(2)(e) NIS2 et le § 30, al. 2, phrase 2, n° 5 du BSIG (loi allemande sur le BSI) exigent des mesures de sécurité dans l’acquisition, le développement et la maintenance. Le règlement d’exécution (UE) 2024/2690 impose, pour les types d’entités qui y sont mentionnés, par exemple les fournisseurs de services cloud et de services gérés, des exigences de sécurité applicables aux environnements de développement (annexe, point 6.2). Les entités financières soumises au cadre DORA complet doivent séparer l’approbation des modifications de leur demande et de leur mise en œuvre (art. 17(1) RTS 2024/1774 relatif à l’art. 9(4)(e) DORA) – un agent qui approuve ses propres modifications n’est guère compatible avec cette exigence (appréciation de VamiSec).
Validation : vérifier les composants au lieu de se fier à des suppositions
Ce qu’un agent charge, exécute ou écrit doit être vérifié avant de produire un effet – les serveurs MCP et les skills tout autant que les paquets et le code généré.
Ce que recommande HiddenLayer (pratique)
- Tester les agents avant le déploiement avec des entrées adverses (red teaming).
- Vérifier les actions proposées avant leur exécution.
- Examiner les outils et skills de tiers – y compris les métadonnées cachées.
- Approuver des versions précises au lieu de faire durablement confiance à « latest ».
Le dernier point vise le rug pull : un serveur MCP modifie la description de ses outils après avoir été approuvé (Invariant Labs, 1er avril 2025). MCPoison a montré le même schéma au niveau de la configuration : après la première approbation, un commit suffisait pour remplacer la commande d’une entrée MCP sans nouvelle demande de confirmation (CVE-2025-54136, voir chapitre 5). Selon The Register, le paquet npm non officiel postmark-mcp a livré 15 versions anodines avant que la version 1.0.16 n’envoie chaque e-mail sortant en copie cachée à une adresse tierce.
Les métadonnées cachées constituent le deuxième axe. Les instructions figurant dans les descriptions d’outils sont invisibles pour les utilisateurs, mais le modèle les lit (Invariant Labs) ; les fichiers de règles peuvent contenir des instructions sous forme de caractères Unicode invisibles (Pillar Security, 18 mars 2025). Parmi 3 984 Agent Skills examinés par Snyk, 76 étaient avérés malveillants (5 février 2026, détails au chapitre 5).
Mise en œuvre : approbation par composant (recommandation VamiSec)
| Composant | Quoi vérifier | Artefact d’approbation |
|---|---|---|
| Serveurs MCP | Origine, code source ou image, descriptions d’outils complètes, droits et destinations réseau demandés | Entrée dans la liste d’autorisation avec version et hachage ; toute modification impose une nouvelle approbation |
| Skills et fichiers de règles | Texte en clair des instructions, caractères invisibles, commandes d’installation intégrées, références externes | Revue comme pour du code, CODEOWNERS, commit épinglé |
| Paquets | Existence, ancienneté, diffusion, mainteneurs, scripts d’installation | Revue des dépendances dans la pull request, entrée dans le proxy |
| Configuration de l’agent | Approbation automatique, hooks, entrées MCP, point de terminaison du modèle | Rapprochement avec la configuration centrale avant le déploiement |
| Code généré par IA | Les mêmes contrôles que pour le code humain : revue, SAST, DAST, tests | Contrôles obligatoires dans le pipeline, aucune exception pour les PR d’agents |
L’OWASP Top 10 for Agentic Applications 2026 (ASI04) recommande également l’épinglage par hachage et par ID de commit.
Le code généré par IA ne bénéficie d’aucun régime particulier. Le BSI et l’ANSSI constatent que les assistants de codage IA ne remplacent pas les développeurs expérimentés et que les gains de productivité doivent être compensés par davantage d’assurance qualité (4 octobre 2024). Les fichiers d’instructions comme AGENTS.md aident, mais ne constituent pas un contrôle. Le guide de l’OpenSSF pour les assistants de code (1er août 2025) recommande l’instruction de n’ajouter aucune dépendance susceptible d’être malveillante ou hallucinée. Cela peut réduire le risque – mais le modèle peut ignorer la règle, et des instructions de skill d’apparence anodine peuvent même renforcer les hallucinations de paquets (Hsu et al., accepté pour EMNLP 2026).
Red teaming avant le déploiement
- 1Définir les scénarios
Des tâches qui provoquent des suggestions de paquets ; des README, issues et descriptions d’outils préparés avec des instructions cachées ; des tentatives de modifier les paramètres de l’agent ou de lire des fichiers d’identifiants.
- 2Exécuter dans la configuration cible
Avec exactement le modèle, le harness, les serveurs MCP et les skills qui doivent être déployés – dans un environnement isolé.
- 3Mesurer
À quelle fréquence l’agent invente-t-il des paquets ? Suit-il des instructions injectées ? L’approbation, le proxy et l’isolation de la couche 2 sont-ils efficaces ?
- 4Répéter
À chaque changement de modèle, de version d’outil ou d’intégration, et comme test de non-régression après des incidents.
Lien avec la chaîne d’attaque : la validation complique les étapes 01 (Invention) et 03 (Adoption), car les noms inventés sont repérés lors des tests et des revues. L’approbation des versions empêche qu’un composant modifié en silence soit chargé à l’étape 04 (Résolution). Preuves pour les auditeurs : rapport de red team pour chaque configuration d’agent, liste d’autorisation avec versions et hachages, comptes rendus de revue des nouvelles dépendances, preuves de test pour le code généré par IA.
Ancrage réglementaire : pour les entités financières soumises au cadre DORA complet, l’art. 16 du RTS 2024/1774 exige des revues de code source avec tests statiques et dynamiques (par. 3), des tests de sécurité des progiciels au plus tard lors de la phase d’intégration (par. 4) et – dans la mesure du possible – l’analyse et le test du code source open source avant la mise en production (par. 8). Le CRA exige des fabricants, à partir du 11 décembre 2027, des tests et examens de sécurité efficaces et réguliers (annexe I, partie II, point 3).
Surveillance : la sécurité n’a pas sa place dans le modèle
Un modèle n’applique aucune politique de sécurité. La quatrième couche observe donc de l’extérieur ce que font réellement les agents, les gestionnaires de paquets et les builds.
HiddenLayer justifie la quatrième couche en quelques mots : les modèles de langage sont conçus pour suivre des instructions – pas pour faire respecter des politiques de sécurité (en substance). Un contrôle qui ne figure que dans le prompt tombe à la première injection de prompt réussie. La surveillance s’appuie donc sur le système d’exploitation, le réseau, le pipeline et le harness. L’OWASP Top 10 for Agentic Applications qualifie une forte observabilité de « non négociable ».
Ce que HiddenLayer veut observer (pratique)
- Mouvements de données sensibles
- Utilisation des outils et opérations sur les fichiers
- Tentatives d’élévation de privilèges
- Activité d’IA fantôme
- Utilisation des API et consommation de calcul anormale
Pistes de détection tirées d’incidents réels (recommandation VamiSec)
Les campagnes des derniers mois fournissent des schémas concrets. Selon StepSecurity, la vague Mini Shai-Hulud autour de TanStack s’est ancrée via un hook SessionStart de Claude Code et une tâche VS Code (détails au chapitre 4). Selon Socket, SANDWORM_MODE inscrivait son propre serveur MCP dans la configuration de Claude Code, de Cursor et d’autres outils. Selon Microsoft, Miasma maintenait un canal d’exfiltration dormant via api.anthropic.com ; selon Snyk, le domaine d’exfiltration des releases de litellm avait été enregistré la veille. Plusieurs vagues lançaient Bun comme environnement d’exécution – un moyen de contourner une surveillance centrée sur Node.
| Signal | Source | Réaction |
|---|---|---|
| node, python ou bun lit, pendant une installation, des fichiers d’identifiants comme ~/.npmrc, ~/.aws/credentials, ~/.ssh/, ~/.claude.json ou .env | EDR, audit des accès aux fichiers sur les postes de travail et les runners | Arrêter le processus, isoler l’hôte, effectuer la rotation des tokens accessibles |
| Hooks, entrées MCP, valeurs d’approbation automatique ou tâches avec runOn: folderOpen nouveaux ou modifiés | Surveillance de l’intégrité des fichiers, diff dans la pull request, télémétrie des hooks | Annuler la modification, en clarifier l’origine, examiner l’hôte |
| Connexions depuis le build ou l’agent vers des domaines nouvellement enregistrés ou inconnus | Logs DNS et proxy | Bloquer et évaluer la destination, examiner la session |
| Élévation de privilèges : nouvelle règle sudo, /etc/hosts modifié, runner auto-hébergé nouvellement enregistré | EDR, journal d’audit de la plateforme Git | Isoler l’hôte, supprimer le runner, examiner les workflows |
| Environnement d’exécution inattendu comme Bun dans le pipeline ou nouveaux fichiers .pth dans site-packages | Télémétrie des processus, logs CI, surveillance de l’intégrité des fichiers | Interrompre le job, identifier le paquet déclencheur |
| Hausse brutale de la consommation d’une clé d’API de modèle ou accès à des services d’IA non approuvés | Facturation, passerelle IA, proxy | Bloquer la clé, clarifier l’usage |
Schémas tirés de StepSecurity (11 mai 2026), Socket (20 février 2026), Microsoft (2 juin 2026), Snyk (24 mars 2026) et Wiz (24 novembre 2025, runners auto-hébergés lors de Shai-Hulud 2.0). Correspondance et réactions : recommandation VamiSec.
Télémétrie via les hooks des agents
Plusieurs agents de codage proposent des interfaces de hooks qui lancent des programmes propres lors des appels d’outils. Nous recommandons de les utiliser pour journaliser de manière centralisée les appels d’outils, les commandes shell et les accès aux fichiers, et pour examiner les appels risqués avant leur exécution. Mais cette même interface est une voie de persistance, comme le montre la vague TanStack ; dans Claude Code, des hooks issus de fichiers de projet se sont un temps exécutés sans consentement (Check Point, corrigé le 26 août 2025). Les hooks relèvent donc de la configuration gérée de manière centralisée – toute modification les concernant est en soi un signal d’alerte.
Lien avec la chaîne d’attaque : la surveillance n’interrompt de manière fiable aucune étape, mais elle réduit la durée pendant laquelle les étapes 05 (Exécution), 06 (Accès) et 07 (Propagation) passent inaperçues. Les incidents montrent à quel point les fenêtres sont courtes : les versions malveillantes de TanStack ont été marquées comme obsolètes au bout d’environ 1,7 heure, les versions d’axios supprimées au bout d’environ trois heures. Nous en concluons que la détection propre doit réagir en heures, pas en jours.
Ancrage réglementaire : le règlement d’exécution (UE) 2024/2690 exige, pour les types d’entités qui y sont mentionnés, une protection contre les logiciels malveillants et non autorisés, y compris des mesures de détection (annexe, point 6.9) ; pour les autres entités NIS2, il sert de référence. La ligne directrice des Five Eyes sur l’IA agentique (1er mai 2026) mentionne expressément la surveillance continue.
Preuve : concept de journalisation
Quelles données des agents, des builds et des terminaux sont collectées, avec durée de conservation et règles d’accès.
Preuve : règles de détection
Règles documentées avec preuve de test, par exemple un accès simulé à un fichier d’identifiants leurre.
Preuve : journaux d’alertes
Échantillons avec délai de réaction, évaluation et résultat.
Gouvernance : la sécurité a besoin de responsables
Les contrôles techniques se dégradent lorsque personne n’en est responsable. La cinquième couche ancre les agents de codage dans des responsabilités, des politiques et des processus de gestion des incidents.
Ce que recommande HiddenLayer (pratique)
Sous « Security Requires Ownership », HiddenLayer cite quatre points : une personne responsable (owner) pour chaque agent utilisé en production, l’intégration des agents de codage dans les modèles de menaces et les programmes de gouvernance de l’IA existants, des procédures de réponse aux incidents propres à l’IA agentique et le réexamen régulier des autorisations et des intégrations de confiance. La ligne directrice des Five Eyes du 1er mai 2026 recommande elle aussi d’intégrer les risques de l’IA agentique dans les cadres existants et de pratiquer la modélisation des menaces.
Pour les entités NIS2, c’est une tâche de direction. Les organes de direction doivent approuver les mesures de gestion des risques, superviser leur mise en œuvre et peuvent être tenus responsables (art. 20(1) et (2) NIS2). En Allemagne, le § 38 BSIG oblige les organes de direction des entités essentielles et importantes à assurer la mise en œuvre, la supervision et des formations régulières ; la responsabilité est régie par le droit des sociétés. Une politique relative aux outils de codage IA devrait donc être approuvée par la direction.
Composants d’une politique relative aux outils de codage IA (recommandation VamiSec)
- Outils, modèles et modes de fonctionnement autorisés ; utilisation uniquement via des comptes d’entreprise.
- Classes de données : quelles informations peuvent être saisies dans quel outil.
- Niveaux d’autonomie : ce qu’un agent peut faire seul, ce qui nécessite une approbation, ce qui est interdit.
- Règles relatives aux paquets : approvisionnement uniquement via le proxy interne, délai de carence, aucun script d’installation sans approbation.
- Processus d’approbation des serveurs MCP, skills et fichiers de règles, lié à une version ou à un hachage.
- Principe des quatre yeux pour les merges – y compris pour les pull requests d’agents.
- Journalisation, procédure d’exception et recertification des droits et des intégrations, par exemple tous les six mois.
- Formation : depuis le Digital Omnibus (règlement (UE) 2026/1744, en vigueur depuis le 27 juillet 2026), l’art. 4 de l’AI Act exige des fournisseurs et des déployeurs des mesures de soutien à la maîtrise de l’IA, mais pas un niveau garanti.
Dans le modèle de menaces, l’agent apparaît comme un acteur à part entière, doté de droits ; les fichiers de règles, les skills, les serveurs MCP et les sources de paquets sont des frontières de confiance. Le projet de l’ENISA sur le développement logiciel assisté par l’IA (v0.4, septembre 2026) décrit à cet effet des menaces STRIDE comme l’introduction subreptice de paquets, de skills ou de fichiers d’instructions malveillants.
Playbook de réponse aux incidents : paquet malveillant installé ou agent compromis
- 1EndiguerIsoler
Déconnecter du réseau les hôtes, conteneurs et runners concernés, mettre fin aux sessions d’agents en cours, suspendre les pipelines utilisant le paquet. Préserver les traces avant toute réinstallation.
- 2EndiguerRenouveler les identifiants
Tous les secrets accessibles : tokens de registre, tokens de la plateforme Git, accès cloud et Vault, clés d’API de modèles. Après Shai-Hulud, la CISA a expressément conseillé leur rotation. Sans l’inventaire des tokens des couches 1 et 2, cette étape reste lacunaire.
- 3AssainirVérifier les lockfiles et les caches
Quels dépôts, lockfiles, caches de paquets et de CI contiennent les versions concernées ? Chez TanStack, l’attaque est passée par un cache GitHub Actions empoisonné – les caches font partie de l’assainissement.
- 4AssainirRechercher la persistance dans la configuration de l’agent
Hooks et entrées MCP dans les configurations utilisateur et projet, tâches VS Code avec runOn: folderOpen, nouveaux runners auto-hébergés et workflows, fichiers .pth. En cas de doute, réinstaller plutôt que nettoyer.
- 5NotifierVérifier les obligations de notification
Depuis le 11 septembre 2026, les fabricants soumis au CRA notifient les vulnérabilités activement exploitées de leurs produits via la plateforme unique de signalement (Single Reporting Platform), simultanément au CSIRT coordinateur et à l’ENISA : alerte précoce sous 24 heures, notification sous 72 heures, rapport final au plus tard 14 jours après la mise à disposition d’une mesure corrective. Pertinent si du code malveillant a pu se retrouver dans un produit livré (appréciation de VamiSec, à vérifier juridiquement au cas par cas). Les entités NIS2 et DORA vérifient parallèlement leurs propres circuits de notification.
- 6ApprendreRetour d’expérience
Documenter la cause, l’étape atteinte et les points de rupture manquants, recertifier les droits et les intégrations, informer les opérateurs de registre et les mainteneurs.
Lien avec la chaîne d’attaque : la gouvernance complique l’étape 07 (Propagation), car il est clarifié à l’avance qui renouvelle quels tokens, qui bloque quoi et qui notifie qui. Elle maintient en même temps les autres couches à jour – sans recertification, les droits et les intégrations s’étendent insidieusement.
Preuve : registre des responsables
Chaque agent en production avec personne responsable, finalité, droits et prochaine date de réexamen.
Preuve : politique approuvée
Décision de la direction avec version et champ d’application, accompagnée des attestations de formation.
Preuve : recertification
Comptes rendus du réexamen des droits et des intégrations, y compris les accès retirés.
Preuve : playbook exercé
Exercice sur table ou technique avec date, participants et améliorations qui en découlent.
Hygiène des dépendances : ce que npm, pnpm, Yarn, Bun, pip et uv savent faire aujourd’hui
Les gestionnaires de paquets se sont nettement renforcés en 2025 et 2026 : délais d’attente pour les nouvelles versions et scripts d’installation bloqués. Mais une grande partie de ces fonctions n’est pas activée par défaut – c’est à vous de les activer.
Pour l’approvisionnement en paquets, le délai de carence – un âge minimal des nouvelles versions avant leur installation – et le blocage des scripts d’installation portent l’essentiel de la charge. Faites attention aux unités.
| Outil | Délai de carence (à partir de la version) | Par défaut (octobre 2026) | Scripts d’installation |
|---|---|---|---|
| npm | min-release-age en jours (11.10.0) | aucun | à partir de v12 (8 juillet 2026), allowScripts désactivé : scripts des dépendances uniquement après approbation via npm approve-scripts ; --allow-git=none et --allow-remote=none par défaut |
| pnpm | minimumReleaseAge en minutes (10.16) | 1 jour (1440) à partir de pnpm 11 | à partir de v10, aucun script des dépendances ; pnpm 11 : strictDepBuilds, approbation via allowBuilds |
| Yarn | npmMinimalAgeGate (4.10), aujourd’hui sous forme de durée comme 1d | 1d à partir de 4.15 selon le changelog ; la documentation indique 1w | à partir de 4.14, enableScripts: false |
| Bun | minimumReleaseAge en secondes (1.3) | aucun | uniquement une liste par défaut sélectionnée et trustedDependencies |
| uv | exclude-newer sous forme de durée relative (0.9.17) | aucun | code d’installation et d’import possible – prévoir l’isolation |
| pip | --uploaded-prior-to : date (26.0), durée en jours (26.1) | aucun | code d’installation et d’import possible – prévoir l’isolation |
| Renovate | Presets security:minimumReleaseAgeNpm et …Pypi | 3 jours si le preset est actif | – |
| Dependabot | cooldown en jours dans dependabot.yml (GA le 1er juillet 2025) | 3 jours depuis le 14 juillet 2026, uniquement pour les mises à jour de version | – |
État : notes de version et documentation, vérifiées le 8 octobre 2026. En Python, du code peut s’exécuter dans setup.py lors de l’installation (Check Point, 2024) et dans des fichiers .pth à chaque démarrage de l’interpréteur (litellm 1.82.8).
Deux limites s’y ajoutent. Premièrement, un délai de carence intercepte les versions malveillantes qui, selon pnpm, sont le plus souvent détectées et supprimées en moins d’une heure – mais pas un nom halluciné qu’un attaquant occupe tôt avant d’attendre. Deuxièmement, ignore-scripts est incomplet : les dépendances Git peuvent exécuter du code via leur propre .npmrc (contre-mesure : --allow-git=none à partir de npm 11.10.0), les dépendances URL comme dans le cas PhantomRaven nécessitent --allow-remote=none (à partir de 11.15.0), et aucun blocage de scripts ne couvre le code exécuté à l’import.
Configuration pour les builds et les agents (recommandation VamiSec)
# Builds CI et agents : uniquement via le proxy interne (espace réservé)
registry=https://registry.intern.example/
# aucun script de cycle de vie
ignore-scripts=true
# uniquement des versions de plus de 7 jours (à partir de npm 11.10.0)
min-release-age=7
La CISA a recommandé ces deux valeurs dans son alerte axios du 20 avril 2026 ; dans son alerte Nx Console du 28 mai 2026, elle indiquait au moins trois heures. Avec ignore-scripts, vos propres scripts pre et post sont également supprimés ; npm test et les autres commandes lancées explicitement continuent de fonctionner.
# pyproject.toml : uniquement des versions de plus de 7 jours (à partir de uv 0.9.17)
[tool.uv]
exclude-newer = "7 days"
# Exceptions par paquet : exclude-newer-package
# pip à partir de 26.1 : durée en jours, plus hachages obligatoires
pip install --require-hashes --uploaded-prior-to P7D -r requirements.txt
uv accepte des valeurs comme « 7 days » ou des durées ISO 8601, mais ni mois ni années. pip 26.0 ne connaît que des dates absolues ; l’option n’a d’effet que si l’index fournit les dates de téléversement.
Exempter les mises à jour de sécurité : un délai de carence ne doit pas retarder les correctifs. Dependabot et Renovate le contournent par défaut pour les mises à jour de sécurité, et les gestionnaires de paquets connaissent des listes d’exceptions (min-release-age-exclude, minimumReleaseAgeExclude, minimumReleaseAgeExcludes, exclude-newer-package). PyPI conseille de coupler les délais de carence à des analyses de vulnérabilités.
Lockfiles, revue, proxy, provenance
Dans la CI et les environnements d’agents, n’installer que de manière reproductible : npm ci, pnpm install --frozen-lockfile, pip avec --require-hashes. Dans le cas LiteLLM, selon PyPI, environ 40 à 50 % des installations effectuées pendant la fenêtre d’attaque n’étaient pas épinglées. L’OWASP décrit le cas d’un agent qui régénère un lockfile à partir de spécifications non épinglées et récupère une version mineure compromise – toute nouvelle dépendance et toute modification du lockfile nécessitent donc une approbation nominative lors de la revue des dépendances. Techniquement, un proxy de registre interne doté d’une liste d’autorisation permet de l’imposer ; le BSI et l’ANSSI recommandent une liste d’autorisation des paquets permis. Une simple vérification d’existence ne suffit pas : l’attaquant peut avoir enregistré le nom au préalable (Spracklen et al.).
npm audit signatures vérifie les signatures du registre et les attestations de provenance (à partir de npm 9.5.0) ; depuis le 14 novembre 2024, PyPI prend en charge les attestations selon la PEP 740, que pip et uv ne vérifient pas automatiquement selon Trail of Bits. Les deux attestent l’origine, pas l’innocuité : les paquets malveillants de TanStack et de Miasma portaient eux aussi une provenance ou des signatures valides (voir chapitre 4). C’est utile comme contrôle supplémentaire, mais inadapté comme unique critère d’approbation.
Ancrage réglementaire : la recommandation juridiquement non contraignante de l’ENISA sur les gestionnaires de paquets (10 mars 2026) préconise des registres officiels et vérifiables, des lockfiles et des contrôles d’intégrité dans la CI/CD. Le Grundschutz++ prévoit, en tant qu’exigences SOLLTE, d’interdire les artefacts externes provenant de sources inconnues, de tester leur intégrité et de vérifier les mises à jour de sécurité (DEV.4.2, DEV.4.4, DEV.4.5) ; le Kompendium 2023 exige des sources fiables et l’examen des composants inconnus (CON.8.A6, CON.8.A20). L’art. 21(2)(d) NIS2 et le § 30, al. 2, phrase 2, n° 4 BSIG exigent la sécurité de la chaîne d’approvisionnement ; à partir du 11 décembre 2027, les fabricants soumis au CRA sont tenus à l’obligation de diligence pour les composants tiers en vertu de l’art. 13(5) – expressément aussi pour l’open source.
Ce qu’exigent le CRA, NIS2, DORA et l’AI Act
Qui est responsable lorsqu’un agent d’IA installe un paquet malveillant ? En premier lieu l’entreprise qui intègre ou exploite le composant, pas le registre. Ce qui relève aujourd’hui d’une obligation, ce qui ne s’applique qu’à partir du 11 décembre 2027 et ce qui n’est qu’une ligne directrice.
Le CRA, NIS2 et DORA adoptent une approche similaire : est responsable celui qui intègre le composant ou exploite le système (appréciation de VamiSec). Pour le Cyber Resilience Act (CRA), l’exemple 34 des lignes directrices de la Commission C(2026) 5252 du 27 juillet 2026 l’illustre : un développeur individuel qui publie une bibliothèque open source libre dans un dépôt public de paquets, ainsi que le dépôt lui-même, n’ont aucune obligation au titre du CRA. À partir du 11 décembre 2027, l’obligation de diligence prévue à l’art. 13(5) incombe au fabricant intégrateur, selon une approche fondée sur les risques conformément au considérant 34. Les lignes directrices ne sont pas contraignantes. Que ce soit un humain ou un agent qui a choisi le paquet n’y change rien (appréciation de VamiSec).
Cyber Resilience Act : obligation de notification depuis 2026, obligation de diligence à partir de 2027
- Obligation depuis le 11 septembre 2026 (art. 14(1)–(2)) : notifier les vulnérabilités activement exploitées via la Single Reporting Platform (SRP) au CSIRT et à l’ENISA — alerte précoce sous 24 h, notification sous 72 h, rapport final au plus tard 14 jours après la mise à disposition d’une mesure corrective ; y compris pour les produits déjà sur le marché.
- Obligation à partir du 11 décembre 2027 : diligence à l’égard des composants tiers, y compris les logiciels libres et open source (art. 13(5)), signalement des vulnérabilités des composants à leur fabricant ou mainteneur (par. 6), aucune livraison de produits présentant des vulnérabilités exploitables connues (annexe I, partie I, point 2, a)).
- SBOM : l’annexe I, partie II, point 1, exige au minimum les dépendances de premier niveau ; seule la BSI TR-03183-2 v2.1.0 exige une résolution récursive — bonne pratique, pas une obligation du CRA. Le CRA n’impose aucun format tel que CycloneDX ou SPDX ; aucun acte d’exécution à ce sujet (art. 13(24), disposition facultative) ne figure dans la liste de la Commission (état : 27 juillet 2026).
- Amendes (art. 64(2)) : en cas d’infraction à l’annexe I, à l’art. 13 ou 14, jusqu’à 15 millions d’euros ou 2,5 % du chiffre d’affaires annuel mondial, le montant le plus élevé étant retenu.
NIS2 et BSIG : chaîne d’approvisionnement et développement comme mesures minimales
NIS2 exige la sécurité de la chaîne d’approvisionnement (art. 21(2)(d)) ainsi que la sécurité dans l’acquisition, le développement et la maintenance (point e)). L’art. 21(3), selon lequel les entités tiennent également compte, dans le choix des mesures relatives à la chaîne d’approvisionnement, des procédures de développement sécurisé de leurs fournisseurs directs, ne figure pas littéralement dans le BSIG ; il peut être mobilisé par le biais d’une interprétation conforme à la directive. En Allemagne, le § 30, al. 2, phrase 2, n° 4 et 5 BSIG s’applique depuis le 6 décembre 2025 ; l’organe de direction met en œuvre, supervise et engage sa responsabilité en cas de manquement fautif selon le droit des sociétés (§ 38 BSIG, art. 20 NIS2). Pour des mesures manquantes ou non documentées, le § 65 prévoit jusqu’à 10 millions d’euros (entités essentielles) ou 7 millions d’euros (entités importantes) et, pour un chiffre d’affaires total supérieur à 500 millions d’euros, jusqu’à 2 % ou 1,4 % du chiffre d’affaires total. Le règlement d’exécution (UE) 2024/2690 n’est contraignant que pour les types d’entités énumérés à son art. 1, comme les fournisseurs de services cloud, de centres de données et de services gérés ; pour toutes les autres, il sert de référence.
DORA : les ancrages précis se trouvent dans le RTS
Depuis le 17 janvier 2025, DORA exige que les modifications des systèmes de TIC soient enregistrées, testées, évaluées, approuvées, mises en œuvre et vérifiées (art. 9(4)(e)), et laisse aux entités financières l’entière responsabilité en matière de services TIC (art. 28(1)). Pour les bibliothèques obtenues librement, le RTS 2024/1774 est plus précis (cadre complet, titre II) : suivre les bibliothèques utilisées pour des fonctions critiques ou importantes (art. 10(2)(d)), revues de code avec tests statiques et dynamiques (art. 16(3)), tester les progiciels au plus tard lors de l’intégration (par. 4), protéger l’intégrité du code source (par. 7), examiner le code open source avant la mise en production, dans la mesure du possible (par. 8), séparer l’approbation et la mise en œuvre des modifications (art. 17(1)). Un agent qui fusionne ses propres pull requests ne cadre pas avec ces exigences (appréciation de VamiSec).
AI Act et responsabilité du fait des produits
Au sens de l’AI Act, un assistant de codage n’est généralement pas un système à haut risque, car le développement logiciel ne figure pas à l’annexe III. Pour les entreprises déployeuses, l’art. 4 demeure : depuis le Digital Omnibus (règlement (UE) 2026/1744, en vigueur depuis le 27 juillet 2026), elles doivent prendre des mesures de soutien à la maîtrise de l’IA, sans devoir garantir un niveau. Les obligations relatives aux modèles d’IA à usage général (GPAI) incombent aux fournisseurs de modèles, pas aux utilisateurs. En vertu de la directive sur la responsabilité du fait des produits (UE) 2024/2853, un logiciel est un produit ; pour les produits mis sur le marché après le 9 décembre 2026, le fabricant est responsable envers les personnes physiques y compris des composants défectueux intégrés sous son contrôle, et l’absence de mises à jour de sécurité ne l’exonère pas. La directive produit ses effets via le droit national ; au 8 octobre 2026, la promulgation du projet de loi du gouvernement allemand (BT-Drs. 21/4297) n’a pas pu être vérifiée.
| Texte | Référence | Ce que cela signifie pour les dépendances choisies par l’IA | Date d’application |
|---|---|---|---|
| CRA · obligation | art. 14(1)–(2) | Notifier dans les délais les vulnérabilités activement exploitées via la SRP | 11 septembre 2026 |
| CRA · obligation | art. 13(5) ; annexe I, partie II, point 1 | Diligence fondée sur les risques pour chaque composant tiers intégré ; SBOM au minimum de premier niveau | 11 décembre 2027 |
| NIS2 / BSIG · obligation | art. 21(2)(d), (e) ; § 30, al. 2, phrase 2, n° 4, 5 BSIG | Chaîne d’approvisionnement et développement comme mesures minimales documentées | 6 décembre 2025 |
| Règlement d’exécution 2024/2690 · obligation pour les entités énumérées | annexe, points 5.1.2 a), 6.1.2 c), 6.2, 6.6.1 c), 6.9 | Environnement de développement sécurisé, contrôle d’intégrité, protection contre les logiciels malveillants | en vigueur depuis 2024 |
| DORA · obligation | art. 9(4)(e), art. 28(1) ; RTS 2024/1774 art. 10(2)(d), art. 16, art. 17(1) (titre II) | Une nouvelle dépendance en tant que modification testée et approuvée séparément | 17 janvier 2025 |
| AI Act · obligation | art. 4 tel que modifié par le règlement (UE) 2026/1744 | Promouvoir la maîtrise de l’IA, sans garantie de niveau | 2 février 2025 ; nouvelle version depuis le 27 juillet 2026 |
| Responsabilité du fait des produits · après transposition | directive (UE) 2024/2853, art. 8(1), art. 11(2) | Responsabilité envers les personnes physiques, y compris pour les composants intégrés | produits mis sur le marché après le 9 décembre 2026 |
Colonne 3 : appréciation de VamiSec. Seuls les textes juridiques sont contraignants ; les lignes directrices de la Commission et les documents de l’ENISA et du BSI ne le sont pas. État : 8 octobre 2026.
Lignes directrices : une orientation non contraignante
- ENISA, Secure Use of Package Managers (10 mars 2026) : mentionne expressément le slopsquatting et recommande de rendre visibles les paquets choisis par l’IA et de les vérifier automatiquement dans la CI/CD.
- ENISA, AI-assisted software development (projet v0.4, septembre 2026) : paquets hallucinés, skills et fichiers d’instructions introduits subrepticement — pas encore définitif.
- BSI et ANSSI, AI Coding Assistants (4 octobre 2024) : les hallucinations de paquets comme voie vers la « package confusion » ; contrôle de plausibilité, liste d’autorisation, sandboxing.
- BSI Grundschutz++ DEV.4.2 à DEV.4.5 (exigences SOLLTE) : interdire les artefacts provenant de sources peu fiables ou inconnues, y compris les paquets et les modèles ; SBOM, tests d’intégrité. Kompendium 2023 : CON.8.A6, CON.8.A20.
Le plan à 90 jours et les indicateurs
Trois phases de 30 jours : d’abord voir, puis mettre en place des points de rupture, enfin imposer et mesurer. S’y ajoutent dix indicateurs avec des valeurs cibles recommandées par VamiSec, ainsi que des preuves que vous pouvez présenter aux auditeurs.
Le plan est une recommandation VamiSec et suit la chaîne d’attaque : vous commencez par créer de la visibilité et combler les lacunes évidentes, puis vous mettez en place des points de rupture aux étapes 04 Résolution et 05 Exécution, et enfin vous rendez les règles contraignantes et mesurables. Le point de départ est un état des lieux honnête, par exemple avec l’autoévaluation proposée sur cette page. Les entreprises réglementées commencent par ce qui s’applique déjà : obligations de notification du CRA depuis le 11 septembre 2026, mesures du BSIG depuis le 6 décembre 2025, DORA depuis le 17 janvier 2025.
| Phase | Mesures | Responsable | Résultat |
|---|---|---|---|
| Jours 1–30 : visibilité et mesures immédiates | Inventaire de tous les outils de codage IA, agents, serveurs MCP et skills avec leurs droits ; désactiver de manière centralisée les modes d’approbation automatique ; désactiver les scripts d’installation dans la CI et les environnements d’agents (npm : ignore-scripts, --allow-git=none, --allow-remote=none) ; configurer un délai de carence dans les gestionnaires de paquets et les bots de mise à jour ; recenser les tokens à longue durée de vie et en effectuer la rotation | RSSI avec le responsable AppSec ; équipe plateforme | Inventaire avec responsables, valeurs de départ des indicateurs, configuration immédiate versionnée |
| Jours 31–60 : mettre en place les points de rupture | Proxy de registre avec liste d’autorisation, accès direct au registre bloqué depuis les builds et les agents ; installation uniquement à partir du lockfile ; revue des dépendances avec approbation nominative des nouveaux paquets ; agents dans des environnements isolés avec liste d’autorisation pour l’egress ; serveurs MCP et skills uniquement approuvés et épinglés ; publication via Trusted Publishing | Équipes plateforme et DevOps ; responsable AppSec | Points de rupture à la résolution et à l’exécution, architecture de référence du sandbox des agents |
| Jours 61–90 : imposer et mesurer | Adopter la politique relative aux outils de codage IA ; contrôles rendus obligatoires dans la protection des branches ; journaliser de manière centralisée les actions des agents ; red teaming avec injection de prompt et fichiers de règles piégés ; exercice d’incident avec rotation des tokens et circuit de notification CRA ; premier rapport d’indicateurs | Head of Engineering avec le RSSI ; approbation par l’organe de direction | Politique approuvée, compte rendu d’exercice, rapport d’indicateurs à l’organe de direction |
Les phases, les responsables et l’ordre constituent une recommandation VamiSec. npm : --allow-git à partir de 11.10.0, --allow-remote à partir de 11.15.0 ; dans npm v12 (8 juillet 2026), les deux sont réglés sur none par défaut, et les scripts d’installation des dépendances ne s’exécutent qu’après approbation.
Dix indicateurs avec valeurs cibles
Mesurez ce qui interrompt réellement la chaîne, et non le nombre de formations. Les valeurs cibles sont des recommandations VamiSec, pas des seuils réglementaires ; la plupart peuvent être collectées automatiquement à partir des logs du proxy, de la configuration CI et de la configuration centrale des agents. s1ngularity montre à quel point les modes sans confirmation sont risqués : selon Wiz, le logiciel malveillant appelait les CLI d’IA installées localement avec des options comme --dangerously-skip-permissions et --yolo afin d’inventorier les secrets. Faites un rapport trimestriel à l’organe de direction ; dans les entités NIS2, celui-ci doit de toute façon superviser la mise en œuvre des mesures en vertu du § 38 BSIG.
| Indicateur | Source de mesure | Valeur cible (recommandation VamiSec) |
|---|---|---|
| Part des builds qui obtiennent les paquets uniquement via le proxy de registre | Logs du proxy et du pare-feu | Jour 90 : ≥ 95 %, ensuite 100 % |
| Part des dépôts avec délai de carence actif | Analyse de la configuration des gestionnaires de paquets et des bots de mise à jour | ≥ 90 %, âge minimal ≥ 3 jours, mises à jour de sécurité exceptées |
| Part des jobs CI qui installent uniquement à partir du lockfile | Configuration CI (npm ci, --frozen-lockfile, --require-hashes) | 100 % |
| Part des builds et environnements d’agents dans lesquels les scripts d’installation ne s’exécutent qu’après approbation | Configuration des gestionnaires de paquets, liste d’autorisation | 100 % |
| Part des nouvelles dépendances avec approbation documentée | Historique des pull requests, revue des dépendances | 100 % |
| Agents en mode d’approbation automatique ou YOLO | Configuration centrale des agents, analyse des terminaux | 0 |
| Part des agents dans un environnement isolé avec liste d’autorisation pour l’egress | Inventaire, politiques réseau | 100 % en CI, ≥ 80 % sur les postes de travail |
| Part des extensions d’agents épinglées et approuvées (serveurs MCP, skills, plugins) | AI-BOM, liste d’autorisation | 100 % |
| Délai médian jusqu’à la rotation des tokens concernés après un signalement de compromission | Tickets d’incident, gestionnaire de secrets | ≤ 24 h |
| Tokens de publication et de CI à longue durée de vie | Inventaire des tokens pour npm, PyPI et la CI | 0, publication uniquement via Trusted Publishing |
Sur l’âge minimal : après l’incident axios, la CISA a recommandé min-release-age=7 (jours), après l’incident Nx Console au moins trois heures ; depuis le 14 juillet 2026, Dependabot attend par défaut 3 jours pour les mises à jour de version, pnpm 11 un jour par défaut — recommandations et valeurs par défaut ne sont pas harmonisées. Trusted Publishing remplace les tokens à longue durée de vie, mais ne prouve pas que le code est bénin (TanStack et Miasma 2026).
Preuves pour les auditeurs
- Inventaire des outils de codage IA, agents, serveurs MCP et skills avec responsable, version et droits (AI-BOM)
- Politique relative aux outils de codage IA, approuvée par l’organe de direction (art. 20(1) NIS2 ; mise en œuvre et supervision selon le § 38 BSIG)
- Configuration versionnée du proxy, des gestionnaires de paquets, des bots de mise à jour et des règles d’egress — le § 30, al. 1 BSIG exige de documenter le respect des mesures
- Journaux d’approbation des nouvelles dépendances et extensions d’agents issus de l’historique des pull requests, avec approbation humaine des modifications effectuées par les agents (pour les entités financières soumises à DORA : séparation des fonctions selon l’art. 17(1) RTS 2024/1774)
- SBOM par release : au minimum les dépendances de premier niveau (CRA, annexe I, partie II, point 1, à partir du 11 décembre 2027), de préférence récursive selon la BSI TR-03183-2 v2.1.0
- Preuves de test des progiciels au plus tard lors de la phase d’intégration (art. 16(4) RTS 2024/1774) et rapport de red teaming des agents
- Playbook d’incident avec liste de rotation des tokens et circuits de notification selon l’art. 14 CRA (24 h / 72 h / 14 jours), accompagné du compte rendu d’exercice
- Rapport trimestriel d’indicateurs à l’organe de direction
Autoévaluation · env. 10 minutes
Agents de codage et chaîne d’approvisionnement : évaluation de maturité
29 questions réparties en six dimensions : les cinq couches pour les agents de codage plus l’hygiène des dépendances. Votre profil détermine le niveau cible et les textes réglementaires pertinents. Le résultat montre à quelle étape vos contrôles interrompent la chaîne d’attaque, vos principales lacunes avec une feuille de route et les preuves attendues par les auditeurs.
0 / 29 questions traitées
Votre résultat
Vous n’avez pas encore répondu à toutes les questions — l’évaluation est provisoire.
Couverture de la chaîne d’attaque
- 01Invention
- 02Enregistrement
- 03Adoption
- 04Résolution
- 05Exécution
- 06Accès
- 07Propagation
Aucune de vos réponses n’atteint le niveau « défini et mis en œuvre » à un point de rupture — un nom de paquet inventé va aujourd’hui jusqu’à la propagation.
Sont pris en compte les contrôles de niveau 2 ou plus qui interrompent une étape de la chaîne : revue des dépendances ou obligation d’approbation (adoption), proxy avec liste d’autorisation (résolution), scripts d’installation désactivés (exécution), sandbox des agents (accès) et contrôle des flux sortants (propagation).
Vos cinq principales lacunes
Vous n’avez pas encore répondu à toutes les questions — l’évaluation est provisoire.
Vous recevez le livre blanc CISO (en allemand) avec feuille de route, modèles et catalogue d’audit. Le résultat n’est joint que si vous cochez expressément la case correspondante dans le formulaire.
L’évaluation s’exécute entièrement dans votre navigateur. Rien n’est enregistré ni transmis tant que vous ne l’envoyez pas vous-même via le formulaire.
Livre blanc gratuit
« Slopsquatting & Coding-Agenten für CISOs » — sécuriser la chaîne d’approvisionnement logicielle IA
Le livre blanc (en allemand) traduit la situation du typosquatting et du slopsquatting ainsi que le modèle à cinq couches pour les agents de codage en un programme pour les RSSI, l’AppSec et les équipes plateforme : de l’état des lieux aux obligations, à la feuille de route et au catalogue d’audit, en passant par les contrôles du harness et la configuration de référence.

48 pagesPDF, gratuitAllemandMise à jour : 10/2026
- Synthèse managériale, page pour le comité de direction et dix messages clés — obligation, pratique et recommandation clairement séparées
- Chaîne d’attaque en sept étapes, carte du harness avec cas documentés et CVE, cinq couches avec preuves
- Configuration de référence pour npm, pnpm, Yarn, Bun, pip et uv ainsi que matrice des obligations CRA, NIS2/BSIG, DORA et AI Act
- Plan à 90 jours, ensemble de KPI, RACI, modèle de politique pour les agents de codage, bloc de sécurité AGENTS.md et 30 questions d’audit
Ce que contient le livre blanc « Slopsquatting & Coding-Agenten für CISOs » (en allemand)
État des lieux et chaîne d’attaque
Synthèse managériale en dix messages clés, état de la recherche sur les hallucinations de paquets présenté avec honnêteté, dossiers de cas de crossenv à Mini Shai-Hulud et chaîne d’attaque en sept étapes avec tous les points de rupture.
Cinq couches pour le harness
Visibilité, contrôle, validation, surveillance et gouvernance, chacune avec objectifs de contrôle, étapes de mise en œuvre, preuves et lien avec l’OWASP Agentic Top 10, le LLM Top 10 et les CVE documentées.
Configuration de référence
Délai de carence, scripts d’installation, lockfile et proxy pour npm, pnpm, Yarn, Bun, pip et uv — avec les valeurs par défaut en vigueur en octobre 2026 et des exemples de configuration prêts à l’emploi.
Obligations, plan et modèles
Matrice des obligations CRA, NIS2/BSIG, DORA, AI Act et responsabilité du fait des produits, plan à 90 jours, ensemble de KPI, RACI, modèle de politique pour les agents de codage, bloc de sécurité pour AGENTS.md et 30 questions d’audit pour la révision interne et l’audit.
Pour aller plus loin
Contrôle à l’exécution : comment l’Agent Control Standard vérifie les appels d’outils avant leur exécution
La surveillance en dehors du modèle est au cœur de la quatrième couche — et c’est précisément là qu’intervient l’OWASP Agent Control Standard : chaque étape d’un agent est soumise via des hooks à un Guardian Agent avant d’être exécutée, et celui-ci tranche avec l’une de cinq dispositions. Une liste d’autorisation de paquets devient ainsi une règle que même un agent ne peut pas contourner. Notre dossier ACS explique les hooks, les dispositions et la failure posture ; le framework de HiddenLayer renvoie à la source primaire des cinq couches.
19 hooks16 hooks de cycle de vie et 3 hooks de skills dans l’ACS
5 dispositionsallow, deny, modify, ask, defer
5 couchesDe la visibilité à la gouvernance, selon HiddenLayer
- Les installations de paquets par un agent peuvent être interceptées comme appels d’outils et vérifiées au regard de la liste d’autorisation.
- Si la décision du Guardian fait défaut, la failure posture détermine si l’agent est bloqué ou poursuit.
- Chaque décision est journalisée — preuve pour les auditeurs et base de la surveillance.
L’Agent Control Standard est un projet OWASP à un stade précoce (spécification v0.1.0, release 0.1.2) ; l’implémentation de référence est une preuve de concept.
Glossaire
Les termes clés du slopsquatting et des agents de codage
24 termes, d’Agent Harness à Typosquatting, expliqués brièvement et au plus près des sources.
termes trouvés
- Slopsquatting
- Enregistrement d’un nom de paquet inventé par des modèles d’IA, afin de capter des installations effectuées par des développeurs ou des agents de codage. Le terme est attribué à Seth Larson (Python Software Foundation) et a été popularisé en avril 2025 par Andrew Nesbitt.
- Typosquatting
- Enregistrement de noms de paquets qui ne se distinguent de paquets populaires que par des fautes de frappe ou des confusions, comme reqjuests ou tensoflom, issus d’une campagne PyPI de plus de 500 paquets (Check Point 2024).
- Combosquatting
- Technique apparentée au typosquatting : un nom connu est combiné, sans faute de frappe, avec des ajouts comme « setup », « helper » ou « utils », afin que le paquet ressemble à un outil complémentaire officiel. Des noms comme opensearch-setup ou elastic-opensearch-helper, issus du cas décrit par Microsoft en mai 2026, suivent ce schéma ; Microsoft parle lui-même de typosquatting.
- Package Hallucinationhallucination de paquet
- Un modèle de langage suggère une dépendance qui n’existe pas dans le registre. Chez Spracklen et al., cela concernait 19,7 % de 2,23 millions de références de paquets ; l’OWASP classe ce risque sous LLM09 Misinformation.
- Package Confusion
- Terme générique désignant les attaques qui incitent à installer un mauvais paquet, par exemple au moyen de noms similaires comme dans le typosquatting. À la suite de Spracklen et al., le BSI et l’ANSSI (2024) décrivent comment des hallucinations de paquets peuvent conduire à de telles attaques lorsque des attaquants enregistrent des paquets sous des noms hallucinés. Cette variante est aujourd’hui le plus souvent appelée slopsquatting.
- Dependency Confusion
- Un gestionnaire de paquets charge, à la place d’un paquet interne, un paquet public homonyme publié par un attaquant. Les contre-mesures sont des associations fixes de registre pour les espaces de noms internes et un proxy de registre.
- Agent HarnessHarness
- La couche d’exécution autour du modèle : prompt système, fichiers de règles, outils, skills, serveurs MCP et logique d’orchestration. Selon HiddenLayer, elle constitue la véritable surface d’attaque des agents de codage.
- Agent de codageAI Coding Agent
- Outil d’IA qui ne se contente pas de suggérer du code, mais modifie de manière autonome des fichiers, exécute des commandes de terminal, installe des paquets et crée des pull requests, comme Claude Code, Cursor ou GitHub Copilot en mode agent.
- Serveur MCPModel Context Protocol
- Service qui met à la disposition d’un agent des outils et des sources de données via le Model Context Protocol. Chaque serveur MCP est un composant de la chaîne d’approvisionnement : selon Koi Security (rapporté par The Register), à partir de la version 1.0.16, le paquet npm non officiel postmark-mcp ajoutait une adresse de l’attaquant en copie cachée de chaque e-mail sortant.
- Tool Poisoning
- Instructions cachées dans la description d’un outil MCP, invisibles pour les utilisateurs mais suivies par le modèle. Invariant Labs a montré en 2025 comment un outil d’apparence anodine amenait l’agent à lire et à transmettre des clés SSH et des fichiers de configuration.
- Rug Pull
- Un serveur MCP ou une configuration déjà approuvés changent après coup, par exemple la description de l’outil ou la commande lancée. Contre-mesure : épingler les versions et soumettre chaque modification à une nouvelle approbation, comme Cursor l’a mis en œuvre après la CVE-2025-54136 (MCPoison).
- Agent SkillSkill
- Ensemble d’instructions et, le cas échéant, de scripts qui ajoute une capacité à un agent et provient de places de marché ou de dépôts. En 2026, Snyk a relevé au moins un problème critique dans 534 des 3 984 skills examinés (13,4 %).
- Rules File Backdoor
- Technique décrite par Pillar Security en 2025, dans laquelle des caractères Unicode invisibles dissimulent des instructions dans les fichiers de règles de Cursor ou de GitHub Copilot. Les humains ne les voient pas lors de la revue, le modèle les suit.
- Injection de promptLLM01
- Instructions introduites qu’un modèle traite comme une commande plutôt que comme des données. Chez les agents de codage, elle est souvent indirecte : via des fichiers README, des issues, des sorties d’outils ou des pages web que l’agent lit.
- Script de cycle de viepreinstall, install, postinstall
- Script du package.json que npm exécute automatiquement lors de l’installation. De nombreux paquets npm malveillants l’utilisent, par exemple Shai-Hulud 2.0 avec un hook preinstall ; npm v12 n’exécute par défaut de tels scripts des dépendances qu’après approbation.
- Lockfile
- Fichier qui consigne les versions exactes résolues et les sommes de contrôle de toutes les dépendances, comme package-lock.json, pnpm-lock.yaml ou pylock.toml. Si la CI installe uniquement à partir de celui-ci, aucun nouveau nom de paquet n’entre dans le build sans modification visible du lockfile.
- Dependency Cooldowndélai de carence, âge minimal des versions
- Âge minimal d’une version de paquet avant qu’elle ne soit installée ou proposée comme mise à jour. Intercepte les versions malveillantes fraîchement publiées, mais pas les noms qu’un attaquant a enregistrés tôt.
- Proxy de registredépôt d’artefacts interne
- Cache interne entre les développeurs, les builds et les registres publics, qui réplique les paquets et, exploité avec une liste d’autorisation, ne délivre que les paquets approuvés. Du point de vue de VamiSec, un point de rupture central contre le slopsquatting, car un nom inventé ne figure pas sur la liste d’autorisation.
- Trusted Publishingpublication OIDC
- Publication de paquets depuis la CI au moyen d’identités OIDC à courte durée de vie au lieu de tokens d’API à longue durée de vie, disponible notamment sur PyPI (depuis 2023) et npm (depuis juillet 2025). Elle remplace des tokens à longue durée de vie susceptibles d’être volés, mais ne protège pas contre un pipeline compromis, comme chez TanStack en mai 2026.
- Provenancepreuve d’origine, attestation
- Preuve signée indiquant de quel dépôt et de quel build provient un paquet. Elle atteste l’origine, pas l’innocuité : chez TanStack et Miasma en 2026, des paquets malveillants portaient une provenance valide.
- SBOMSoftware Bill of Materials
- Nomenclature lisible par machine de tous les composants d’un logiciel, par exemple au format CycloneDX ou SPDX. À partir du 11 décembre 2027, le CRA exige au minimum les dépendances de premier niveau, sans imposer de format ; la BSI TR-03183-2 exige une résolution récursive.
- AI-BOMAIBOM
- Nomenclature des composants d’IA : modèles, agents, serveurs MCP, skills, plugins et prompts, avec leur origine et leur version. Sous ASI04, l’OWASP cite la SBOM et l’AIBOM comme contre-mesures aux risques de la chaîne d’approvisionnement des systèmes agentiques.
- Least Agency
- Principe issu de l’OWASP Top 10 for Agentic Applications 2026 : n’accorder aux agents que l’autonomie qu’exige la tâche. Il étend le moindre privilège à la question de ce qu’un agent peut décider de manière autonome.
- Contrôle de l’egressEgress Filtering
- Limitation du trafic réseau sortant aux destinations approuvées selon le principe du refus par défaut (deny by default). Pour les agents et les builds, il rend plus difficile l’exfiltration de données par du code malveillant vers des destinations tierces ou le chargement de paquets en contournant la liste d’autorisation ; des canaux passant par des destinations approuvées comme GitHub restent possibles.
FAQ
Questions fréquentes sur le slopsquatting et les agents de codage
Des réponses courtes et fiables, avec leurs sources — état au 8 octobre 2026.
Le slopsquatting est une attaque de la chaîne d’approvisionnement dans laquelle un attaquant enregistre un nom de paquet inventé par des modèles d’IA, afin que des développeurs ou des agents de codage installent le paquet malveillant. Le terme est attribué à Seth Larson, de la Python Software Foundation, et a été popularisé le 8 avril 2025 par Andrew Nesbitt, en substance comme la variante IA du typosquatting. Le fondement est l’étude de Spracklen et al. (USENIX Security 2025) : sur 2,23 millions de références de paquets figurant dans 576 000 échantillons de code issus de 16 modèles, 19,7 % étaient hallucinées. Point important pour la mise en perspective : aucun cas publiquement documenté n’est connu à ce jour dans lequel un attaquant aurait enregistré de manière malveillante un nom dont l’hallucination est prouvée et où des victimes l’auraient installé à la suite d’une suggestion d’IA.
Le typosquatting mise sur les fautes de frappe humaines et la confusion avec des noms connus, le slopsquatting sur des noms qu’un modèle d’IA invente. En 2024, Check Point a documenté plus de 500 paquets PyPI malveillants portant des noms comme reqjuests ou tensoflom ; le 28 mai 2026, Microsoft a décrit 14 paquets npm apparus en quatre heures. Dans les deux cas, il s’agit de typosquatting, pas de slopsquatting. Les noms hallucinés, en revanche, ne sont souvent pas des fautes de frappe : chez Spracklen et al., seuls 13,4 % des noms Python inventés se trouvaient à deux modifications au plus d’un paquet réel, 48,6 % à six ou plus. Une détection fondée sur la similarité des noms est donc insuffisante. De nombreuses contre-mesures sont efficaces contre les deux attaques : proxy de registre avec liste d’autorisation, délai de carence, lockfiles et scripts d’installation désactivés.
Selon le modèle et l’étude, pour quelques pour cent à plus d’un cinquième des paquets suggérés. Spracklen et al. (USENIX Security 2025) ont mesuré au total 19,7 % de références de paquets hallucinées, en moyenne 5,2 % pour les trois modèles commerciaux d’OpenAI testés et 21,7 % pour les modèles open source. Beaucoup d’erreurs sont reproductibles : lors de tests répétés, 43 % des noms inventés sont réapparus dans les dix exécutions, 39 % jamais. Une prépublication de Churilov (2026), non évaluée par des pairs, obtient 4,62 à 6,10 % pour cinq modèles actuels. Un test rapide publié sur dev.to le 6 octobre 2026 avec 30 prompts npm a relevé deux noms inventés chez Claude Haiku 4.5, un chez Copilot et trois chez ChatGPT/Codex — selon l’auteur, un signal, pas un verdict.
Aucun cas malveillant publiquement documenté n’est connu à ce jour (état au 8 octobre 2026). Il est toutefois établi que des noms inventés sont réellement installés : pour une expérience publiée en 2024, Bar Lanyado a téléversé sur PyPI un paquet vide sous le nom huggingface-cli, halluciné de manière répétée ; selon Lasso Security, il a été téléchargé plus de 30 000 fois en trois mois. En 2026, Aikido a trouvé dans des Agent Skills générés par IA l’appel npx react-codeshift, qui renvoyait à un paquet npm jamais publié et était diffusé dans au moins 237 dépôts, et a enregistré le nom à titre défensif. Les deux paquets étaient des espaces réservés inoffensifs. Koi Security a rattaché des campagnes comme PhantomRaven au slopsquatting, sans publier de preuves qu’une IA ait suggéré les noms. Le risque est réel, mais aucun dommage n’est publiquement documenté à ce jour.
Par plusieurs contrôles dont le cœur est, du point de vue de VamiSec, un proxy de registre interne avec liste d’autorisation : un nom inventé ou mal orthographié n’y figure pas et ne peut pas être installé. Complétez par un âge minimal pour les nouvelles versions (npm min-release-age en jours à partir de la version 11.10.0, pnpm minimumReleaseAge en minutes, uv exclude-newer, pip --uploaded-prior-to), des installations uniquement à partir du lockfile, des scripts d’installation désactivés et une revue des dépendances dans la pull request. Depuis le 8 juillet 2026, npm v12 n’exécute par défaut les scripts d’installation des dépendances qu’après approbation. Pour vos propres paquets : publication via Trusted Publishing plutôt qu’avec un token ; les tokens npm en écriture expirent par défaut au bout de 7 jours, au plus tard au bout de 90 jours. La provenance atteste l’origine d’un paquet, pas son innocuité.
Le harness englobe tout ce qui constitue un agent de codage autour du modèle de langage : prompt système, fichiers de règles, outils, skills, serveurs MCP et la logique d’orchestration qui coordonne les appels au modèle, les appels d’outils et les flux de travail. Dans son cadre du 28 juillet 2026, HiddenLayer soutient que c’est ce harness, et non le modèle, qui constitue la véritable surface d’attaque ; la cause des attaques serait une confiance mal placée. Des cas documentés le confirment : instructions cachées dans des fichiers de règles (Rules File Backdoor, Pillar Security 2025), descriptions d’outils de serveurs MCP manipulées (Invariant Labs 2025) ou une injection de prompt qui désactivait la demande de confirmation dans GitHub Copilot (CVE-2025-53773, CVSS 3.1 : 7,8).
Les cinq couches proviennent du cadre de HiddenLayer (28 juillet 2026) : Visibilité, Contrôle, Validation, Surveillance et Gouvernance. La visibilité consiste à connaître chaque agent, modèle, outil, serveur MCP et skill ainsi que leurs droits, y compris l’IA fantôme. Le contrôle limite les dommages : droits minimaux, approbation humaine pour les actions lourdes de conséquences, uniquement des outils approuvés, trafic réseau sortant restreint. La validation vérifie avant d’accorder la confiance : red teaming, examen des outils tiers y compris de leurs métadonnées cachées, approbation de versions précises plutôt que « latest ». La surveillance s’exerce en dehors du modèle. La gouvernance ancre les responsables, les modèles de menaces et la réponse aux incidents. Dans l’autoévaluation, VamiSec ajoute l’hygiène des dépendances comme sixième dimension.
Non. ignore-scripts empêche npm d’exécuter les scripts de cycle de vie des paquets lors de l’installation et ferme ainsi une voie d’exécution fréquente, par exemple les hooks d’installation dans le cas décrit par Microsoft le 28 mai 2026. Trois lacunes subsistent : les dépendances Git peuvent apporter leur propre .npmrc, qui remplace le chemin vers le programme Git et exécute du code malgré ignore-scripts (contre-mesure : --allow-git=none à partir de npm 11.10.0) ; les dépendances URL chargent du code depuis des serveurs arbitraires (--allow-remote=none à partir de npm 11.15.0) ; et le code malveillant qui ne s’exécute qu’à l’import ou au démarrage de l’interpréteur n’est pas un script de cycle de vie, comme le fichier .pth de litellm 1.82.8. Combinez donc cette option avec un proxy de registre, un délai de carence et des environnements de build et d’agents isolés.
À partir du 11 décembre 2027, le CRA exige que les fabricants fassent preuve de la diligence requise lors de l’intégration de composants tiers, expressément aussi pour les logiciels libres et open source (art. 13(5)). L’étendue de cette diligence dépend du risque ; le considérant 34 cite par exemple l’examen de l’historique des mises à jour, la vérification dans la base de données européenne des vulnérabilités et des tests de sécurité supplémentaires. Selon les lignes directrices non contraignantes de la Commission C(2026) 5252 (exemple 34), le dépôt de paquets et un développeur individuel qui y publie des logiciels libres n’ont aucune obligation au titre du CRA ; la diligence incombe au fabricant intégrateur. S’y ajoutent une SBOM couvrant au minimum les dépendances de premier niveau (annexe I, partie II, point 1) et le signalement des vulnérabilités découvertes au fabricant ou au mainteneur du composant (art. 13(6)). Les obligations de notification de l’art. 14 s’appliquent déjà depuis le 11 septembre 2026.
En règle générale, non. Les systèmes à haut risque au sens de l’art. 6(2) se limitent aux domaines d’utilisation énumérés à l’annexe III, et le développement logiciel n’en fait pas partie. Il pourrait en aller autrement si un outil était utilisé, par exemple, pour évaluer les performances de salariés (annexe III, point 4, b)). Les obligations relatives aux systèmes à haut risque de l’annexe III ne s’appliquent de toute façon qu’à partir du 2 décembre 2027. Pour les entreprises qui utilisent des assistants de codage, c’est surtout l’art. 4 qui demeure : depuis le Digital Omnibus (règlement (UE) 2026/1744, en vigueur depuis le 27 juillet 2026), elles doivent prendre des mesures de soutien à la maîtrise de l’IA, sans devoir garantir un niveau déterminé. Les obligations relatives aux modèles à usage général incombent aux fournisseurs de modèles, pas aux utilisateurs.
Un délai de carence pour les dépendances (dependency cooldown) est un âge minimal qu’une nouvelle version de paquet doit avoir atteint avant d’être installée ou proposée comme mise à jour. L’idée : les versions malveillantes sont souvent découvertes et supprimées rapidement ; pnpm justifie cette fonction par le fait que cela se produit généralement en moins d’une heure. Les unités diffèrent : npm min-release-age en jours, pnpm minimumReleaseAge en minutes (par défaut 1 440, soit un jour, depuis pnpm 11), Bun en secondes, Yarn npmMinimalAgeGate sous forme de durée comme 1d, uv exclude-newer sous forme de durée, pip --uploaded-prior-to sous forme de date ou, à partir de la version 26.1, sous la forme P3D. Depuis le 14 juillet 2026, Dependabot attend par défaut trois jours pour les mises à jour de version, mises à jour de sécurité exceptées. Limite : les noms enregistrés tôt franchissent n’importe quel délai de carence.
Vous mesurez le niveau de maturité par une autoévaluation selon les cinq couches plus l’hygiène des dépendances, et au moyen de quelques indicateurs objectifs. Le VamiSec Readiness Check proposé sur cette page évalue 29 questions réparties en six dimensions sur quatre niveaux, de « inexistant » à « imposé et mesuré », et montre à quelle étape de la chaîne d’attaque vos contrôles agissent. Comme indicateurs, nous recommandons entre autres la part des builds passant par le proxy de registre, la part des dépôts avec délai de carence, le nombre d’agents en approbation automatique (objectif : zéro), le délai médian jusqu’à la rotation des tokens et la part des extensions d’agents épinglées. Communiquez les valeurs chaque trimestre à l’organe de direction.
Normes & sources
Le contenu de cette page s'appuie sur les guides et études suivants, accessibles publiquement.
ThreatLocker · 2026
How to mitigate typosquatting and slopsquatting attacks in npm and PyPI ↗
Source de départ : contre-mesures pour npm et PyPI du 15 septembre 2026 ; blog d’éditeur.
Harsh, DEV Community · 2026
I Tested 3 AI Coding Tools for Slopsquatting. Here’s How Many Fake Packages They Invented. ↗
Source de départ : test rapide avec 30 prompts npm du 6 octobre 2026, anecdotique et présenté par l’auteur lui-même comme un signal.
HiddenLayer · 2026
A Security Framework for Coding Agents and their Harnesses ↗
Source de départ : cinq couches Visibilité, Contrôle, Validation, Surveillance et Gouvernance (28 juillet 2026).
Spracklen et al., USENIX Security · 2025
We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs ↗
Étude primaire : 19,7 % (440 445 sur 2,23 millions) des références de paquets issues de 576 000 échantillons de code de 16 modèles étaient hallucinées.
Lasso Security · 2024
Diving Deeper into AI Package Hallucinations ↗
Expérience de Bar Lanyado avec l’espace réservé huggingface-cli et plus de 30 000 téléchargements en trois mois.
Aikido Security · 2026
Agent Skills Are Spreading Hallucinated npx Commands ↗
react-codeshift : commande npx hallucinée dans des Agent Skills générés par IA, enregistrée à titre défensif.
Churilov, arXiv · 2026
The Range Shrinks, the Threat Remains: Re-evaluating LLM Package Hallucinations on the 2026 Frontier-Model Cohort ↗
Prépublication non évaluée par des pairs : taux d’hallucination de cinq modèles actuels et noms communs.
Microsoft Security · 2026
Typosquatted npm packages used to steal cloud and CI/CD secrets ↗
14 paquets npm typosquattés en quatre heures le 28 mai 2026 ; typosquatting, pas slopsquatting.
Check Point · 2024
PyPI Inundated by Malicious Typosquatting Campaign ↗
Plus de 500 paquets PyPI malveillants en mars 2024 ; typosquatting classique sans lien avec l’IA.
Wiz · 2025
s1ngularity: supply chain attack leaks secrets on GitHub: everything you need to know ↗
Le logiciel malveillant a détourné des CLI d’IA installées localement avec des options qui contournent les confirmations.
GitHub Changelog · 2025
Strengthening npm security: Important changes to authentication and token management ↗
Nouveaux tokens npm granulaires en écriture : durée de validité par défaut de 7 jours, maximum de 90 jours.
GitHub Changelog · 2026
npm install-time security and GAT bypass2fa deprecation ↗
npm v12 (8 juillet 2026) : scripts d’installation des dépendances uniquement après approbation, dépendances Git et URL bloquées par défaut.
pnpm · 2026
pnpm 11.0 ↗
Nouvelles valeurs par défaut : minimumReleaseAge de 1 440 minutes (un jour), aucune sous-dépendance Git ou tarball, scripts de build uniquement après approbation (allowBuilds).
Pillar Security · 2025
New Vulnerability in GitHub Copilot and Cursor: How Hackers Can Weaponize Code Agents ↗
Rules File Backdoor : instructions Unicode invisibles dans des fichiers de règles.
Invariant Labs · 2025
MCP Security Notification: Tool Poisoning Attacks ↗
Définition du tool poisoning, du rug pull et du tool shadowing pour les serveurs MCP.
OWASP GenAI Security Project · 2025
OWASP Top 10 for Agentic Applications for 2026 ↗
ASI04 Agentic Supply Chain Vulnerabilities, ASI05 Unexpected Code Execution et le principe de Least Agency.
OWASP GenAI Security Project · 2024
LLM09:2025 Misinformation ↗
Classe les bibliothèques inexistantes suggérées par les modèles parmi les risques de génération de code non sûr.
OpenSSF · 2025
Security-Focused Guide for AI Code Assistant Instructions ↗
Guide pour des instructions d’agents sûres ; mentionne les dépendances hallucinées et le slopsquatting.
BSI et ANSSI · 2024
AI Coding Assistants ↗
Document des autorités du 4 octobre 2024 : les hallucinations de paquets comme porte d’entrée de la package confusion, contre-mesures.
ENISA · 2026
ENISA Technical Advisory for Secure Use of Package Managers ↗
Recommandation non contraignante du 10 mars 2026, qui désigne expressément le slopsquatting comme vecteur d’attaque.
Union européenne · 2024
Règlement (UE) 2024/2847 (Cyber Resilience Act) ↗
Obligation de diligence pour les composants tiers (art. 13(5), à partir du 11 décembre 2027), obligations de notification (art. 14, depuis le 11 septembre 2026), SBOM (annexe I, partie II, point 1).
Commission européenne · 2026
Lignes directrices relatives à la mise en œuvre du Cyber Resilience Act, C(2026) 5252 final ↗
Lignes directrices non contraignantes du 27 juillet 2026 ; l’exemple 34 attribue l’obligation de diligence au fabricant intégrateur.
gesetze-im-internet.de · 2025
BSIG (loi allemande sur le BSI) dans sa version issue de la NIS2UmsuCG, § 30 ↗
Mesures de gestion des risques, y compris la chaîne d’approvisionnement (al. 2, phrase 2, n° 4) ainsi que l’acquisition, le développement et la maintenance (n° 5) ; nouveau BSIG en vigueur depuis le 6 décembre 2025 (BGBl. 2025 I n° 301).
Union européenne · 2024
Règlement délégué (UE) 2024/1774 (RTS sur la gestion du risque lié aux TIC) ↗
Précise DORA pour le cadre complet (titre II) : suivi des bibliothèques open source, tests des progiciels, gestion des modifications.
Introduire des agents de codage sans ouvrir la chaîne d’approvisionnement ?
VamiSec vous accompagne pour l’inventaire et la politique des outils de codage IA, le proxy de registre, le délai de carence et le durcissement des scripts d’installation, le sandboxing et la surveillance des agents ainsi que le red teaming d’agents de codage — en cohérence avec le CRA, NIS2 et DORA.