Qu’est-ce que c’est ?

Une SBOM (Software Bill of Materials) est un fichier qui liste tous les composants logiciels utilisés dans un projet, y compris leurs versions et leurs dépendances. C’est un peu comme une liste d’ingrédients pour une recette de cuisine, mais pour les logiciels.

Elles peuvent exister sous plusieurs formats notamment pour les plus connus : CycloneDX, SPDX.

Les différents formats

CycloneDX

CycloneDX est un format de SBOM conçu pour être facile à lire et à analyser. Il utilise une structure hiérarchique pour représenter les composants logiciels et leurs dépendances, ce qui facilite la compréhension des relations entre les différents éléments d’un projet. Il est notamment développé par la fondation OWASP et est largement utilisé dans l’industrie pour la gestion des vulnérabilités et la conformité.

SPDX

SPDX (Software Package Data Exchange) quant à lui est un format développé par la Linux Foundation. Il est conçu pour être un standard ouvert et largement adopté pour la représentation des informations sur les composants logiciels, y compris les licences, les vulnérabilités et les dépendances.

Exemple d’une SBOM au format SPDX :

Lequel choisir ?

Le choix entre SPDX et CycloneDX dépend de vos besoins spécifiques en matière de gestion des composants logiciels. Si vous recherchez un format facile à lire et à analyser, CycloneDX peut être un bon choix. Si vous avez besoin d’un format plus complet qui inclut des informations sur les licences et les vulnérabilités, SPDX pourrait être plus adapté.

Voici un tableau récapitulatif pour vous aider à choisir :

CaractéristiqueSPDXCycloneDX
Facilité de lectureMoins lisible pour les humains ❌Plus lisible ✅
Analyse automatiséePlus adapté pour l’analyseAdapté pour l’analyse
AdoptionLarge adoption dans l’industrieAdoption croissante
Support des licencesOui ✅Non ❌
Support des vulnérabilitésOui ✅Non ❌

Comment la générer ?

Un de mes outils préférés pour générer des SBOM est Syft, développé par Anchore. Syft est un outil en ligne de commande qui peut analyser les images de conteneurs, les systèmes de fichiers et les projets de code source pour générer des SBOM au format CycloneDX ou SPDX.

Il supporte une multitude de langages et de gestionnaires de paquets.

Les autres standards du marché sont cdxgen et trivy, ce dernier ayant été impacté par une faille de sécurité récemment, je préfère ne pas l’utiliser pour le moment (cf. l’excellent article de Stéphane Robert à ce sujet).

Installation

Sur Linux ou macOS, vous pouvez installer Syft en utilisant Homebrew :

brew install anchore/syft/syft

ou via curl :

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

Sur Windows j’aime utiliser Scoop :

scoop bucket add main
scoop install syft

Un petit coup de syft version pour vérifier que tout est bien installé et c’est parti !

syft version
Application:   syft
Version:       1.38.0
BuildDate:     2025-11-17T17:42:49Z
GitCommit:     a033ae525f6c7ef937c6f49513e3403f07a1d6c0
GitDescription: v1.38.0
Platform:      windows/amd64
GoVersion:     go1.25.4
Compiler:      gc
SchemaVersion: 16.1.0

Utilisation

Voici comment générer une SBOM pour une image Docker

Le plus simple pour commencer est de s'appuyer sur une image docker standard comme alpine.

```bash
syft alpine:latest -o cyclonedx-json > sbom.json

Ici la commande pull alpine:latest et génère une SBOM au format CycloneDX en JSON, qui est ensuite redirigée vers un fichier sbom.json.

Voici comment générer une SBOM pour un projet de code source

syft dir:/path/to/your/project -o cyclonedx-json > sbom.json

ou pour cibler sur un fichier en particulier :

syft file:/path/to/your/project/package.json -o cyclonedx-json > sbom.json # pour un projet Node.js
syft file:/path/to/your/project/pyproject.toml -o cyclonedx-json > sbom.json # pour un projet Python

Conclusion

La SBOM est un outil essentiel pour la gestion des composants logiciels et la sécurité des applications. En fournissant une vue d’ensemble claire de tous les composants utilisés dans un projet, elle permet aux équipes de développement et de sécurité de mieux comprendre les risques associés à leurs logiciels et de prendre des mesures proactives pour les atténuer.

Cette SBOM peut ensuite être intégrée dans votre pipeline CI/CD et analysée avec des outils comme Dependency Track pour détecter les vulnérabilités connues et assurer la conformité de vos logiciels.

Sources