Comment générer un SBOM avec l'outil Open Source de Microsoft
Agence web » Actualités du digital » Comment générer un SBOM avec l’outil Open Source de Microsoft

Comment générer un SBOM avec l’outil Open Source de Microsoft

Une SBOM (Software Bill of Materials) vous aide à comprendre votre chaîne d’approvisionnement logicielle en répertoriant les packages et les fournisseurs sur lesquels repose votre code. Les SBOM gagnent rapidement du terrain en tant que moyen d’aider à améliorer la sécurité à la suite d’importantes attaques de la chaîne d’approvisionnement dans le monde réel.

L’un des principaux partisans des SBOM est Microsoft, qui a publié son approche de leur génération en octobre 2021. Plus tôt cette année, la société a ouvert son outil de production de SBOM sur Windows, macOS et Linux.

Dans cet article, vous apprendrez comment commencer à utiliser le projet pour indexer les dépendances de votre code. Il produit des documents compatibles SPDX qui répertorient les fichiers, les packages et les relations au sein de votre projet. SPDX (Software Package Data Exchange) est la norme acceptée par l’ISO pour les SBOM afin que vous puissiez transmettre les rapports générés directement dans d’autres outils de l’écosystème.

Microsoft a initialement annoncé le projet sous le nom de Salus. Il a depuis été retiré de ce terme car il est en conflit avec le projet de sécurité du code Salus existant qui a pris naissance chez Coinbase. Le générateur SBOM est maintenant appelé simplement sbom-tool.

Commencer

Vous pouvez télécharger SBOM Tool à partir du référentiel GitHub de Microsoft. Les binaires précompilés sont disponibles sur la page des versions. Sélectionnez le bon téléchargement pour votre système, puis rendez le binaire exécutable et déplacez-le vers un emplacement de votre chemin.

Voici un exemple pour Linux :

$ wget https://github.com/microsoft/sbom-tool/releases/download/v<VERSION>/sbom-tool-linux-x64
$ chmod +x sbom-tool-linux-x64
$ mv sbom-tool-linux-x64 /usr/local/bin/sbom-tool

Tu devrais pouvoir courir sbom-tool pour afficher les informations d’aide dans la fenêtre de votre terminal :

$ sbom-tool
No action was specified

The Sbom tool generates a SBOM for any build artifact.

Usage - Microsoft.Sbom.Tool <action> -options

Génération d’un SBOM

De nouveaux SBOM sont créés en exécutant l’outil generate sous-commande. Quelques arguments sont à fournir :

  • -b (BuildDropPath) – Le dossier dans lequel enregistrer les manifestes SPDX SBOM générés.
  • -bc (BuildComponentPath) – Le dossier qui sera analysé pour trouver les dépendances dans votre projet.
  • -nsb (NamespaceUriBase) – Le chemin de base qui sera utilisé comme espace de noms du manifeste SBOM. Il doit s’agir d’une URL appartenant à votre organisation, telle que https://example.com/sbom.

SBOM Tool doit également connaître le nom et la version de votre projet. Il peut souvent déduire cela à partir de fichiers déjà dans votre référentiel, tels que le package.json name et version champs, mais vous devrez peut-être fournir les informations manuellement ou remplacer les valeurs par défaut dans certains cas. Ajouter le pn et pv drapeaux pour faire ceci:

  • -pn (PackageName) – Le nom de votre projet ou package.
  • -pv (PackageVersion) – La version du projet que vous numérisez. Cela doit correspondre à la version fournie par votre SBOM afin que les utilisateurs puissent corréler les listes de dépendances avec des builds spécifiques.

Voici un exemple de génération d’un SBOM pour les fichiers de votre répertoire de travail. Le SBOM sera placé dans le sbom-output sous-répertoire. Cela doit exister avant que vous n’exécutiez l’outil.

$ mkdir sbom-output
$ sbom-tool generate -b sbom-output -bc . -pn example -pv 1.0 -nsb https://example.com/sbom

Un aperçu des résultats de l’analyse s’affichera dans votre terminal :

[INFO] Enumerated 3728 files and 607 directories in 00:00:00.5938034 

[INFO] |Component Detector Id         |Detection Time                |# Components Found            |# Explicitly Referenced                 | 
...
[INFO] |Npm                           |0.63 seconds                  |241                           |0                                       | 
...
[INFO] |Total                         |0.64 seconds                  |241                           |0                                       | 

[INFO] Detection time: 0.6374678 seconds.

Ce projet utilise npm pour gérer ses dépendances. L’outil a détecté 241 packages dans le répertoire de travail package.json dossier.

SBOM Tool prend actuellement en charge 19 langages de programmation et formats de packages différents. La liste comprend npm, NuGet, PyPi, Maven, Rust Crates et Ruby gems, ainsi que les packages Linux présents dans les images Docker. Les références aux référentiels GitHub distants sont également prises en charge.

Contenu de la SBOM

Le SBOM généré sera écrit dans _manifest/spdx_2.2/manifest.spdx.json dans le répertoire de sortie de construction que vous avez spécifié. Le SBOM est un fichier JSON assez verbeux destiné à être utilisé par d’autres logiciels.

{
  "files": [],
  "packages": [
    {
      "name": "color-convert",
      "SPDXID": "SPDXRef-Package-A72B0922E46D9828746F346D7FD11B7F81EDEB15B92BEEDAE087F5F7407FECDC",
      ...
    }

Il existe quatre principaux types d’informations dans le rapport :

  • La files section – Cela liste tous les fichiers contenant le code source que vous avez écrit dans votre projet. SBOM Tool ne remplira cette section que lorsque certains types de projets sont analysés, tels que les solutions C#.
  • La packages section – Un catalogue complet de toutes les dépendances tierces présentes dans votre projet, avec des références à leur gestionnaire de paquets source, la version utilisée et le type de licence qui s’applique.
  • La relationships section – Cela détaille toutes les relations entre les composants répertoriés dans le SBOM. La relation la plus courante que vous verrez est DEPENDS_ONqui déclare un élément dans le packages section comme l’une des dépendances de votre projet. Plusieurs autres types de relations existent également, telles que CREATED_BY, DEPENDENCY_OFet PATCH_FOR.
  • Signaler les détails des métadonnées – Des champs tels que name, documentNamespace, spdxVersionet creationInfo identifiez le SBOM, l’outil utilisé pour le créer et la révision du manifeste SPDX qui s’applique.

Maintenant que vous avez un SBOM, vous pouvez commencer à l’utiliser avec d’autres outils pour effectuer des analyses de vulnérabilité et gérer la conformité des licences. Vous pouvez envisager de distribuer le SBOM avec vos versions logicielles afin que les consommateurs puissent inspecter le contenu de chaque nouvelle version. Les SBOM sont mieux générés dans le cadre de votre pipeline de build afin qu’ils restent à jour.

Avoir accès à un SBOM est inestimable lorsque de nouveaux problèmes majeurs de la chaîne d’approvisionnement apparaissent. Les organisations utilisant des SBOM étaient mieux placées pour répondre à Log4j, par exemple. Ils pourraient inspecter leurs rapports pour trouver rapidement des projets en fonction de la bibliothèque vulnérable, au lieu d’auditer manuellement les listes de packages.

Numérisation d’images Docker

SBOM Tool est capable de numériser des images Docker existantes dans le cadre d’une génération de rapport. Pour utiliser cette fonctionnalité, vous devez ajouter le -di flag et spécifiez la balise d’image ou le résumé que vous souhaitez numériser. Le reste des arguments reste le même.

$ sbom-tool generate -di ubuntu:latest -b sbom-output -bc . -pn demo -pv 1.0 -nsb https://demo.com/demo

L’image Docker sera analysée pour identifier les packages qu’elle contient. Ils seront ajoutés au rapport SBOM avec les dépendances trouvées dans votre dossier source. Vous pouvez numériser plusieurs images Docker en une seule opération en séparant leurs balises ou en digérant les hachages par des virgules.

Sommaire

SBOM Tool est un jeune utilitaire open-source de génération SBOM développé chez Microsoft. Il prend en charge plusieurs formats de package de premier plan et produit une sortie compatible SPDX. Cela signifie que vous pouvez alimenter les SBOM générés directement dans d’autres outils comme Grype pour trouver automatiquement les vulnérabilités de sécurité et les dépendances obsolètes.

Les SBOM sont un moyen efficace d’accroître la sensibilisation aux chaînes d’approvisionnement logicielles et de découvrir les problèmes cachés. La production et la distribution d’un SBOM aident les utilisateurs à comprendre ce qui est inclus silencieusement dans leur projet. L’outil SBOM est un moyen de générer des rapports standard avec une seule commande, ce qui facilite l’offre d’un SBOM avec chacune de vos versions.

★★★★★