Comment automatiser la création de SBOM

Une nomenclature logicielle n'est plus seulement une documentation « utile » pour les organisations. C’est désormais un « incontournable » pour un large éventail de raisons. Outre le fait que la réglementation fédérale a rendu obligatoire la divulgation des composants de votre logiciel, les éditeurs de logiciels ont désormais compris que répertorier toutes les dépendances open source et commerciales utilisées dans votre application est une pratique de cybersécurité bénéfique.

Il est intéressant de noter que même si l’on reconnaît la nécessité d’un SBOM, sa création peut encore s’avérer assez difficile. En effet, le processus de création de la nomenclature logicielle d'un produit peut être complexe, fastidieux et long. De plus, étant donné que les autorités réglementaires recommandent de générer un SBOM précis et exact pour chaque itération de votre produit, sa mise en œuvre manuelle à chaque fois est assez gourmande en ressources, voire totalement peu pratique. 

Lorsqu’il s’agit de mettre en œuvre des SBOM complets, il est toujours recommandé d’emprunter la voie de l’automatisation. Chaque logiciel est un package complexe composé de plusieurs dépendances qui ont très probablement aussi leurs propres dépendances. Cela signifie que même le logiciel le plus simple peut avoir des centaines, voire des milliers de dépendances. Il faudra beaucoup de travail pour compiler tout cela et les organiser manuellement. Cet article explique pourquoi l'automatisation est nécessaire pour la mise en œuvre des SBOM et comment mettre en œuvre l'automatisation pour atténuer le stress lié à la génération manuelle des SBOM. 

Pourquoi l'automatisation du processus SBOM est importante

Une nomenclature logicielle est simplement une liste des composants d'un produit logiciel (semblable à une liste d'ingrédients sur un produit comestible). De manière générale, tout ce dont vous avez besoin pour créer une nomenclature logicielle est une feuille de calcul répertoriant ces composants. Il s’agit cependant d’une simplification excessive qui n’est pratiquement jamais pratique. Un SBOM est une liste exhaustive avec un ensemble précis des informations requises. Essayer de traiter cette liste manuellement sera évidemment long et compliqué.

Les SBOM manuels ne peuvent tout simplement pas suffire, c'est pourquoi l'automatisation est vitale dans la mise en œuvre et l'ingestion des SBOM. Outre la difficulté de mettre en œuvre des SBOM manuels, la création manuelle de SBOM comporte également des risques, sans parler des problèmes de conformité. Voici quelques-unes des raisons pour lesquelles il est préférable de créer des SBOM avec un système automatisé qui collecte et compile une liste complète de logiciels et les stocke dans un référentiel lisible par l'homme et facile à interroger.

Cybermenaces liées à la chaîne d’approvisionnement

L'objectif principal de la génération d'un SBOM complet est de mieux comprendre les composants logiciels et d'analyser les vulnérabilités possibles. C'est devenu une mesure de cybersécurité importante pour atténuer les menaces pour chaque produit logiciel. Un SBOM automatisé rend le processus plus transparent. Non seulement une nomenclature logicielle automatisée est plus sécurisée (grâce à la signature cryptographique et à la vérification automatisée des composants), mais l'automatisation garantit également que les composants sont analysés en continu tout au long du pipeline d'intégration et de déploiement d'une itération logicielle.

Gain de temps

L'automatisation de la mise en œuvre du SBOM signifie que vous vous appuyez sur des outils avancés qui fonctionnent à la vitesse de la machine pour générer votre nomenclature logicielle. Cela vous fait gagner du temps à plus d’un titre. Premièrement, générer un SBOM de cette manière est plus rapide que d’essayer manuellement d’identifier les composants individuels et de les inclure dans une feuille de calcul.

L’automatisation des SBOM facilite également et accélère la détection des vulnérabilités. Avec les SBOM compilés manuellement, l’identification des emplacements possibles des vulnérabilités est un processus extrêmement long.

Les mises à jour sont également plus rapides avec les SBOM. Les systèmes automatisés effectuent des vérifications fréquentes sur votre SBOM pour identifier les vulnérabilités en fonction des dépendances récemment mises à jour. De cette façon, vous pouvez atténuer les risques plus rapidement et investir votre temps et vos ressources sur d'autres tâches importantes au lieu de perdre du temps à créer des SBOM ou à les interroger manuellement.

NIST et exigences fédérales

En plus d’être bénéfique, l’automatisation des SBOM revêt également une importance réglementaire. Les exigences fédérales en matière de SBOM, telles que la Cyber ​​Supply Chain Management and Transparency Act de 2014, stipulent que des solutions et des outils automatiques doivent être utilisés pour générer des SBOM.

De même, en juillet 2021, la National Telecommunication and Information Administration (NTIA) a publié des lignes directrices approuvées par le gouvernement fédéral qui détaillent les éléments minimaux qui doivent être inclus pour chaque SBOM. La prise en charge de l'automatisation a été répertoriée dans cette documentation comme l’un des éléments vitaux de chaque SBOM.

Selon la NTIA, la nomenclature du logiciel doit être lisible par l'homme et la machine et capable d'être générée automatiquement. La mise en œuvre d'un SBOM automatisé facilite le suivi des données incluses dans le document. 

Les feuilles de calcul sont inefficaces et sujettes aux erreurs

Comme indiqué précédemment, chaque progiciel possède des centaines de dépendances. Cela signifie qu'il y a des milliers de points de données à couvrir dans une nomenclature logicielle typique. Les feuilles de calcul sont tout simplement mal équipées pour gérer ce volume de données. La saisie manuelle de toutes ces données ouvre la porte à des erreurs humaines qui peuvent avoir de graves conséquences si elles ne sont pas détectées à temps. Vous êtes plus susceptible de générer un SBOM précis et complet lorsque vous optez pour un système automatisé.

Cohérence

L'un des principaux avantages de l'automatisation du processus de génération SBOM est qu'elle permet de maintenir la cohérence tout au long du pipeline CI/CD des différentes itérations d'un produit logiciel. Cela inclut toutes les modifications apportées à un produit pendant sa construction et même après sa sortie.

Un SBOM n’est pas statique. À mesure qu'un produit évolue, des révisions sont apportées à sa nomenclature logicielle pour capturer chaque nouvelle dépendance ajoutée. Ces changements doivent être communiqués à tous les utilisateurs et autres parties prenantes, tant en interne que tout au long de la chaîne d'approvisionnement du logiciel. Il est important que chaque partie prenante ait accès à la dernière version d'un SBOM ainsi qu'à toutes les versions précédentes du logiciel.

Avec un SBOM préparé manuellement, il est difficile de maintenir la cohérence et le contrôle des versions, ce qui peut entraîner des conflits et d'autres problèmes. Un SBOM automatisé garantit la cohérence des modifications apportées et il est plus facile de voir quand et comment ces modifications ont été apportées. Ceci est difficile à réaliser avec un système manuel.

Façons d'automatiser les nomenclatures logicielles

Les normes réglementaires telles que les exigences minimales de la NTIA pour le SBOM stipulent des formats spécifiques pour la nomenclature logicielle. Ces normes incluent Software Package Data Exchange (SPDX) et CycloneDX. Les équipes de sécurité logicielle doivent savoir que la nature même de ces normes implique déjà que les SBOM sont censés être automatisés.

Ainsi, chaque équipe de sécurité logicielle doit assurer la génération et l'utilisation des SBOM en ajoutant une étape automatisée à exécuter à un point stratégique de leur pipeline de développement pour générer le SBOM. Il peut s'agir d'un outil open source permettant d'étudier les composants logiciels une fois la construction terminée ou d'un outil SCA intégré au pipeline de développement continu du logiciel. Les différentes méthodes d'automatisation de la nomenclature logicielle sont présentées ci-dessous.

Utiliser un outil open source

L'un des moyens les moins chers de créer une nomenclature logicielle consiste à utiliser un outil open source. Ils sont pratiquement gratuits, mais ils n'offrent que des fonctionnalités rudimentaires. Il existe plusieurs outils open source qui automatisent le processus de mise en œuvre du SBOM. Cependant, les rapports générés par la plupart de ces outils ne le sont que dans deux formats : CycloneDX et SPDX.

Un bon exemple d'outil d'automatisation SBOM open source est Le générateur SBOM de Microsoft. Ce générateur de build à usage général est conçu pour aider les entreprises à générer des SBOM pour leurs progiciels. L'outil offre une prise en charge multiplateforme et génère des SBOM au format standard Software Package Data Exchange (SPDX).

Le générateur SBOM de Microsoft peut être intégré aux progiciels construits avec les frameworks NPM, PyPI, Maven, Rust Crates, Ruby Gems, Linux et NuGet pour générer la liste des dépendances et des composants. Il peut également être intégré aux référentiels publics GitHub.

L'outil génère des informations générales sur la documentation SBOM, comme spécifié dans les exigences minimales du SBOM. Il répertorie également tous les fichiers et packages ainsi que les relations entre eux.

Utiliser un outil plugin

Une autre approche pour générer automatiquement des SBOM consiste à le faire au sein de votre pipeline d'intégration continue et de déploiement continu (pipeline DevOps). Vous pouvez le faire en utilisant un plugin Maven qui s'intègre dans la phase de construction de votre flux de travail. Cette approche constitue un moyen évolutif et pratique d'automatiser le processus de génération de la nomenclature logicielle directement dans le pipeline.

Vous constaterez que cela est beaucoup plus facile puisque vous le faites dans l'environnement bâti de votre projet. Il suffit de passer quelques arguments pour générer automatiquement le SBOM. Pour le plugin Maven, le SBOM est généré au format Cyclone DX.

Le plugin Maven peut générer un SBOM complet qui détaille toutes les dépendances au sein de votre projet. Pour ce faire, vous devez commencer par configurer le fichier pom.xml avant d'exécuter la commande « mvn verify » pour générer les fichiers SBOM. Un fichier bom.json est généré avant le fichier SBOM.

Le plugin Maven est livré avec un outil SCA intégré qui audite les fichiers SBOM générés pour les dépendances. Une fois le fichier audité, vous pouvez exécuter l'outil SCA une seconde fois pour générer à nouveau la nomenclature du logiciel.

Un exemple d'un tel outil plugin est le Plateforme de scribe, qui permet aux producteurs de logiciels de générer automatiquement des SBOM. Il va au-delà de la génération de SBOM et aide les utilisateurs à gérer et partager leurs SBOM, à valider l'intégrité et à suivre les vulnérabilités de leurs conteneurs, dépendances et pipelines. Voici un aperçu simple de la façon dont Scribe fonctionne pour automatiser la création de SBOM :

  • Étape 1: Inscrivez-vous et connectez-vous (gratuitement) sur Scribe Hub. Les utilisateurs enregistrent et configurent leurs projets à l'aide de cette interface Web. Un collecteur de preuves distinct, qui s'exécute sur les appareils MAC et Linux, génère lui-même le SBOM.
  • Étape 2 : Intégrez Scribe à votre pipeline d'intégration continue. L'ajout d'extraits de code du Scribe Hub à votre pipeline d'intégration continue et/ou à votre image de construction finale y parviendra.
  • Étape 3 : Générez et exportez la nomenclature du logiciel. Une nomenclature logicielle est générée à l'aide de l'outil CLI Scribe gensbom. Le SBOM généré peut être exporté au format CycloneDX JSON.

Utiliser un outil d'analyse de composition (SCA)

Une troisième approche pour générer automatiquement des SBOM pour votre produit logiciel consiste à utiliser un outil d'analyse de la composition logicielle tiers. Un outil SCA analyse votre produit pour identifier les composants et licences tiers au sein du logiciel. L'outil évalue la légitimité du code ainsi que le respect des exigences de licence.

Les SCA analysent le code source, les fichiers binaires, les images de conteneur et les fichiers manifestes d'un logiciel afin de déterminer sa composition et de répertorier tous les composants open source inclus dans le logiciel. Dans le cadre du SBOM, une SCA exécutera également ces composants sur diverses bases de données pour extraire leurs informations de sécurité, leurs licences et leurs vulnérabilités connues.

Un outil d'analyse de la composition logicielle automatise et accélère le processus de création de SBOM. L'outil est conçu pour analyser des milliers de points de données en peu de temps afin de compiler une nomenclature logicielle pour votre produit. Les outils SCA vous aident à sécuriser votre pipeline DevOps en fournissant une surveillance complète des composants d'un progiciel et de la provenance de ces composants. 

Conclusion

Bien que certaines entreprises ne génèrent des SBOM que parce que cela a été rendu obligatoire par les exigences réglementaires, cette pratique s'est avérée nécessaire pour atténuer les menaces liées à la chaîne d'approvisionnement logicielle. L'automatisation du processus est encore plus importante car elle permet de réduire le travail fastidieux et chronophage de compilation manuelle des SBOM. L'automatisation du SBOM, comme souligné dans chacune des techniques abordées dans cet article, peut accélérer le processus de création du SBOM et également le rendre plus précis et fiable. Un outil plugin comme Scribe permet d'automatiser la création de SBOM directement dans le pipeline de développement de votre logiciel. Consultez notre blog et d'autres ressources pour voir comment Scribe fonctionne pour automatiser la génération SBOM et comment vous pouvez l'exploiter.