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

Banc de vérification fictif sans personne, carte électronique sous une loupe et boîtier métallique éclairés en ambre.

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Les quatre statuts OpenVEX
not_affectedLe 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.
affectedLe produit est déclaré affecté. La déclaration doit inclure un action_statement pour accompagner le traitement de la vulnérabilité.
fixedLes versions désignées contiennent un correctif. Cela ne démontre pas que cette version est effectivement installée chez vous.
under_investigationL’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

IndicateurCe qu’il mesurePremière action
Couverture SBOMVersions livrées avec nomenclature vérifiéeCorriger les écarts avant publication
Provenance vérifiéeArtefacts contrôlés avant déploiementBloquer les versions sans preuve attendue
Délai de triageTemps entre avis pertinent et décision documentéeEscalader les composants exposés
RéversibilitéRemplacements critiques testés avec retour arrièreLever 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 .

Nomenclature logicielle : de l’inventaire à la vérificationArtefact effectivement livré. SPDX · Décrire. CycloneDX · Décrire. Analyse d’applicabilité. Relier document et construction. Composants et informations. Composants et dépendances. Versions, avis et configuration. Une nomenclature n’est pas une preuve d’absence de vulnérabilités.Nomenclature logicielle : de l’inventaire à la vérificationArtefact effectivement livréRelier document et constructionSPDX · DécrireComposants et informationsCycloneDX · DécrireComposants et dépendancesAnalyse d’applicabilitéVersions, avis et configurationUne nomenclature n’est pas une preuve d’absence de vulnérabilités
Nomenclature logicielle : de l’inventaire à la vérification
Références : données, usages et limites
Source et objetDonnée ou repère vérifiéComment l’utiliserLimite à 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.

Approfondir la méthode →

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é.

Approfondir la méthode →

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é.

Approfondir la méthode →

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.

Approfondir la méthode →

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 .

Établir un secret et signer : deux chemins distincts

ML-KEM · Établir un secret

  1. Le destinataire publie sa clé d’encapsulation.
  2. L’émetteur produit un chiffré et un secret partagé, puis transmet le chiffré.
  3. 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

  1. Le signataire protège sa clé privée et distribue sa clé publique.
  2. Il signe les données et transmet les données avec leur signature.
  3. 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.

Tailles brutes en octets · FIPS 203, 204 et 205
Jeu de paramètres / sourceCatégorie NISTClé publiqueClé privéeChiffré KEM / signatureSecret partagé
ML-KEM-512FIPS 203 18001 632 76832
ML-KEM-768FIPS 203 31 1842 400 1 08832
ML-KEM-1024FIPS 203 51 5683 168 1 56832
ML-DSA-44FIPS 204 21 3122 560 2 420—
ML-DSA-65FIPS 204 31 9524 032 3 309—
ML-DSA-87FIPS 204 52 5924 896 4 627—
SLH-DSA-SHA2-128sFIPS 205 13264 7 856—
SLH-DSA-SHA2-128fFIPS 205 13264 17 088—
SLH-DSA-SHA2-192sFIPS 205 34896 16 224—
SLH-DSA-SHA2-192fFIPS 205 34896 35 664—
SLH-DSA-SHA2-256sFIPS 205 564128 29 792—
SLH-DSA-SHA2-256fFIPS 205 564128 49 856—
SLH-DSA-SHAKE-128sFIPS 205 13264 7 856—
SLH-DSA-SHAKE-128fFIPS 205 13264 17 088—
SLH-DSA-SHAKE-192sFIPS 205 34896 16 224—
SLH-DSA-SHAKE-192fFIPS 205 34896 35 664—
SLH-DSA-SHAKE-256sFIPS 205 564128 29 792—
SLH-DSA-SHAKE-256fFIPS 205 564128 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 ?

Quelles preuves demander avant un pilote ?
Usage à inventorierÉléments à releverEssai utile et condition de décision
Échanges et données confidentiellesApplication, 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 à jourChaî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 techniquesAutorité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 conservationFormats, 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

Quatre statuts OpenVEX, avec leur portée
Statut exactSens de la déclarationContrôle côté consommateur
not_affectedLe 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.
affectedDes 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.
fixedLes 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_investigationL’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

Cinq justifications : des preuves différentes à rechercher
Libellé OpenVEXCe que la justification affirmePièce locale proposée pour l’examiner
component_not_presentLe 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_presentLe 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_pathLe 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_adversaryUn 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_existDes 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.