Een SBOM maken voor uw stack
Een software bill of materials (SBOM) somt de componenten op in wat u levert, met hun versies. De Cyber Resilience Act verwacht dat fabrikanten er een bijhouden (bijlage I, deel II, punt 1). Gratis opensourcetools maken er in een paar minuten een voor elke gangbare stack. Deze pagina geeft het commando voor elk, en wat u controleert voordat u op het resultaat vertrouwt.
De tools hieronder horen bij hun eigen projecten; SkyQon maakt ze niet en biedt er geen ondersteuning voor. Commando's gecontroleerd in de documentatie van elk project op 13 november 2026.
Voordat u begint
- Kies één formaat. CycloneDX en SPDX zijn de twee open standaarden. Beide werken. SkyQon leest CycloneDX JSON en SPDX 2.x JSON; XML en SPDX 3.0 leest het nog niet.
- Beschrijf wat u levert, niet uw laptop. Draai de tool op de releasebuild, het lockbestand of de image die u levert. Een SBOM van een ontwikkelaarsmachine somt testtools op en mist wat de build toevoegt.
- Eén SBOM per versie. Maak er een nieuwe voor elke release en bewaar de oude. Een kwetsbaarheidsmelding noemt een versie; de SBOM van die versie zegt u of het om uw product gaat.
- Maak het deel van de build. Elk commando hieronder draait zonder vragen, dus het past in een CI-stap naast de build die de release maakt.
Elke stack en containers
Twee algemene tools lezen de meeste pakketbeheerders en container-images. Begin hier als uw product talen mengt of als image geleverd wordt.
Syft
Scant een map of een container-image en schrijft beide formaten in één keer.
syft ./my-product -o cyclonedx-json=./sbom.cdx.json
syft registry.example.com/acme/app:2.1.0 -o spdx-json=./sbom.spdx.jsonTrivy
Scant een image of een projectmap. Met dit formaat bevat de uitvoer alleen componenten, geen kwetsbaarheidsresultaten.
trivy image --format cyclonedx --output sbom.cdx.json acme/app:2.1.0
trivy fs --format cyclonedx --output sbom.cdx.json ./my-productcdxgen
Herkent zelf de talen in een projectmap; geef een type op als het verkeerd gokt.
npm install -g @cdxgen/cdxgen
cdxgen -o sbom.cdx.json .
cdxgen -t java -o sbom.cdx.json .Per taal
Elk ecosysteem heeft een CycloneDX-tool die het eigen lockbestand leest. Die zien precies de versies die de build heeft opgelost.
Python
Vanuit de omgeving waarin de release draait, of vanuit een requirements-bestand. JSON is de standaarduitvoer.
pip install cyclonedx-bom
cyclonedx-py environment --output-file sbom.cdx.json
cyclonedx-py requirements requirements.txt --output-file sbom.cdx.jsonJavaScript (npm)
In huidige versies ingebouwd in de npm-commandoregel. Laat ontwikkelafhankelijkheden buiten wat u levert.
npm sbom --sbom-format=cyclonedx --omit=dev > sbom.cdx.json
npm sbom --sbom-format=spdx --omit=dev > sbom.spdx.jsonJava
Maven draait de CycloneDX-plugin zonder het project aan te passen en schrijft bom.json onder target. Voeg voor Gradle de plugin org.cyclonedx.bom toe aan de build en draai de taak ervan; het bestand komt in build/reports/cyclonedx.
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
./gradlew cyclonedxBomGo
De app-modus volgt dezelfde build-instellingen als uw release; zet ze zoals uw build dat doet.
go install github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@latest
GOOS=linux GOARCH=amd64 cyclonedx-gomod app -json -output sbom.cdx.json -main cmd/app .Rust
Draai het in de map met Cargo.toml. Het bestand wordt ernaast geschreven.
cargo install cargo-cyclonedx
cargo cyclonedx --format json.NET
cdxgen leest de project- en lockbestanden. De CycloneDX-tool voor .NET is de andere gangbare keuze.
cdxgen -t dotnet -o sbom.cdx.json .C, C++ en embedded Linux
C and C++
Er is geen enkele pakketlijst, dus reken op gaten. cdxgen leest gangbare C- en C++-buildmetadata; bibliotheken die in de bronboom gekopieerd zijn, worden vaak gemist en moeten met de hand toegevoegd worden. Scan bij firmware ook de afgewerkte image met Syft en vergelijk.
cdxgen -t c -o sbom.cdx.json .Yocto
Huidige releases schrijven standaard bij elke image-build een SPDX-bestand, in tmp/deploy/images/MACHINE/ met de naam IMAGE-MACHINE.spdx.json. Oudere releases schrijven SPDX 2.2, dat SkyQon leest. Nieuwere releases schrijven SPDX 3.0, dat SkyQon nog niet leest: draai in plaats daarvan Syft op het root-bestandssysteem van de image om een CycloneDX-bestand te krijgen.
bitbake core-image-minimal
ls tmp/deploy/images/*/*.spdx.jsonControleer het voordat u het vertrouwt
- Tel de componenten. Een webdienst met een handvol items is bijna altijd een scan van de verkeerde map. Vergelijk het aantal met uw lockbestand.
- Zoek naar package-URL's. De vergelijking met kwetsbaarheidsdatabanken steunt op de package-URL (purl) of de CPE van elke component. Items met alleen een naam kunnen niet vergeleken worden.
- Uw eigen product bovenaan. De SBOM hoort uw product en de versie ervan als hoofdcomponent te noemen, zodat een lezer weet welke release ze beschrijft.
- Herken de testtools. Linters, testframeworks en buildplugins in de lijst betekenen dat ze vanuit een ontwikkelomgeving gemaakt is, niet vanuit de release.
Geef het aan SkyQon
Met de add-on CRA Product Evidence uploadt u het bestand op de pagina van het product en noemt u de versie. SkyQon leest tot 20.000 componenten uit een bestand van maximaal 20 MB, bewaart elke versie en vergelijkt de componenten elke dag met OSV.dev en de NVD, met CISA KEV en EPSS bij elke treffer. Alleen pakketidentificaties verlaten het platform; het bestand zelf blijft bij uw bewijsstukken.
Een treffer is een aanwijzing, geen oordeel: u legt vast of die u raakt, en die notitie komt in het ondertekende productbewijsrapport. Geen juridisch advies; de fabrikant blijft verantwoordelijk voor de SBOM en wat die toont.
Niet zeker of de CRA uw product dekt?
De gratis check van toepassingsgebied en klasse duurt ongeveer tien minuten per product en noemt de artikelen achter elk antwoord.