Verrouillage de dépendances (pinning)
Qu'est-ce que Verrouillage de dépendances (pinning) ?
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.
Le pinning remplace les plages floues ("^1.0.0") par des versions exactes et, idéalement, des empreintes cryptographiques dans un lockfile (package-lock.json, poetry.lock, Pipfile.lock, Gemfile.lock, go.sum, Cargo.lock). Les builds deviennent reproductibles et résistent aux mises à jour silencieuses, à la dependency confusion, au typosquatting et aux versions compromises. Les pratiques modernes fixent aussi les GitHub Actions et autres plugins CI à des SHA de commit plutôt qu'à des tags mutables. Le pinning doit être couplé à une surveillance active des vulnérabilités (SCA, Dependabot, Renovate) pour que les correctifs continuent à arriver, sous peine de voir s'accumuler des CVE. Le hash pinning est un contrôle clé cité par SLSA, NIST SSDF, OWASP et les initiatives de builds reproductibles.
● Exemples
- 01
Fixer toutes les GitHub Actions tierces à des SHA de commit plutôt qu'à des tags comme v3.
- 02
Utilisation de pip --require-hashes avec un requirements.txt entièrement haché en CI.
● Questions fréquentes
Qu'est-ce que 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. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie 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.
Comment fonctionne Verrouillage de dépendances (pinning) ?
Le pinning remplace les plages floues ("^1.0.0") par des versions exactes et, idéalement, des empreintes cryptographiques dans un lockfile (package-lock.json, poetry.lock, Pipfile.lock, Gemfile.lock, go.sum, Cargo.lock). Les builds deviennent reproductibles et résistent aux mises à jour silencieuses, à la dependency confusion, au typosquatting et aux versions compromises. Les pratiques modernes fixent aussi les GitHub Actions et autres plugins CI à des SHA de commit plutôt qu'à des tags mutables. Le pinning doit être couplé à une surveillance active des vulnérabilités (SCA, Dependabot, Renovate) pour que les correctifs continuent à arriver, sous peine de voir s'accumuler des CVE. Le hash pinning est un contrôle clé cité par SLSA, NIST SSDF, OWASP et les initiatives de builds reproductibles.
Comment se défendre contre Verrouillage de dépendances (pinning) ?
Les défenses contre Verrouillage de dépendances (pinning) 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 Verrouillage de dépendances (pinning) ?
Noms alternatifs courants : Fixation de versions, Hash pinning.
● 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é.
- appsec№ 304
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.
- 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№ 921
Builds reproductibles
Pratiques de build garantissant que compiler le même code source avec les mêmes instructions produit un artefact identique bit à bit, peu importe le moment et l'endroit.
- appsec№ 166
Sécurité CI/CD
Ensemble de contrôles qui protègent les pipelines d'intégration et de livraison continues contre la compromission, l'injection de code, la fuite de secrets et les déploiements non autorisés.
- 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.