Générer un SBOM conforme au CRA : outils, formats, CI/CD
Guide pratique pour générer un SBOM en vue de la conformité CRA : outils open source, choix du format et intégration automatisée dans les pipelines.
Dans cet article
Le CRA exige un SBOM. Tous les articles concurrents vous le disent. Aucun ne vous montre comment en générer un.
Ce guide couvre les outils open source, la sélection des formats et l'intégration CI/CD, sans verrouillage fournisseur.
Résumé
- Le CRA exige des SBOM lisibles par machine couvrant « au moins les dépendances de niveau supérieur »
- Formats recommandés : CycloneDX 1.4+ ou SPDX 2.3+ (selon BSI TR-03183)
- Outils open source : Syft (images/systèmes de fichiers), Trivy (conteneurs), cdxgen (code source)
- Intégrez la génération SBOM dans CI/CD pour des mises à jour automatiques
- La qualité compte : les champs minimum incluent nom du package, version, fournisseur, hash, licence
Ce que le CRA exige réellement
Commençons par ce que dit le règlement. L'Annexe I, partie II du CRA exige des fabricants de :
« recensent et documentent les vulnérabilités et les composants des produits, notamment par l'établissement d'une nomenclature des logiciels dans un format couramment utilisé et lisible par machine couvrant au moins les dépendances de niveau supérieur des produits »
Points clés :
- Format lisible par machine : pas un PDF, pas un tableur, des données structurées
- Au moins les dépendances de niveau supérieur : le périmètre minimum, bien que plus soit mieux
- Pas obligatoirement public : fourni aux autorités sur demande
- Doit être mis à jour : à chaque version, correctif ou changement de composant
Le CRA n'impose pas de format spécifique, mais les efforts de normalisation pointent clairement vers CycloneDX et SPDX.
Le SBOM fait partie de la documentation technique CRA au titre de l'Annexe VII. Les fabricants doivent établir cette documentation avant la mise sur le marché du produit et la tenir à la disposition des autorités de surveillance du marché pendant au moins 10 ans après cette date, ou pendant la durée d'assistance, la période la plus longue étant retenue (article 13(13)). Un SBOM stocké localement sans lien avec une version de produit spécifique ne satisfait pas à cette exigence. Il doit être accessible, versionné et lié à la version du produit qu'il décrit.
Sélection du format : CycloneDX vs SPDX
Deux formats dominent le paysage SBOM. Les deux sont acceptables pour la conformité CRA.
CycloneDX
Origine : projet OWASP, orienté sécurité Version actuelle : 1.6 (1.4+ recommandé pour le CRA) Idéal pour : sécurité et gestion des vulnérabilités
Points forts :
- Support natif VEX (Vulnerability Exploitability eXchange)
- Conçu pour les cas d'usage sécurité
- Spécification plus légère, plus facile à implémenter
- Fort écosystème d'outils
- Liaison directe CVE/vulnérabilités
Exemple JSON :
{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"version": 1,
"components": [
{
"type": "library",
"name": "lodash",
"version": "4.17.21",
"purl": "pkg:npm/lodash@4.17.21",
"hashes": [
{
"alg": "SHA-256",
"content": "cc6d..."
}
],
"licenses": [
{
"license": {
"id": "MIT"
}
}
]
}
]
}
SPDX
Origine : Linux Foundation, orienté conformité des licences Version actuelle : 2.3. ISO/IEC 5962:2021 a normalisé SPDX 2.2.1 Idéal pour : conformité des licences et revue juridique
Points forts :
- Norme internationale ISO
- Syntaxe complète d'expression de licence
- Solide dans les contextes de conformité open source
- Plus long historique
- Meilleur pour les scénarios de licence complexes
Exemple JSON :
{
"spdxVersion": "SPDX-2.3",
"dataLicense": "CC0-1.0",
"SPDXID": "SPDXRef-DOCUMENT",
"name": "my-application",
"packages": [
{
"SPDXID": "SPDXRef-Package-lodash",
"name": "lodash",
"versionInfo": "4.17.21",
"downloadLocation": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"licenseConcluded": "MIT",
"checksums": [
{
"algorithm": "SHA256",
"checksumValue": "cc6d..."
}
]
}
]
}
Lequel choisir ?
| Cas d'usage | Recommandation |
|---|---|
| Focus principal sur sécurité/vulnérabilités | CycloneDX |
| Focus principal sur conformité licences | SPDX |
| Besoin d'intégration VEX | CycloneDX |
| Entreprise avec outillage SPDX existant | SPDX |
| Marché allemand (BSI TR-03183) | Les deux (tous deux recommandés) |
| Départ de zéro, pas de préférence | CycloneDX (plus simple, orienté sécurité) |
Pour la conformité CRA, les deux formats fonctionnent. Choisissez-en un et soyez cohérent.
Outils open source de génération SBOM
Pas de verrouillage fournisseur nécessaire. Ces outils sont gratuits, open source et prêts pour la production.
Syft (Anchore)
Idéal pour : images de conteneurs, systèmes de fichiers, archives Licence : Apache 2.0 Formats de sortie : CycloneDX, SPDX, Syft JSON
Installation :
# Linux/macOS
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
# Homebrew
brew install syft
# Docker
docker pull anchore/syft
Exemples d'utilisation :
# Scanner une image de conteneur
syft alpine:latest -o cyclonedx-json > sbom.cdx.json
# Scanner un répertoire
syft dir:/chemin/vers/projet -o cyclonedx-json > sbom.cdx.json
# Scanner une archive
syft /chemin/vers/archive.tar.gz -o spdx-json > sbom.spdx.json
# Scanner avec catalogueurs spécifiques (ex. Python uniquement)
syft dir:. -o cyclonedx-json --select-catalogers python
Écosystèmes supportés : Python, Node.js, Ruby, Java, Go, Rust, PHP, .NET, et plus.
Trivy (Aqua Security)
Idéal pour : images de conteneurs avec contexte de vulnérabilité intégré Licence : Apache 2.0 Formats de sortie : CycloneDX, SPDX, plus rapports de vulnérabilités
Installation :
# Linux (Debian/Ubuntu)
sudo apt-get install trivy
# macOS
brew install trivy
# Docker
docker pull aquasec/trivy
Exemples d'utilisation :
# Générer SBOM depuis image conteneur
trivy image --format cyclonedx --output sbom.cdx.json alpine:latest
# Générer SBOM depuis système de fichiers
trivy fs --format cyclonedx --output sbom.cdx.json /chemin/vers/projet
# Générer SBOM avec info vulnérabilités
trivy image --format cyclonedx --output sbom.cdx.json \
--scanners vuln nginx:latest
Avantage : Trivy peut générer des SBOM et scanner les vulnérabilités en une seule passe.
Cdxgen (CycloneDX)
Idéal pour : analyse de code source dans de nombreux langages Licence : Apache 2.0 Format de sortie : CycloneDX
Installation :
# npm (nécessite Node.js)
npm install -g @cyclonedx/cdxgen
# Docker
docker pull ghcr.io/cyclonedx/cdxgen
Exemples d'utilisation :
# Scanner le répertoire courant
cdxgen -o sbom.json
# Scanner un type de projet spécifique
cdxgen -t python -o sbom.json
# Scanner avec résolution de dépendances profonde
cdxgen --deep -o sbom.json
# Scanner un répertoire spécifique
cdxgen -o sbom.json /chemin/vers/projet
Langages supportés : JavaScript, Python, Java, Go, Rust, PHP, Ruby, .NET, C/C++, et plus.
Comparaison des outils
| Fonctionnalité | Syft | Trivy | cdxgen |
|---|---|---|---|
| Images conteneurs | Excellent | Excellent | Bon |
| Code source | Bon | Bon | Excellent |
| Scan système de fichiers | Excellent | Bon | Bon |
| Scan vulnérabilités | Non (utiliser Grype) | Oui | Non |
| Sortie CycloneDX | Oui | Oui | Oui |
| Sortie SPDX | Oui | Oui | Non |
| Vitesse | Rapide | Moyen | Moyen |
| Couverture langages | Très large | Large | Très large |
Recommandation : commencez avec Syft pour la plupart des cas. Ajoutez Trivy si vous avez besoin de scan de vulnérabilités intégré. Utilisez cdxgen pour les projets de code source complexes.
Micrologiciels et appareils embarqués
Les outils ci-dessus fonctionnent bien pour les conteneurs et les gestionnaires de packages. Pour les micrologiciels et appareils embarqués (cible principale du CRA), l'approche est différente.
Les images de micrologiciel sont des blobs binaires, pas des registres de packages. La première étape standard consiste à extraire le système de fichiers :
# Extraire le système de fichiers de l'image micrologiciel
binwalk -Me firmware.bin
# Lancer Syft sur le système de fichiers extrait
syft dir:_firmware.bin.extracted/squashfs-root -o cyclonedx-json > sbom.cdx.json
Utilisez binwalk -Me (extraction récursive) plutôt que -e pour les images imbriquées ou compressées. La couverture sera inférieure à celle des images de conteneurs. Les binaires dépouillés perdent les informations de symboles, et Syft peut ne pas identifier tous les composants.
Pour l'analyse au niveau binaire des composants compilés, BLint, cve-bin-tool ou EMBA permettent une inspection plus approfondie. Les SDK propriétaires et les bibliothèques closed-source intégrés dans les micrologiciels nécessitent généralement des entrées SBOM manuelles. Documentez le fournisseur, la version et l'URL source.
Intégration CI/CD
La génération manuelle de SBOM ne passe pas à l'échelle. Intégrez-la dans votre pipeline de build.
GitHub Actions
name: Génération SBOM
on:
push:
branches: [main]
release:
types: [published]
jobs:
sbom:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write # requis pour la signature sans clé Cosign
steps:
- name: Checkout du code
uses: actions/checkout@v4
- name: Construire l'image conteneur
run: |
docker build -t myapp:${{ github.sha }} .
- name: Installer Syft
run: |
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
- name: Générer le SBOM depuis l'image construite
run: |
syft myapp:${{ github.sha }} -o cyclonedx-json > sbom.cdx.json
- name: Installer Cosign
uses: sigstore/cosign-installer@v3
- name: Signer le SBOM (sans clé)
run: |
cosign sign-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json --yes
- name: Téléverser le SBOM et la signature comme artefacts
uses: actions/upload-artifact@v4
with:
name: sbom
path: |
sbom.cdx.json
sbom.cdx.json.sigstore.json
retention-days: 90
# Optionnel : téléverser vers CRA Evidence pour la conservation à long terme
- name: Téléverser vers CRA Evidence
if: github.event_name == 'release'
env:
CRA_EVIDENCE_TOKEN: ${{ secrets.CRA_EVIDENCE_TOKEN }}
run: |
curl -X POST https://api.craevidence.com/api/v1/ci/sbom \
-H "Authorization: Bearer $CRA_EVIDENCE_TOKEN" \
-F "file=@sbom.cdx.json" \
-F "product_id=${{ vars.PRODUCT_ID }}" \
-F "version=${{ github.ref_name }}"
Note : La rétention des artefacts CI (
retention-days: 90) est prévue pour la commodité des développeurs, pas pour la conformité. La rétention de 10 ans exigée par le CRA nécessite un stockage dédié à long terme sur chaque version. Voir la section Rétention ci-dessous.
GitLab CI
generate-sbom:
stage: build
image: anchore/syft:latest
script:
- syft dir:. -o cyclonedx-json > sbom.cdx.json
artifacts:
paths:
- sbom.cdx.json
expire_in: 90 days
rules:
- if: $CI_COMMIT_BRANCH == "main"
- if: $CI_COMMIT_TAG
Jenkins
pipeline {
agent any
stages {
stage('Générer SBOM') {
steps {
sh '''
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b .
./syft dir:. -o cyclonedx-json > sbom.cdx.json
'''
}
}
stage('Archiver SBOM') {
steps {
archiveArtifacts artifacts: 'sbom.cdx.json', fingerprint: true
}
}
}
}
Intégration build Docker
Générer le SBOM pendant le build Docker :
# Build multi-étapes avec génération SBOM
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Générer SBOM dans l'étape de build
FROM anchore/syft:latest AS sbom
COPY --from=builder /app /app
RUN syft dir:/app -o cyclonedx-json > /sbom.cdx.json
# Image finale
FROM node:20-slim
COPY --from=builder /app/dist /app
COPY --from=sbom /sbom.cdx.json /app/sbom.cdx.json
CMD ["node", "/app/index.js"]
Signature du SBOM
Le CRA n'impose pas la signature du SBOM, mais signer établit que le SBOM n'a pas été modifié depuis sa génération. Les équipes d'achats en entreprise et les organismes notifiés attendent de plus en plus une signature vérifiable aux côtés du fichier SBOM.
Cosign (partie du projet Sigstore) est l'outil standard :
# Installer Cosign
brew install cosign
# Signer un fichier SBOM. Produit un bundle contenant la signature et le certificat
cosign sign-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json
# Vérifier ultérieurement
cosign verify-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json \
--certificate-identity <votre-identité> \
--certificate-oidc-issuer <votre-émetteur>
Conservez sbom.cdx.json et sbom.cdx.json.sigstore.json ensemble. Le bundle contient la signature, le certificat de signature et l'entrée du journal de transparence Rekor. Toute personne disposant du bundle peut vérifier le SBOM sans vous contacter.
Pour CI/CD, Cosign prend en charge la signature sans clé en utilisant l'identité OIDC du pipeline (GitHub Actions, GitLab CI). Aucune clé à gérer. L'exemple GitHub Actions ci-dessus inclut déjà ceci : le job nécessite la permission id-token: write, et sign-blob prend --yes pour s'exécuter sans invite interactive. Cosign 2.0 et ultérieur font de la signature sans clé le mode par défaut, de sorte que l'ancien indicateur COSIGN_EXPERIMENTAL n'est plus nécessaire.
Surveillance continue
Un SBOM signé et stocké n'est pas l'étape finale. De nouvelles vulnérabilités sont divulguées pour des composants qui étaient propres au moment de la version. Le SBOM stocké doit être ré-analysé régulièrement pour que ces CVE remontent.
Grype lit un SBOM existant directement, de sorte que la ré-analyse n'a pas besoin de l'environnement de build d'origine :
name: SBOM Rescan
on:
schedule:
- cron: "0 6 * * 1" # Hebdomadaire, lundi 06:00 UTC
jobs:
rescan:
runs-on: ubuntu-latest
steps:
- name: Récupérer le SBOM stocké
env:
SBOM_URL: ${{ vars.SBOM_URL }}
run: |
curl -sSfL -o sbom.cdx.json "$SBOM_URL"
- name: Installer Grype
run: |
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
- name: Scanner le SBOM pour détecter les nouvelles CVE
run: |
grype sbom:./sbom.cdx.json
CRA Evidence exécute automatiquement cette ré-analyse pour chaque SBOM téléversé et vous alerte quand une nouvelle CVE correspond à un composant, couvrant ainsi le même besoin sans job planifié.
Qualité SBOM : respecter TR-03183
La directive technique allemande BSI TR-03183 étend les éléments minimum NTIA. Bien que non légalement requis dans toute l'UE, suivre TR-03183 assure des SBOM de haute qualité.
Champs requis
| Champ | Requis par | Notes |
|---|---|---|
| Nom du composant | NTIA + TR-03183 | Identifiant du package |
| Version | NTIA + TR-03183 | Chaîne de version exacte |
| Fournisseur | NTIA + TR-03183 | Éditeur ou mainteneur |
| Identifiant unique | NTIA + TR-03183 | PURL recommandé |
| Relation de dépendance | NTIA + TR-03183 | Directe vs transitive |
| Auteur du SBOM | NTIA + TR-03183 | Qui a créé le SBOM |
| Horodatage | NTIA + TR-03183 | Quand le SBOM a été créé |
| Valeurs de hash | TR-03183 | SHA-256 minimum |
| Licence | TR-03183 | ID de licence SPDX |
| Dépôt source | TR-03183 | URL VCS si disponible |
Validation de la qualité SBOM
Utilisez ces outils pour vérifier votre SBOM :
# Valider le format CycloneDX
npm install -g @cyclonedx/cyclonedx-cli
cyclonedx validate --input-file sbom.cdx.json
# Vérifier les champs minimum avec jq
jq '.components[] | select(.version == null or .purl == null)' sbom.cdx.json
# Compter les composants avec hashes
jq '[.components[] | select(.hashes != null)] | length' sbom.cdx.json
Améliorer la qualité SBOM
Si votre SBOM manque de données :
- Utilisez les fichiers de verrouillage :
package-lock.json,Pipfile.lock,go.sumcontiennent plus de métadonnées - Scannez les artefacts construits : plus complet que les scans du code source seul
- Combinez les outils : différents outils trouvent différents composants
- Ajoutez des entrées manuelles : pour les composants commerciaux ou internes
Maintenir les SBOM à jour
Un SBOM est un instantané. Il doit être mis à jour pour rester utile.
Quand regénérer
- Chaque version (majeure, mineure, correctif)
- Après mises à jour des dépendances
- Après correctifs de sécurité
- Quand la configuration de build change
Stratégie de versionnement
produit-v1.0.0-sbom.cdx.json
produit-v1.0.1-sbom.cdx.json
produit-v1.1.0-sbom.cdx.json
Ou utilisez des horodatages :
produit-sbom-2026-01-15T10-30-00Z.cdx.json
Rétention
L'article 13(13) oblige les fabricants à tenir la documentation technique à la disposition des autorités de surveillance du marché pendant au moins 10 ans après la mise sur le marché du produit, ou pendant la durée d'assistance, la période la plus longue étant retenue. Le SBOM fait partie de cette documentation : le même délai s'y applique.
La rétention des artefacts CI (90 jours dans les exemples ci-dessus) est prévue pour la commodité des développeurs, pas pour la conformité. L'obligation de 10 ans nécessite un stockage dédié à long terme. CRA Evidence est conçu pour cela : stockage SBOM versionné avec ré-analyse de vulnérabilités et export du dossier technique, lié à chaque version de produit.
Si vous préférez l'héberger vous-même, tout grand stockage objet fonctionne dès que vous activez les bons contrôles :
| Stockage objet | Contrôles à activer |
|---|---|
| Amazon S3 | Versionnement, politiques de cycle de vie, Object Lock, contrôles d'accès |
| Azure Blob Storage | Politiques d'immuabilité, gestion des niveaux d'accès |
| Google Cloud Storage | Politiques de rétention, versionnement des objets |
Une politique de cycle de vie seule ne suffit pas. Le stockage doit aussi prendre en charge le versionnement, les contrôles d'accès et, idéalement, l'immuabilité pour satisfaire aux exigences d'audit.
Pièges courants
Génération SBOM ponctuelle
Problème : créer un SBOM une fois et ne jamais le mettre à jour.
Solution : automatisez la génération SBOM dans CI/CD. Chaque build devrait produire un SBOM frais.
Dépendances transitives manquantes
Problème : le SBOM ne liste que les dépendances directes, manquant les packages imbriqués.
Solution : utilisez les fichiers de verrouillage, scannez les artefacts construits, activez les options de scan profond.
Mauvaise version de format
Problème : utiliser CycloneDX 1.3 quand TR-03183 recommande 1.4+.
Solution : vérifiez la version de sortie de votre outil. Mettez à jour les outils régulièrement.
Pas de valeurs de hash
Problème : les composants sans hashes cryptographiques ne peuvent pas être vérifiés.
Solution : assurez-vous que votre outil inclut les hashes. Syft et Trivy ajoutent des hashes SHA-256 quand ils peuvent lire les fichiers des composants.
Création manuelle
Problème : créer des SBOM à la main est sujet aux erreurs et non durable.
Solution : toujours automatiser. Entrées manuelles uniquement pour les composants que les outils ne peuvent pas détecter.
Ignorer les composants internes
Problème : ne documenter que les dépendances open source, pas le code propriétaire.
Solution : les composants internes ont aussi besoin de documentation. Ajoutez-les manuellement ou configurez les outils de façon adaptée.
Liste de contrôle d'implémentation SBOM
- CycloneDX 1.4+ ou SPDX 2.3+ choisi.
- Format JSON sélectionné (lisible par machine, ni PDF ni tableur).
- Décision de format documentée pour l'équipe.
Les deux formats satisfont au CRA. Le BSI TR-03183 recommande les deux. Changer de format en cours de produit est coûteux : décidez avant la première version.
- Outil principal sélectionné : Syft, Trivy ou cdxgen.
- Outil installé et testé localement sur un artefact réel.
- Sortie validée contre le schéma CycloneDX ou SPDX.
Choisissez l'outil adapté à l'artefact. Le tableau de comparaison ci-dessus indique la meilleure option pour les conteneurs, les arbres sources et les images de micrologiciel.
- Génération SBOM ajoutée au pipeline de build.
- Artefacts stockés avec une politique de rétention adaptée.
- Génération déclenchée sur chaque tag de version, pas seulement sur les pushs vers la branche principale.
Une version sans SBOM correspondant est une lacune de conformité dès le premier jour. Intégrez la génération au pipeline pour que l'étape ne puisse pas être omise.
- Tous les composants ont un nom, une version et un fournisseur.
- Valeurs de hash présentes pour chaque composant (SHA-256 minimum).
- Informations de licence incluses avec des identifiants de licence SPDX.
- Dépendances transitives capturées, pas seulement les directes.
- Identifiants PURL utilisés pour chaque package.
Exécutez cyclonedx validate et vérifiez les hashes manquants avec jq '[.components[] | select(.hashes == null)] | length'.
- SBOM versionné et nommé aux côtés de la version produit qu'il décrit.
- SBOM historiques archivés avec une politique de rétention de 10 ans.
- Processus documenté pour que tout membre de l'équipe puisse régénérer à la demande.
La rétention est une obligation légale, pas une tâche de maintenance. Conservez chaque SBOM historique lié à la version qu'il décrit pendant toute la durée requise.
- Token API configuré dans les secrets CI.
- Téléversement SBOM automatisé à la version via CLI ou API.
- Scoring qualité TR-03183 examiné après le premier téléversement.
CRA Evidence automatise la surveillance des vulnérabilités, le scoring qualité et l'export du dossier technique avec des SBOM intégrés.
Foire aux questions
Le CRA impose-t-il un format SBOM spécifique ?
Non. Le CRA exige un format lisible par machine mais ne nomme ni CycloneDX ni SPDX. Les deux formats satisfont au règlement. Le BSI TR-03183 recommande explicitement CycloneDX 1.4+ ou SPDX 2.3+, et chacun constitue un choix défendable face aux auditeurs. Choisissez-en un et appliquez-le de façon cohérente sur toutes les versions.
Faut-il inclure les dépendances transitives ?
Le texte du CRA dit « au moins les dépendances de niveau supérieur ». C'est le minimum légal. Le BSI TR-03183 recommande une couverture transitive complète, et c'est ce que les autorités et les clients attendent en pratique. Scanner les artefacts construits plutôt que les manifestes sources est le moyen le plus simple de capturer automatiquement l'arbre complet des dépendances.
Le SBOM doit-il être rendu public ?
Non. Le CRA n'exige pas de divulgation publique. Vous devez être en mesure de fournir le SBOM aux autorités de surveillance du marché sur demande. Le partager avec des clients ou le publier ouvertement est facultatif et relève d'une décision commerciale. De nombreux fabricants fournissent des SBOM à leurs clients entreprises dans le cadre des achats.
À quelle fréquence faut-il mettre à jour le SBOM ?
Le CRA ne fixe pas de calendrier. Chaque version du produit doit avoir un SBOM à jour. En pratique, cela signifie le régénérer à chaque version, après des mises à jour de dépendances, après des correctifs de sécurité et quand la configuration de build change. Automatiser la génération SBOM dans CI/CD rend cette étape automatique plutôt que manuelle.
Un package.json ou requirements.txt suffit-il ?
Non. Les manifestes sources ne sont pas des SBOM. Un SBOM conforme au CRA doit être dans un format structuré lisible par machine (CycloneDX ou SPDX), inclure des hashes cryptographiques pour chaque composant et refléter l'artefact construit plutôt que le seul arbre source. Un package.json liste les dépendances prévues ; un SBOM CycloneDX issu d'un scan de l'image conteneur documente ce qui a réellement été livré.
Combien de temps faut-il conserver les SBOM ?
L'article 13(13) oblige les fabricants à conserver la documentation technique à la disposition des autorités de surveillance du marché pendant au moins 10 ans après la mise sur le marché du produit, ou pendant la durée d'assistance, la période la plus longue étant retenue. Le SBOM fait partie de cette documentation : le même délai s'y applique.
Que faire si un composant n'a pas de PURL ni de hash ?
Ajoutez-le manuellement. Les outils manquent les SDK commerciaux, les bibliothèques propriétaires et les composants internes qui n'apparaissent pas dans les registres de packages publics. Une entrée SBOM manuelle est valide au titre du CRA. Un composant non documenté ne l'est pas. Pour les composants dont vous ne pouvez pas calculer de hash directement, documentez au moins l'emplacement source et la chaîne de version, et signalez la lacune dans votre dossier technique.
Exigences : comprenez ce que le CRA exige pour les SBOM dans notre guide des exigences SBOM.
Qualité : validez votre SBOM contre le standard BSI TR-03183.
VEX : ajoutez du contexte de vulnérabilité à votre SBOM avec les documents VEX.
Cet article est fourni à titre informatif uniquement et ne constitue pas un conseil juridique. Pour des conseils de conformité spécifiques, consultez un conseiller juridique qualifié familier avec les réglementations produit de l'UE.
Articles connexes
CRA pour les fabricants allemands : BSI, CERT-Bund et marquage CE
Le CRA s'applique-t-il à votre produit ?
Répondez à 6 questions simples pour savoir si votre produit relève du champ d'application du règlement sur la cyberrésilience de l'UE. Obtenez votre résultat en moins de 2 minutes.
Prêt à atteindre la conformité CRA ?
Commencez à gérer vos SBOMs et votre documentation de conformité avec CRA Evidence.