🚨 Pourquoi
Les attaquants ne se contentent plus d’empoisonner les bibliothèques open source publiques (npm, PyPI, Maven…).
Ils ciblent désormais les dépendances internes : bibliothèques maison, artefacts stockés dans Nexus/Artifactory, voire les pipelines CI/CD eux-mêmes.
🎯 Objectif : introduire du code malveillant dans les livrables finaux, sans être détectés.
🔎 Analyse
- Typosquatting interne : un package nommé
auth-utils
remplacé parauth-util
. - Artefacts compromis : modification furtive d’un binaire stocké en interne.
- Pipeline sous contrĂ´le : un attaquant injecte du code directement lors du build.
➡️ Ces attaques sont redoutables car elles exploitent notre confiance dans nos propres outils.
Elles sont difficiles à détecter et peuvent impacter des centaines de projets d’un coup.
âś… Bonnes pratiques
Pour réduire le risque :
- Générez un SBOM (Software Bill of Materials) pour chaque projet → visibilité complète des dépendances.
- Appliquez SLSA (Supply-chain Levels for Software Artifacts) pour sécuriser vos pipelines.
- Surveillez vos dépôts internes (Nexus, Artifactory…) : signatures, intégrité, contrôles d’accès.
- Audit régulier des pipelines CI/CD : droits limités, étapes signées, logs tracés.
- Formation continue des équipes dev : sensibilisation aux risques et bonnes pratiques.
- Utilisez des outils de vérification comme OWASP Dependancy-Tracker .
🧪 Quelques Exemples d’Attaques
Langage / Écosystème | Vecteur SCA (source 2025) | Sévérité* |
---|---|---|
.NET (NuGet) | Dependency confusion — panorama 2025 (ISACA/ReversingLabs) | 🛑 Critique |
Node.js | Hooks d’installation (prepare /postinstall ) — ver « Shai-Hulud » npm (Unit 42) |
⚠️ Modérée |
Python | Dépendance transitive « dormante » — RCE via dépendance indirecte (The Hacker News) | ⚠️ Modérée |
C/C++ | Lib non listée / SBOM incomplet — éléments minimum 2025 (CISA) | ⬆ Surveillance |
Matrice Contrôles Défensifs
Surface | Menace | Contrôle Préventif | Contrôle de détection |
---|---|---|---|
Résolution paquets (.NET/NuGet) | Dependency confusion | Source mapping + repo privé | Diff versions inattendues |
Scripts npm | Postinstall backdoor | Interdiction scripts non allowlist | Diff package.json / lock |
Plugins Gradle | Plugin compromis | Signature GPG + liste approuvée | Variation hash JAR |
CMake | Téléchargement remote | Blocage file(DOWNLOAD) | Grep + AST parse |
SBOM | Composant falsifié | Génération double (build + post-build) | Divergence digest |
Artefact final | Altération en transit | Stockage immuable + checksum | Re-scan antes déploiement |