Catégories

🔍 Licence d'Utilisation 🔍

Sauf mention contraire, le contenu de ce blog est sous licence CC BY-NC-ND 4.0.

© 2025 à 2042 Sébastien Gioria. Tous droits réservés.

🚨 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Ă© par auth-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

📚 Références