Comment extraire ou générer des SBOM
à partir de presque n'importe quel logiciel ?
Pour commencer, vous devrez générer des SBOM en utilisant l’un des différents outils en fonction du système ou de l’application à suivre.
Aller un pas plus loin en automatisant la génération de SBOM garantira que votre inventaire de logiciels reste toujours à jour et facilitera votre parcours vers la transparence du logiciel. Des informations supplémentaires sur l’automatisation du transfert de SBOM sont disponibles sur cette page de documentation.
Comme la récupération des SBOM est un sujet en constante évolution, avec des outils qui apparaissent ou disparaissent avec le temps, nous ferons de notre mieux pour maintenir cette page à jour et refléter la situation actuelle de la communauté open source.
Contactez-nous pour partager d'autres outils formidables que vous avez trouvés pour faciliter le processus de génération de SBOM, nous les examinerons et les inclurons ici pour aider les autres.Passons maintenant à la pratique…
Extraire le SBOM durant le développement
Idéalement, les applications construites à partir de leur code source devraient générer leur SBOM en tant qu’étape complémentaire au sein du processus d’intégration et de déploiement en continus (CI/CD).
De nombreux outils et plugins différents vous aideront en fonction de la technologie employée par vos applications :
- Angular Webpack
- C / C++ Conan
- Dockerfile
- Erlang / Elixir Mix ou Rebar3
- Go modules ou une alternative plus ancienne
- .NET core nuGet
- Node npm
- Java Maven, Gradle
- Javascript Bower ou Webpack
- Objective-C / Swift CocoaPods
- PHP Composer
- Python Conda ou buildroot
- React Webpack
- Ruby Gem
- Rust Cargo
- Scala sbt
Ou vous préférez peut-être utiliser cdxgen, qui est un générateur d’inventaire multi-languages compatible avec presque tous les langages de programmation, gestionnaires de paquets et systèmes d’exploitation.
Extraire le SBOM lors du déploiement
Idéalement, vous devriez obtenir le SBOM pour toute solution tierce directement auprès de son fournisseur. Cependant, de nombreux fournisseurs ne sont pas encore prêts pour cela. Alors que l’industrie achève sa mûe dans ce domaine, vous devrez peut-être générer vous-même le SBOM des applications tierces.
Heureusement, cela peut aussi être entièrement automatisé et intégré dans votre pipeline de déploiement. Nous vous montrerons dans cette section les outils à utiliser pour cette extraction.
Applications installées via des gestionnaires de paquets
Les SBOM pour les applications installées via des gestionnaires de paquets peuvent être analysés assez facilement à l’aide d’outils tels que syft ou spdx. Dans les exemples ci-dessous, nous nous concentrerons sur syft, car il ne nécessite aucune conversion et est légèrement plus mature que spdx.
Linux / MacOS
L’analyse peut être effectuée sur toutes les distributions à l’aide de la commande suivante :
# Installer syft
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sudo sh -s -- -b /usr/local/bin
# Analyser la machine complète
sudo /usr/local/bin/syft scan dir:/ --output cyclonedx-json > "$HOSTNAME.sbom.json"
Alternativement, si vous avez Docker sur cette machine et que vous préférez exécuter syft sans installation préalable pour analyser l’hôte, vous exécuterez simplement la commande suivante :
docker run --rm -a stdout -v /:/host:ro anchore/syft scan dir:/host --output cyclonedx-json > "$HOSTNAME.sbom.json"
Windows
De manière similaire pour Windows, la dernière version de syft peut être téléchargée depuis la page release. Parfois, la version Windows est publiée après les versions Linux et Darwin, vous pouvez choisir une version binaire précédente ou exécuter la version Linux dans WSL ou la version Docker si vous préférez utiliser la dernière version immédiatement.
Pour exécuter la version Windows, adaptez la commande suivante à vos besoins dans une fenêtre de commande administrateur :
syft scan dir:"c:" --output cyclonedx-json > "%ComputerName%.sbom.json"
Environnements virtuels
Conteneurs Docker
Nous recommandons d’utiliser notre script syft.sh
présenté ci-dessous.
#!/bin/bash
docker run --rm
-v /:/host:ro
-v ${PWD}:/out
-v /var/lib/docker/volumes:/var/lib/docker/volumes:ro
-v /var/run/docker.sock:/var/run/docker.sock:ro
-a stdin -a stdout -a stderr
-i anchore/syft "$@"
Il peut être utilisé de nombreuses manières différentes (consultez toutes les possibilités en utilisant syft.sh --help
). Par exemple, pour analyser des images existantes, vous utiliseriez la commande suivante :
# Replacer {{container:tag}} par la bonne valeur
syft.sh scan registry:{{container:tag}} --output cyclonedx-json > {{container:tag}}.sbom.json
Système d’exploitation / Machine virtuelle / Autres applications
Les applications installées manuellement, y compris les applications à code source fermé, sont plus difficiles à analyser à l’heure actuelle. Vous pouvez analyser les applications installées via des gestionnaires de paquets à l’aide de syft, comme indiqué dans la section ci-dessus, et vous pouvez également couvrir d’autres scénarios avec cdxgen.
# Analyser tous les paquets OS avec syft (par ex: debian)
syft scan dir:/var/lib/dpkg --output cyclonedx-json > "$HOSTNAME.sbom.json"
# Analyser tout avec syft (peut être lent)
syft scan dir:/ --output cyclonedx-json > "$HOSTNAME.sbom.json"
Binaires / Application Mobile
L’analyse des binaires, tels que les packages d’applications mobiles (APK pour Android et IPA pour iOS), représente des défis significatifs. Cependant, cette pratique demeure nécessaire, notamment dans les cas où le fournisseur n’a pas encore fourni une liste de composants logiciels (SBOM - Software Bill of Materials). cve-bin-tool peut s’avérer utile pour extraire certaines informations dans ces situations :
cve-bin-tool --sbom-type cyclonedx --sbom-output application.sbom.json Application.apk
Conclusion
La communauté propose de nombreux outils pour extraire et générer des SBOM. Nous espérons que cette page vous a aidé à sélectionner les outils les plus appropriés pour votre cas d’utilisation.
Les SBOM sont déjà la norme lors de la livraison de logiciels au gouvernement américain. Nous pensons que cette pratique se développera également dans le monde entier et que le SBOM deviendra un artefact de livraison standard qui aidera l’industrie à améliorer la transparence de la chaîne d’approvisionnement.
La génération de SBOM n’est que la première étape de votre parcours. Pour une intégration facilitée et une gestions simplifiée, nous proposons une version managée de Dependency-Track en version cloud.
Pour la suite de la lecture, nous vous suggérons notre page d’automatisation du transfert de SBOM.
Vous ne savez toujours pas comment extraire un SBOM ?
Contactez-nous dès aujourd'hui !