Ressources · 16
Sécuriser la chaîne d’approvisionnement logicielle
Relier composants, provenance, construction, vulnérabilités et mises à jour à chaque version réellement déployée.
· 8 min
Ce que ce guide permet
- Connaître les dépendances réellement livrées
- Vérifier l’origine des artefacts
- Prioriser les failles selon le contexte
- Tester un remplacement et un retour arrière
Contrôle express
- La nomenclature correspond-elle exactement à la version déployée ?
- Les dépendances transitives sont-elles incluses ?
- Qui peut signer une version ?
- Une vulnérabilité est-elle exploitable dans votre usage ?
- Un composant critique peut-il être retiré sans improviser ?
Méthode pas à pas
- 01
Cartographier les versions livrées
Identifiez dépôts, dépendances directes et transitives, outils de compilation, images, services externes et propriétaires. Associez le tout à une version vérifiable.
Livrable : carte produit, composant, version et propriétaire.
- 02
Produire une nomenclature exploitable
Générez une SBOM pour chaque version, puis confrontez-la aux artefacts réellement publiés. Prévoyez correction des noms, versions absentes et composants internes.
Livrable : SBOM datée et vérifiée.
- 03
Protéger la construction
Limitez les droits de publication, isolez les étapes sensibles et conservez provenance, empreintes et signatures. Vérifiez ces preuves avant déploiement.
Livrable : dossier de construction et règle de vérification.
- 04
Trier les alertes
Reliez chaque avis de vulnérabilité au composant, à la version, à l’exposition et à l’usage réel. Fixez responsable, échéance, décision et preuve de fermeture.
Livrable : file de triage contextualisée.
- 05
Exercer le changement
Remplacez en environnement de test un composant critique, contrôlez les parcours métier et répétez le retour arrière. Mesurez les dépendances qui bloquent.
Livrable : compte rendu de remplacement et de repli.
- 06
Maintenir les preuves
Réexaminez les composants et les fournisseurs à chaque version majeure et après incident. Gardez une durée de conservation adaptée aux besoins de correction.
Livrable : calendrier de revue et historique des versions.
VEX : lire une déclaration avant d’écarter une alerte
Une SBOM indique les composants d’un logiciel. Un VEX exprime l’impact déclaré d’une vulnérabilité sur un produit identifié, à une date donnée. Retrouvez le produit exact, l’émetteur et le contexte avant d’utiliser son statut dans votre triage.
not_affected | Le produit identifié est déclaré non affecté. OpenVEX exige une justification ou un impact_statement ; vérifiez que le raisonnement concerne votre version et votre usage. |
|---|---|
affected | Le produit est déclaré affecté. La déclaration doit inclure un action_statement pour accompagner le traitement de la vulnérabilité. |
fixed | Les versions désignées contiennent un correctif. Cela ne démontre pas que cette version est effectivement installée chez vous. |
under_investigation | L’applicabilité n’est pas encore connue. Ce statut ne permet pas de conclure à une absence d’impact ; prévoyez une nouvelle revue. |
Six cas de lecture
Cas fictifs : les décisions ci-dessous illustrent une revue documentaire, sans analyser vos logiciels ni valider un fichier VEX.
Un périmètre concordantnot_affected
La déclaration vise le même produit et la même version ; elle fournit la justification component_not_present et une explication de construction.
Ce que la déclaration permet de décider
Examinez la preuve reliant cette explication à l’artefact livré, l’identité de l’émetteur et les révisions. Vous pouvez documenter l’analyse ; le statut seul ne prouve pas sa justesse.
La version ne correspond pasnot_affected
L’éditeur déclare non affectée une version récente. L’inventaire contient une version plus ancienne.
Ce que la déclaration permet de décider
N’étendez pas la conclusion à la version installée. Recherchez une déclaration qui la couvre ou demandez une clarification ; ne fermez pas l’alerte sur cette seule pièce.
La raison manquenot_affected
Le statut not_affected est présent, mais ni justification ni impact_statement n’est fourni.
Ce que la déclaration permet de décider
La déclaration ne satisfait pas cette exigence OpenVEX. Demandez le motif manquant ; l’absence de motif ne prouve cependant pas que le produit est affecté.
L’enquête continueunder_investigation
La dernière déclaration indique under_investigation ; aucune conclusion nouvelle n’est disponible.
Ce que la déclaration permet de décider
Gardez le point ouvert, attribuez un responsable et une prochaine vérification. L’urgence dépend aussi de l’exposition locale et des informations de menace disponibles.
Le correctif n’est pas déployéfixed
Le statut fixed concerne la version corrigée, mais l’inventaire montre encore la version précédente.
Ce que la déclaration permet de décider
Vérifiez le déploiement et le fonctionnement de la version corrigée avant de clore votre action. La disponibilité d’un correctif et son installation sont deux faits différents.
L’action n’est pas décriteaffected
Le produit est déclaré affected, mais le document ne contient aucun action_statement.
Ce que la déclaration permet de décider
Demandez les instructions manquantes et consultez le bulletin de l’éditeur. Une pièce incomplète ne justifie pas d’ignorer l’impact déjà déclaré.
Spécification de référence : OpenVEX v0.2.0
Indicateurs de pilotage
| Indicateur | Ce qu’il mesure | Première action |
|---|---|---|
| Couverture SBOM | Versions livrées avec nomenclature vérifiée | Corriger les écarts avant publication |
| Provenance vérifiée | Artefacts contrôlés avant déploiement | Bloquer les versions sans preuve attendue |
| Délai de triage | Temps entre avis pertinent et décision documentée | Escalader les composants exposés |
| Réversibilité | Remplacements critiques testés avec retour arrière | Lever les dépendances bloquantes |
Erreurs fréquentes
- Confondre inventaire du dépôt et composants déployés
- Conserver une SBOM sans l’actualiser
- Classer une faille uniquement par score
- Signer un artefact sans vérifier la provenance de sa construction
Questions fréquentes
Une SBOM suffit-elle ?
Non. Elle facilite l’identification des composants, mais il faut également vérifier la provenance, l’intégrité, l’exposition et la capacité de mise à jour.
Faut-il bloquer toute vulnérabilité ?
La décision dépend du composant effectivement utilisé, de son exposition, des compensations et de la criticité métier ; elle doit rester documentée.
Quel cadre de référence utiliser ?
Le Secure Software Development Framework du NIST fournit des pratiques de développement sécurisé et de protection des logiciels adaptées au cycle de vie.
Références : données, usages et limites
Documentation consultée le .
| Source et objet | Donnée ou repère vérifié | Comment l’utiliser | Limite à conserver |
|---|---|---|---|
| MITRE · Common Weakness Enumeration Nommer des classes de faiblesses logicielles et matérielles. |
Une CWE décrit une faiblesse pouvant contribuer à l’introduction de vulnérabilités. Elle ne représente pas un incident particulier. | Reliez la faiblesse au mécanisme observé : entrée, traitement et contrôle manquant. Utilisez cette description pour corriger la cause et préparer des tests de régression. | La présence d’un mot-clé dans un rapport ne suffit pas à établir la bonne classification CWE. |
| SPDX · Specifications Décrire les composants et informations d’une nomenclature logicielle. |
La page officielle distingue SPDX 3.0 de versions antérieures comme 2.3. La version du document conditionne le schéma et les outils compatibles. | Demandez le format, la version, le périmètre de construction et les identifiants des composants. Comparez la nomenclature à l’artefact effectivement livré. | Une nomenclature ne démontre pas à elle seule l’absence de vulnérabilité, la complétude des dépendances ou la conformité de toutes les licences. |
| OWASP · CycloneDX Échanger des nomenclatures et informations de chaîne d’approvisionnement. |
La spécification 1.7 est datée du 21 octobre 2025 sur la page officielle, qui documente JSON, XML et Protobuf. | Vérifiez la version, les références de composants et les liens de dépendance. Conservez la relation entre la nomenclature, la construction et le produit déployé. | Un changement de format ne corrige pas des composants manquants. Une nomenclature descriptive et une analyse d’impact de vulnérabilité répondent à des questions différentes. |
| NIST · Post-quantum cryptography Identifier les standards utiles à une transition cryptographique. |
Le NIST distingue FIPS 203 pour ML-KEM, FIPS 204 pour ML-DSA et FIPS 205 pour SLH-DSA. Encapsulation de clé et signature sont des fonctions différentes. | Inventoriez protocoles, bibliothèques, clés et dépendances. Demandez les versions réellement implémentées et testez interopérabilité, performance et retour arrière. Comparer les paramètres post-quantiques et estimer leurs volumes → |
La présence d’un algorithme standardisé ne démontre pas la sécurité de son intégration complète ni une échéance universelle de migration. |
Cryptographie post-quantique : comparer avant de migrer
ML-KEM établit un secret partagé ; ML-DSA et SLH-DSA signent des données. Ces fonctions répondent à des besoins différents. Les 18 jeux de paramètres ci-dessous proviennent des trois standards FIPS finaux publiés le 13 août 2024. Ils permettent de préparer un inventaire et des essais de capacité, sans déduire la sécurité d’un système du seul nom de son algorithme.
Données et pages de statut vérifiées le .
ML-KEM · Établir un secret
- Le destinataire publie sa clé d’encapsulation.
- L’émetteur produit un chiffré et un secret partagé, puis transmet le chiffré.
- Le destinataire retrouve le secret avec sa clé de décapsulation.
L’authentification du pair et l’usage du secret relèvent du protocole complet.
ML-DSA / SLH-DSA · Signer
- Le signataire protège sa clé privée et distribue sa clé publique.
- Il signe les données et transmet les données avec leur signature.
- Le vérificateur contrôle la signature avec la clé publique de confiance.
La signature seule ne chiffre pas le contenu signé.
Pour ML-KEM, les clés publique et privée servent respectivement à l’encapsulation et à la décapsulation ; la cinquième colonne est le chiffré. Pour les deux familles DSA, les clés servent à la vérification et à la signature ; la cinquième colonne est la signature. Le tiret signifie « sans objet ». Les catégories NIST ne sont ni des notes de qualité ni des tailles de clés en bits.
| Jeu de paramètres / source | Catégorie NIST | Clé publique | Clé privée | Chiffré KEM / signature | Secret partagé |
|---|---|---|---|---|---|
| ML-KEM-512FIPS 203 | 1 | 800 | 1 632 | 768 | 32 |
| ML-KEM-768FIPS 203 | 3 | 1 184 | 2 400 | 1 088 | 32 |
| ML-KEM-1024FIPS 203 | 5 | 1 568 | 3 168 | 1 568 | 32 |
| ML-DSA-44FIPS 204 | 2 | 1 312 | 2 560 | 2 420 | — |
| ML-DSA-65FIPS 204 | 3 | 1 952 | 4 032 | 3 309 | — |
| ML-DSA-87FIPS 204 | 5 | 2 592 | 4 896 | 4 627 | — |
| SLH-DSA-SHA2-128sFIPS 205 | 1 | 32 | 64 | 7 856 | — |
| SLH-DSA-SHA2-128fFIPS 205 | 1 | 32 | 64 | 17 088 | — |
| SLH-DSA-SHA2-192sFIPS 205 | 3 | 48 | 96 | 16 224 | — |
| SLH-DSA-SHA2-192fFIPS 205 | 3 | 48 | 96 | 35 664 | — |
| SLH-DSA-SHA2-256sFIPS 205 | 5 | 64 | 128 | 29 792 | — |
| SLH-DSA-SHA2-256fFIPS 205 | 5 | 64 | 128 | 49 856 | — |
| SLH-DSA-SHAKE-128sFIPS 205 | 1 | 32 | 64 | 7 856 | — |
| SLH-DSA-SHAKE-128fFIPS 205 | 1 | 32 | 64 | 17 088 | — |
| SLH-DSA-SHAKE-192sFIPS 205 | 3 | 48 | 96 | 16 224 | — |
| SLH-DSA-SHAKE-192fFIPS 205 | 3 | 48 | 96 | 35 664 | — |
| SLH-DSA-SHAKE-256sFIPS 205 | 5 | 64 | 128 | 29 792 | — |
| SLH-DSA-SHAKE-256fFIPS 205 | 5 | 64 | 128 | 49 856 | — |
Les tailles concernent les encodages bruts définis par les standards. Une clé privée stockée sous forme de graine peut occuper moins d’espace que l’encodage complet indiqué ici. Certificats, conteneurs, encodage Base64, en-têtes de protocole et protection du stockage ajoutent leurs propres octets. Pour SLH-DSA, « s » privilégie la compacité des signatures et « f » leur génération plus rapide ; les familles SHA2 et SHAKE partagent les tailles de chaque variante, pas la même instanciation de hachage.
Estimer un volume de données cryptographiques
Choisissez un jeu et un nombre d’objets. Le calcul additionne uniquement des tailles brutes publiques : un chiffré KEM ou une signature par objet, avec une clé publique transmise une seule fois ou répétée pour chaque objet. La clé privée et le secret partagé restent exclus du transfert modélisé.
Exemple chiffré pour préparer un essai
Pour 1 000 objets ML-KEM-768 et une clé publique par objet : 1 000 × (1 184 + 1 088) = 2 272 000 octets bruts. Avec une seule clé publique pour le lot : 1 184 + 1 000 × 1 088 = 1 089 184 octets. Il s’agit d’une hypothèse pédagogique de transport, pas d’une mesure d’un service ou d’un protocole.
Ce modèle de volume ne mesure ni durée de calcul, ni débit, ni latence TLS, ni sécurité. Le mode « une seule clé » suppose qu’un même destinataire ou vérificateur peut réutiliser cette clé selon le protocole retenu. Vérifiez cette hypothèse, la rotation des clés et les limites de taille sur votre environnement. Aucun contenu, aucune clé et aucune donnée saisie ne sont envoyés par cet outil.
Quelles preuves demander avant un pilote ?
| Usage à inventorier | Éléments à relever | Essai utile et condition de décision |
|---|---|---|
| Échanges et données confidentielles | Application, protocole, bibliothèque et version ; fonction d’établissement de clé ; durée de sensibilité des données ; équipements intermédiaires. | Rejouer les connexions sur une plateforme de test autorisée, relever erreurs et volumes, vérifier les pairs réellement compatibles et le retour à la configuration approuvée. |
| Signature de logiciels et mises à jour | Chaîne de construction, format signé, clés et vérificateurs embarqués ; capacité à renouveler la racine de confiance. | Vérifier un paquet valide puis un paquet altéré. Mesurer la taille finale du manifeste et confirmer que les anciens appareils disposent d’un chemin de mise à jour. |
| Certificats et identités techniques | Autorités, profils de certificats, algorithmes de signature, magasins de confiance et dépendances tierces. | Contrôler création, renouvellement et révocation dans les produits concernés. L’acceptation d’un algorithme dans une bibliothèque ne suffit pas à prouver celle du certificat complet. |
| Sauvegardes, archives et conservation | Formats, clés nécessaires à la restauration, responsabilités de garde et versions capables de relire les objets historiques. | Restaurer un échantillon ancien dans l’environnement cible ; conserver les éléments de vérification nécessaires. Une migration des connexions ne re-chiffre pas automatiquement les archives. |
Questions de décision
ML-KEM remplace-t-il une signature ?
Non. L’encapsulation sert à établir un secret partagé. La signature sert à vérifier l’intégrité et l’origine des données selon le mécanisme de confiance choisi. Un projet peut devoir faire évoluer ces deux fonctions séparément.
Le plus petit objet est-il le meilleur choix ?
La taille ne répond qu’à une contrainte de capacité. Le choix doit aussi tenir compte des exigences de sécurité, des implémentations maintenues, de la compatibilité et des résultats d’essais. Le comparateur ne classe pas les algorithmes.
Un produit « FIPS 203 » est-il automatiquement certifié ?
La référence à un standard décrit une spécification d’algorithme. Demandez séparément la preuve de conformité ou de validation annoncée, son périmètre exact, la version du module et la configuration évaluée.
Pourquoi consulter les pages de statut en plus du standard ?
Les pages NIST signalent les mises à jour potentielles : note du 17 novembre 2025 pour FIPS 203 et du 31 juillet 2026 pour FIPS 204 lors de cette consultation. Le fournisseur doit préciser les corrections prises en compte dans sa version.
Provenance des valeurs et limites de fraîcheur
Les liens mènent aux notices officielles et à leur historique. Tailles relevées dans les tables indiquées ; clés privées SLH-DSA calculées selon la règle 4n du §3.1. Périmètre limité aux jeux des FIPS 203–205 : ce tableau n’est pas un inventaire de tous les travaux post-quantiques, projets ou profils de protocoles.
- NIST FIPS 203 · ML-KEM · §8, tables 2–3; §8 security categories
Publication du standard : · Note de mise à jour potentielle : - NIST FIPS 204 · ML-DSA · §4, tables 1–2
Publication du standard : · Note de mise à jour potentielle : - NIST FIPS 205 · SLH-DSA · §11, table 2; §3.1: private key = 4n bytes
Publication du standard :
VEX et applicabilité produit
VEX et SBOM : vérifier la portée de la déclaration fournisseur
Une SBOM décrit des composants ; VEX exprime un statut d’impact pour une vulnérabilité et des produits identifiés. Cette fiche utilise les libellés d’OpenVEX v0.2.0. Elle ne propose pas de conversion automatique vers CSAF ou CycloneDX, dont les structures doivent être lues dans leur propre version.
L’émetteur, l’identification du produit et le temps sont indispensables à l’interprétation. Les informations produit ou temporelles peuvent être héritées selon les règles OpenVEX ; un champ absent dans un statement n’est donc pas nécessairement une information absente du document complet. Vérifier les valeurs résolues avant de conclure.
Quatre statuts OpenVEX, avec leur portée
| Statut exact | Sens de la déclaration | Contrôle côté consommateur |
|---|---|---|
| not_affected | Le produit visé est déclaré non affecté par cette vulnérabilité. | Exiger justification ou impact_statement conformément à la structure OpenVEX, vérifier l’identité exacte du produit et les conditions de l’analyse. |
| affected | Des actions sont recommandées pour traiter cette vulnérabilité. | Lire l’action_statement requis pour ce statut et relier les actions aux versions réellement installées. |
| fixed | Les versions de produit désignées contiennent une correction. | Vérifier que ces versions sont celles déployées et que le service fonctionne après modification. |
| under_investigation | L’applicabilité aux versions visées n’est pas encore établie. | Conserver l’incertitude et demander une mise à jour ; ne pas traiter ce statut comme not_affected. |
Pour not_affected, la structure OpenVEX exige une justification ou un impact_statement ; le format recommande la justification exploitable par une machine, éventuellement enrichie d’un texte. Pour affected, un action_statement est requis. Ces champs documentent une déclaration ; ils ne rendent pas son auteur automatiquement fiable.
Cinq justifications : des preuves différentes à rechercher
| Libellé OpenVEX | Ce que la justification affirme | Pièce locale proposée pour l’examiner |
|---|---|---|
| component_not_present | Le composant n’est pas inclus dans le produit. | Inventaire du build exact, dépendances et contenu livré ; ne pas se limiter à une liste de dépendances de développement. |
| vulnerable_code_not_present | Le composant est inclus, mais le code vulnérable ne l’est pas. | Options de compilation, patch du fournisseur et correspondance avec l’artefact effectivement déployé. |
| vulnerable_code_not_in_execute_path | Le code vulnérable ne peut pas être exécuté tel qu’il est utilisé par le produit. | Analyse du chemin d’exécution et des configurations considérées ; dater les hypothèses à réexaminer après une évolution. |
| vulnerable_code_cannot_be_controlled_by_adversary | Un adversaire ne peut pas contrôler le code vulnérable pour exploiter le défaut. | Description des entrées contrôlables et limites de la démonstration. Cette assertion peut être difficile à prouver de manière concluante. |
| inline_mitigations_already_exist | Des protections intégrées au produit empêchent l’exploitation selon les conditions définies par OpenVEX. | Vérifier qu’elles ne peuvent être contournées par l’attaquant ni désactivées ou configurées par l’utilisateur. Ne pas assimiler une règle de pare-feu externe à cette justification. |
Exemple JSON fictif : une déclaration pour le build 2.4.0
Exemple pédagogique rédigé pour cette fiche, avec identifiant de vulnérabilité TRAINING-VULN-01 et domaine .example. Il ne décrit aucun produit ou défaut réel, n’est pas signé et n’a pas été validé par un moteur de conformité OpenVEX. La date du document est héritée par son unique déclaration.
{
"@context": "https://openvex.dev/ns/v0.2.0",
"@id": "https://vendor.example/vex/training-01",
"author": "Fictional training publisher",
"timestamp": "2026-10-22T10:00:00Z",
"version": 1,
"statements": [
{
"vulnerability": {
"name": "TRAINING-VULN-01"
},
"products": [
{
"@id": "https://vendor.example/products/gateway/2.4.0"
}
],
"status": "not_affected",
"justification": "vulnerable_code_not_present",
"impact_statement": "Fictional training statement: the affected code was excluded from this exact product build."
}
]
}Cette déclaration ne concerne que le produit identifié en version 2.4.0. Elle ne couvre pas automatiquement une version 2.3.0, une autre distribution ou une configuration différente. L’assertion d’exclusion du code reste à rapprocher des preuves et de la confiance accordée à l’émetteur.
Six contrôles avant d’utiliser un VEX pour réduire des alertes
- Identifier l’émetteur et la manière dont le document a été obtenu ; distinguer provenance, signature éventuelle et confiance.
- Résoudre le produit, les sous-composants et les identifiants jusqu’au build effectivement déployé.
- Vérifier l’identifiant de vulnérabilité et ses alias ; ne pas rapprocher des défauts par une simple ressemblance de titre.
- Lire le statut, les justifications ou actions requises et les conditions propres au produit.
- Résoudre les dates héritées et conserver la version du document ; une évolution du produit peut invalider une ancienne hypothèse.
- Enregistrer la décision de prise en compte, le responsable et les conditions qui déclenchent une nouvelle revue.
Revenir aux signaux de priorisation et aux preuves de remédiation →
Sources primaires et périmètre
- OpenVEX · Specification v0.2.0 · OpenVEX v0.2.0 · reviewed 2026-10-22
Statement Data Structure · Status Labels · Status Justifications · Data Inheritance
Sources vérifiées le
Signature et provenance du build
Relier les pièces de livraison aux octets déployés
Une SBOM, un VEX et une provenance peuvent accompagner une même livraison tout en portant des informations différentes. Pour exploiter ces pièces, conserver leur liaison au paquet exact et les attentes utilisées pour accepter son origine.
- Comparer le digest de l’artefact au sujet attesté ; garder la référence entre réception, promotion et déploiement.
- Vérifier identité autorisée, builder, dépôt et paramètres plutôt que conclure sur la seule présence d’une signature.
- Conserver les contrôles de comportement et de récupération : un paquet authentique peut encore régresser.
Lire la fiche de provenance avant déploiement →
Sources vérifiées le · SLSA 1.2 · Build: Verifying artifacts · SLSA 1.2 · Build: Provenance · SLSA 1.2 · Build: Track Basics · in-toto · Statement v1 · Sigstore · Verifying Signatures
Explorer le catalogue KEV de CISA
Un même identifiant, plusieurs couches techniques
Une notice peut concerner une bibliothèque, un serveur ou un composant inclus dans une appliance. Rechercher le nom exact, puis les dépendances connues et l’avis du produit distribué. Les alias du catalogue ne constituent pas une nomenclature complète des versions affectées.
- Rapprocher CVE, fournisseur du composant et fournisseur du produit final.
- Vérifier version, configuration et chemin d’exécution dans l’environnement autorisé.
- Ne pas déduire la correction d’un simple résultat de recherche vide.
Consulter le catalogue et sa méthode →
CISA KEV · 2026.11.06 · Consultation documentaire : 2026-11-07
Références officielles
Date de consultation des références : . La méthode et la fiche de travail proposent des contrôles à adapter à votre contexte ; elles ne constituent pas une certification.
- NIST — Secure Software Development Framework
- NIST — sécurité des chaînes d’approvisionnement logicielles
- OpenVEX v0.2.0
- MITRE · Common Weakness Enumeration
- SPDX · Specifications
- OWASP · CycloneDX
- NIST · Post-quantum cryptography
- NIST FIPS 203 · ML-KEM
- NIST FIPS 204 · ML-DSA
- NIST FIPS 205 · SLH-DSA
- SLSA 1.2 · Build: Verifying artifacts
- SLSA 1.2 · Build: Provenance
- SLSA 1.2 · Build: Track Basics
- in-toto · Statement v1
- Sigstore · Verifying Signatures
- CISA · KEV official snapshot
- CISA · KEV data schema
- CISA · Official mirror and reuse terms
- CISA · KEV licence
- FIRST · CVSS
- FIRST · EPSS
