Les applications modernes ne sont plus des monolithes géants, mais une collection de micro-services, de composants open-source et d'outils tiers. Mais cela rend très difficile la compréhension de l'intérieur de nos applications, en particulier lorsque vous considérez que nos dépendances open-source ont également des dépendances open-source !
La nomenclature des logiciels (SBOM) joue un rôle clé à cet égard. Les nomenclatures fournissent un inventaire détaillé de tous les composants logiciels. Cela nous aide non seulement à comprendre notre logiciel, mais aussi à identifier les risques et à répondre à nos exigences en matière de conformité et de gouvernance.
Pour que les SBOM fonctionnent bien, ils doivent être normalisés et facilement partagés entre différents systèmes et outils. C'est là que les normes du SBOM deviennent vitales.
Comprendre les normes du SBOM
Les normes SBOM établissent un format commun pour la création et le partage des données SBOM. Elles offrent un langage unifié, garantissant une communication cohérente entre les différentes organisations et les différents outils.
La normalisation est nécessaire car les SBOM peuvent être longs et contenir des détails sur les composants, les versions, les licences et les dépendances. En l'absence d'un format standard, l'interprétation et l'utilisation des données du SBOM deviennent difficiles pour les différentes entités.
Actuellement, trois normes principales de SBOM sont populaires dans l'industrie :
- CycloneDX: norme légère axée sur la sécurité, prenant en charge différents types de nomenclatures, y compris les logiciels, le matériel et les services.
- SPDX (Software Package Data Exchange): La seule norme SBOM reconnue par l'ISO, connue pour son approche globale des données sur les composants et ses origines dans le domaine des licences logicielles.
- Étiquettes SWID (identification des logiciels): Axé sur l'identification des logiciels, il permet de suivre les logiciels installés dans le cadre de la gestion des actifs.
Chaque norme présente des atouts et des cas d'utilisation spécifiques, que nous examinerons plus loin.
CycloneDX en bref
- Conçu spécifiquement pour les cas d'utilisation liés à la sécurité (par exemple, suivi des vulnérabilités, prise en charge de VEX, hachage des composants).
- Prise en charge native de VEX (Vulnerability Exploitability eXchange) et des arbres de dépendances.
- Compatible avec les pipelines DevSecOps modernes et les outils tels que OWASP Dependency-Check, Anchore, GitHub Advanced Security.
- Plus facile à intégrer dans les environnements CI/CD (léger, compatible JSON).
CycloneDX se distingue par son efficacité et ses fonctions de sécurité robustes. Sa conception permet une intégration rapide, ce qui le rend idéal pour les équipes qui privilégient l'agilité et la sécurité. CycloneDX couvre les logiciels, le matériel et les services, ce qui lui permet de s'adapter à différents environnements technologiques.
CycloneDX supporte de nombreux formats de données, dont XML, JSON et protobuf, ce qui garantit la compatibilité avec différents outils. Sous l'égide de l'OWASP, CycloneDX évolue en permanence pour répondre aux défis actuels de la sécurité dans les chaînes d'approvisionnement en logiciels.
Exemple de formatage CycloneDX
{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"version": 1,
"components": [
{
"type": "library",
"name": "example-lib",
"version": "1.0.0",
"purl": "pkg:npm/example-lib@1.0.0",
"licenses": [{ "license": { "id": "MIT" } }]
}
]
}
Explorer le SPDX
- Destiné aux équipes juridiques et aux services de diligence raisonnable en matière de propriété intellectuelle (modèle de métadonnées de licence solide).
- Langage d'expression de licence étendu (liste de licences SPDX).
- Normalisé sous ISO/IEC 5962:2021.
- Utilisé dans des projets majeurs tels que OpenChain, ORT et Tern.
SPDX est mondialement reconnu comme la seule norme SBOM accréditée par l'ISO, ce qui renforce sa crédibilité. Initialement conçu pour les licences de logiciels, SPDX s'est développé pour répondre à des besoins plus larges en matière de transparence des logiciels.
SPDX prend en charge de nombreux formats de données tels que tag/valeur, JSON, XML, YAML et RDF, et s'intègre facilement à divers outils et plateformes. Il fournit des informations approfondies sur les composants logiciels, en documentant les fichiers et les extraits de code pour un suivi détaillé de la conformité et de la sécurité.
Exemple de formatage SPDX
SPDXVersion : SPDX-2.3
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: example-sbom
DocumentNamespace: http://spdx.org/spdxdocs/example-sbom
Creator : Tool : SPDX-Tools
Créé: 2025-05-08T12:00:00Z
Nom du paquet: example-lib
SPDXID: SPDXRef-Package-example-lib
PackageVersion: 1.0.0Package
DownloadLocation: NOASSERTION
PackageLicenseConcluded: MIT
PackageLicenseDeclared: MIT
PackageChecksum: SHA256: abcdef1234567890abcdef1234567890abcdef1234569ui
Comprendre les étiquettes SWID
- Destiné à la gestion des stocks de logiciels d'entreprise.
- Normalisé en tant qu'ISO/IEC 19770-2 - très axé sur le gouvernement et l'armée.
- Utilisé dans FedRAMP, NIST 800-171 et les cadres de conformité connexes.
Les étiquettes SWID mettent l'accent sur une délimitation claire des produits logiciels. Contrairement aux nomenclatures complètes, les étiquettes SWID identifient les progiciels individuels, ce qui est essentiel pour une gestion précise des stocks.
Dans le cadre de la gestion des actifs, les étiquettes SWID offrent une méthode normalisée pour suivre les installations de logiciels, ce qui permet aux organisations de maintenir un paysage logiciel précis. Cela contribue à la conformité et à l'optimisation des stratégies de gestion des actifs.
Les étiquettes SWID s'intègrent à des cadres tels que les normes SCAP et TCG, ce qui renforce leur rôle en matière de sécurité et de conformité.
Exemple de formatage du SWID
<SoftwareIdentity xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd" name="example-lib"
version="1.0.0"
tagId="example-lib@1.0.0"
patch="false"
</SoftwareIdentity>
Comparaison des normes du SBOM
Pour différencier les étiquettes CycloneDX, SPDX et SWID, commençons par leurs caractéristiques. CycloneDX permet une gestion flexible des nomenclatures dans des environnements de sécurité dynamiques. SPDX excelle dans le suivi de la conformité, tandis que les étiquettes SWID se concentrent sur l'identification précise des logiciels. Voici une comparaison rapide :
La structure de CycloneDX répond au besoin de transparence. SPDX fournit une documentation détaillée et l'intégrité des données pour le contrôle de la conformité.
Chaque standard répond à des besoins spécifiques. CycloneDX convient aux équipes qui privilégient un développement rapide et sécurisé. SPDX s'adresse aux organisations qui se concentrent sur la conformité. Les étiquettes SWID améliorent la gestion des actifs en assurant un suivi précis.
Les outils de conversion entre ces formats sont essentiels pour maintenir l'interopérabilité. Des solutions avancées permettent aux organisations de bénéficier des atouts de chaque norme, en adaptant les stratégies pour répondre à des besoins spécifiques.
Choisir la bonne norme SBOM
Il ne suffit pas de générer un SBOM dans un seul format. Différentes parties prenantes - qu'il s'agisse d'auditeurs internes, d'agences gouvernementales ou d'entreprises clientes - peuvent avoirbesoin du SBOM dans un format spécifique pour l'intégrer dans leurs outils ou flux de travail existants. Par exemple :
- Un contrat fédéral peut exiger SPDX, tandis qu'un fournisseur de services de sécurité effectuant une évaluation des risques peut préférer CycloneDX.
- Certains systèmes CI/CD peuvent ne prendre en charge que certains formats de SBOM pour l'application de politiques ou l'analyse automatisée.
L'outillage est important : Choisissez un outil qui prend en charge plusieurs formats
Compte tenu de cette variabilité, vous devez choisir un outil capable de générer des SBOM dans plusieurs formats à partir des mêmes artefacts sources. Des outils comme Aikido Security simplifient ce processus en générant automatiquement des SBOMs pendant votre pipeline de construction ou vos scans de sécurité et en les exportant dans des formats tels que CycloneDX, SPDX, et d'autres si nécessaire.
Cette capacité multiformat vous permet de rester conforme à diverses exigences, sans dupliquer le travail ou introduire des erreurs dues à des conversions manuelles.