Lors du développement d'une application, un développeur va intégrer des dépendances tierces à son projet. Ces dépendances peuvent provenir de dépôts publics ou internes à l'entreprise. Les différents langages de programmation fournissent des gestionnaires de paquets pour faciliter l'installation et la mise à jour de ces dépendances (pip pour Python ou npm pour JavaScript par exemple). La confiance accordée à ces gestionnaires de paquets ouvre la voie à un nouveau type d'attaque permettant à un attaquant d'installer des dépendances malveillantes au sein du système d'information d'une entreprise. Cet article présente la possibilité de corrompre la chaîne d'approvisionnement (supply chain) d'un projet via ses dépendances privées, dont la sécurité est rarement remise en question.
Les attaques via la chaîne d’approvisionnement (supply chain en anglais) sont de plus en plus importantes, par exemple avec le cas de SolarWinds en 2020 : cette entreprise s'est fait pirater et les attaquants ont injecté une porte dérobée dans son système nommé « Orion ». Celui-ci est utilisé par plus de 30 000 entreprises, dont Microsoft et des entités gouvernementales, qui ont été piratées à leur tour via ce logiciel.
Ces attaques sont souvent critiques pour une entreprise, puisqu’elles permettent d’exécuter directement des commandes arbitraires à distance au cœur de son système d’information. Les attaquants contournent alors la plupart des protections périmétriques, et obtiennent le plus souvent des accès sur des serveurs critiques.
Les attaques sur les paquets dont dépendent les logiciels appartiennent à cette catégorie. C’est le cas par exemple du typosquatting, ou de la compromission du compte du développeur. Cet article vous propose...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
[1] Article original du chercheur Alex Birsan :
https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
[2] Article discutant des différentes problématiques de cette attaque avec npm :
https://snyk.io/blog/detect-prevent-dependency-confusion-attacks-npm-supply-chain-security/
[3] Outil permettant de détecter les paquets JavaScript vulnérables avec npm :
https://GitHub.com/snyk-labs/snync
[4] Article de Jfrog Artifactory sur la remédiation pour cette vulnérabilité :
https://jfrog.com/blog/going-beyond-exclude-patterns-safe-repositories-with-priority-resolution/
[5] Détail de la configuration d’une règle de routage pour Sonatype :
https://help.sonatype.com/repomanager3/nexus-repository-administration/repository-management/routing-rules
[6] Réserver un préfix sur nuget.org : https://docs.microsoft.com/en-us/nuget/nuget-org/id-prefix-reservation
[7] Détails des faits pour le sabotage de node-ipc :
https://snyk.io/blog/peacenotwar-malicious-npm-node-ipc-package-vulnerability/
[8] Outil Socket pour analyser le changement de code des dépendances en JavaScript : https://socket.dev/