Dependency Confusion Attack
devsecopsDéfinition
Une Dependency Confusion Attack (attaque par confusion de dépendances) est une attaque de supply chain logicielle exploitant la façon dont les gestionnaires de paquets résolvent les dépendances entre registres publics et privés. L'attaque, documentée publiquement par le chercheur Alex Birsan en 2021, a permis d'exécuter du code malveillant dans les environnements internes de nombreuses grandes entreprises technologiques (Microsoft, Apple, PayPal, Netflix, Tesla). Le mécanisme de la Dependency Confusion exploite le comportement de résolution de paquets des gestionnaires comme npm, pip, gem, et Maven. Ces gestionnaires cherchent d'abord les paquets dans les registres publics (npmjs.com, pypi.org), puis dans les registres privés internes. Si un paquet porte un nom unique à l'organisation (par exemple "mycompany-internal-utils" dans le registre npm privé de MyCompany), un attaquant peut publier un paquet portant exactement ce même nom sur npm public, avec un numéro de version plus élevé et contenant du code malveillant. Lors du prochain build, le gestionnaire choisit la version plus récente du registre public plutôt que la version interne, exécutant le code de l'attaquant. La remédiation de la Dependency Confusion attack passe par plusieurs approches complémentaires. Le scoping des paquets : utiliser des packages scopés (@mycompany/internal-utils au lieu de internal-utils) sur npm, ou des namespaces (com.mycompany.internal dans Maven) — les paquets scopés empêchent la confusion car le scope @mycompany n'existe que sur le registre privé de l'organisation. La configuration explicite des registres : configurer le gestionnaire pour chercher les paquets internes uniquement dans le registre privé (sans fallback vers le registre public). L'enregistrement des noms de paquets : réserver les noms de paquets internes sur les registres publics (en publiant des paquets vides ou des placeholders) pour empêcher des tiers de les utiliser.
Mécanisme et impact de l'attaque Birsan
L'attaque documentée par Alex Birsan en 2021 : après avoir identifié des noms de paquets internes dans les manifestes npm/pip/gem de grandes entreprises (via JavaScript frontend, fichiers requirements.txt publics sur GitHub), il a publié des paquets malveillants sur les registres publics avec les mêmes noms et des versions plus élevées. Lors des builds CI des entreprises cibles, ces paquets ont été automatiquement installés à la place des paquets internes légitimes, exécutant du code d'exfiltration dans les environnements de build de Microsoft, Apple, Tesla et 30+ autres entreprises. Aucun hack de compte requis, juste une exploitation du comportement par défaut des gestionnaires de paquets.
Remédiation : scoping et configuration des registres
Solutions techniques contre la Dependency Confusion : 1) Scoper les paquets internes npm (@mycompany/utils), ce scope n'existant que dans le registre privé de l'organisation. 2) Configurer un .npmrc avec registry explicite par scope : @mycompany:registry=https://npm.mycompany.com (les paquets @mycompany vont UNIQUEMENT au registre privé). 3) Utiliser un registre mandataire (Nexus, Artifactory) qui contrôle la résolution et bloque les conflits nom interne/externe. 4) Réserver les noms de paquets internes sur npm public (publication de placeholders vides avec le message "reserved by MyCompany").
Détection des tentatives de Dependency Confusion
La détection des tentatives de Dependency Confusion : monitoring des registres publics pour les noms de paquets internes (des services comme Socket.dev ou Snyk monitor alertent sur les nouvelles publications de paquets ressemblant à des paquets internes), analyse des logs d'installation des gestionnaires de paquets (les builds CI devraient logger d'où chaque paquet est tiré pour détecter une source inattendue), et SCA sur les paquets installés (vérification que les SHAs correspondent aux paquets attendus). Des politiques de build hermétiques (toutes les dépendances pré-approuvées dans un cache interne, pas de téléchargement en live) éliminent structurellement ce vecteur d'attaque.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h