Attaque par confusion de dépendances
Qu'est-ce que Attaque par confusion de dépendances ?
Attaque par confusion de dépendancesAttaque de chaîne logicielle où un adversaire publie sur un registre public un paquet malveillant portant le même nom qu'une dépendance interne, trompant les outils de build qui récupèrent la version publique.
La confusion de dépendances exploite le comportement de résolution par défaut des gestionnaires (npm, pip, Maven, NuGet, RubyGems, etc.) qui combinent registres publics et privés. L'attaquant découvre le nom d'un paquet interne (manifests fuités, dépôts publics, DNS), publie sur le registre public un paquet de même nom avec une version supérieure et attend que les agents de build l'installent. Les recherches d'Alex Birsan en 2021 ont montré que de nombreuses grandes entreprises étaient vulnérables. Mitigations : portée explicite des registres (npm scoped, upstream feeds NuGet, pip --index-url), publier des placeholders internes sur les registres publics, bloquer la résolution sortante, signer les paquets avec Sigstore ou PGP et consommer via un dépôt d'artefacts curé qui contraint nom et source. SLSA, SBOM et la surveillance continue des nouveaux paquets publics aident à détecter les tentatives.
● Exemples
- 01
Paquet interne internal-utils remplacé par un internal-utils@99.0.0 malveillant sur npm.
- 02
Pipeline de build récupérant une dépendance pip depuis PyPI au lieu de l'index privé.
● Questions fréquentes
Qu'est-ce que Attaque par confusion de dépendances ?
Attaque de chaîne logicielle où un adversaire publie sur un registre public un paquet malveillant portant le même nom qu'une dépendance interne, trompant les outils de build qui récupèrent la version publique. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie Attaque par confusion de dépendances ?
Attaque de chaîne logicielle où un adversaire publie sur un registre public un paquet malveillant portant le même nom qu'une dépendance interne, trompant les outils de build qui récupèrent la version publique.
Comment fonctionne Attaque par confusion de dépendances ?
La confusion de dépendances exploite le comportement de résolution par défaut des gestionnaires (npm, pip, Maven, NuGet, RubyGems, etc.) qui combinent registres publics et privés. L'attaquant découvre le nom d'un paquet interne (manifests fuités, dépôts publics, DNS), publie sur le registre public un paquet de même nom avec une version supérieure et attend que les agents de build l'installent. Les recherches d'Alex Birsan en 2021 ont montré que de nombreuses grandes entreprises étaient vulnérables. Mitigations : portée explicite des registres (npm scoped, upstream feeds NuGet, pip --index-url), publier des placeholders internes sur les registres publics, bloquer la résolution sortante, signer les paquets avec Sigstore ou PGP et consommer via un dépôt d'artefacts curé qui contraint nom et source. SLSA, SBOM et la surveillance continue des nouveaux paquets publics aident à détecter les tentatives.
Comment se défendre contre Attaque par confusion de dépendances ?
Les défenses contre Attaque par confusion de dépendances combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Attaque par confusion de dépendances ?
Noms alternatifs courants : Confusion de namespaces, Attaque par substitution.
● Termes liés
- appsec№ 1069
Sécurité de la chaîne d'approvisionnement logicielle
Discipline qui protège chaque maillon de la chaîne de production logicielle - source, dépendances, build, signature, distribution et déploiement - contre les manipulations, le code malveillant et la perte d'intégrité.
- attacks№ 1116
Attaque de la chaîne d'approvisionnement
Attaque qui compromet un fournisseur de logiciel, de matériel ou de services de confiance afin d'atteindre ses clients en aval.
- attacks№ 1184
Typosquatting
Enregistrement de noms de domaine ou de paquets fautes-de-frappe ou imitations visuelles de noms légitimes, pour piéger les utilisateurs ou développeurs qui se trompent en saisissant.
- appsec№ 305
Verrouillage de dépendances (pinning)
Pratique consistant à déclarer les dépendances logicielles à des versions exactes, souvent associées à des empreintes cryptographiques, afin que les builds consomment toujours les mêmes artefacts et résistent aux manipulations de la chaîne d'approvisionnement.
- appsec№ 971
SCA (Software Composition Analysis)
Analyse automatisée des composants open source et tiers d'une application pour identifier les vulnérabilités connues, les problèmes de licence et les dépendances obsolètes ou risquées.
- appsec№ 784
Signature de paquets
Application d'une signature cryptographique à un paquet logiciel pour que les consommateurs vérifient l'identité de l'éditeur et que l'artefact n'a pas été altéré après publication.
● Voir aussi
- № 1097Starjacking
- № 647Paquet npm malveillant
- № 1183Paquet typosquatte