De Log4Shell-kwetsbaarheid in december 2021 legde een pijnlijk probleem bloot: de meeste organisaties hadden geen idee of ze Log4j gebruikten, laat staan welke versie. Weken van paniek volgden. Een Software Bill of Materials (SBOM) had dat probleem in minuten opgelost.

Wat is een SBOM?

Een SBOM is simpelweg een gestructureerde lijst van alle componenten waaruit je software is opgebouwd. Denk aan een ingrediëntenlijst op een voedselverpakking, maar dan voor software. Het bevat:

  • Alle directe dependencies (de packages die je expliciet gebruikt)
  • Alle transitieve dependencies (de packages die je dependencies gebruiken)
  • Versienummers van elk component
  • Licentie-informatie
  • Herkomst - waar komt elk component vandaan?

De twee gangbare formaten zijn SPDX (ondersteund door de Linux Foundation) en CycloneDX (vanuit OWASP). Beide zijn machine-leesbaar en breed ondersteund door tooling.

Waarom nu: de EU Cyber Resilience Act

De EU Cyber Resilience Act (CRA) maakt SBOMs in feite verplicht voor software die op de Europese markt wordt aangeboden. De verordening vereist dat fabrikanten van producten met digitale elementen hun software-componenten documenteren en kwetsbaarheden actief monitoren.

Dit is geen toekomstmuziek - de CRA is aangenomen en organisaties moeten zich voorbereiden op compliance. Concreet betekent het:

  • Je moet weten welke componenten in je software zitten
  • Je moet bekende kwetsbaarheden in die componenten actief monitoren
  • Je moet een proces hebben om kwetsbaarheden tijdig te verhelpen
  • Je moet deze informatie kunnen delen met afnemers

Een SBOM is het fundament onder elk van deze vereisten.

De supply chain realiteit

Moderne software bestaat voor 70-90% uit open source componenten. Dat is niet erg - open source is essentieel en waardevol. Maar het betekent wel dat je afhankelijk bent van code die je niet zelf geschreven hebt en die je waarschijnlijk nooit hebt gereviewed.

De software supply chain is een reëel aanvalsdoel geworden. SolarWinds, Codecov, de ua-parser-js npm-compromise - dit zijn geen theoretische risico's. Aanvallers richten zich bewust op de supply chain omdat één gecompromitteerd component duizenden downstream-gebruikers treft.

Een SBOM is je eerste verdedigingslinie: je kunt niet beschermen wat je niet kent.

Praktische tooling voor .NET

In het .NET-ecosysteem zijn er concrete tools om SBOMs te genereren en te gebruiken:

Generatie:

  • dotnet-CycloneDX - een dotnet tool die een CycloneDX SBOM genereert uit je project files. dotnet-CycloneDX solution.sln -o sbom/ en je hebt een SBOM.
  • Microsoft SBOM Tool - genereert SPDX-formaat SBOMs en kan geïntegreerd worden in je build pipeline.
  • Syft van Anchore - taalongafhankelijk, werkt op container images, binaries en source code.

Kwetsbaarheden scannen:

  • Grype - neemt een SBOM als input en matcht tegen de NVD (National Vulnerability Database) en andere bronnen.
  • dotnet list package --vulnerable - ingebouwd in de .NET CLI, toont bekende kwetsbaarheden in je NuGet packages.
  • Dependabot of Renovate - automatiseren het updaten van kwetsbare dependencies.

Integratie in je CI/CD pipeline

Maak SBOM-generatie onderdeel van je build pipeline, niet een handmatige actie:

  1. Bij elke build: genereer een SBOM en sla deze op als build artifact
  2. Bij elke build: scan de SBOM op bekende kwetsbaarheden en faal de build bij kritieke findings
  3. Continu: monitor opgeslagen SBOMs tegen nieuwe CVEs - een component dat vandaag veilig is, kan morgen een kwetsbaarheid hebben
  4. Bij release: publiceer de SBOM als onderdeel van je release artifacts

Meer dan compliance

Een SBOM is niet alleen nuttig voor security en compliance. Het helpt ook bij:

  • Licentie-compliance: weet je zeker dat je geen GPL-code gebruikt in je commerciële product?
  • Impact-analyse: als een kwetsbaarheid wordt ontdekt, weet je binnen minuten welke applicaties getroffen zijn
  • Technical debt: visualiseer welke components verouderd zijn en aandacht nodig hebben

Begin vandaag

Je hoeft niet te wachten op de CRA-deadline. Draai dotnet-CycloneDX op je solution en bekijk het resultaat. De kans is groot dat je verrast bent door het aantal transitieve dependencies - en dat is precies waarom je dit moet doen.

Bij NForza helpen we teams om software supply chain security praktisch aan te pakken. Van SBOM-generatie in de pipeline tot een proces voor vulnerability management - pragmatisch en zonder onnodige bureaucratie.