Dienst · Software-ontwikkeling

SBOM laten opstellen.

Er wordt een lek gemeld in een veelgebruikt component. De vraag is niet of het ernstig is, maar of het u raakt. Wie een actuele SBOM heeft, beantwoordt dat in minuten; wie hem niet heeft, is dagen bezig met bellen. Wij zorgen dat de lijst automatisch bij elke bouw ontstaat en dus niet kan verouderen.

SPDX & CycloneDXIn de bouwstraatLicentiecheckVEX

Wat een SBOM is, en waarom hij automatisch moet ontstaan.

Een Software Bill of Materials is een lijst van alles wat er in uw software zit: per onderdeel de naam, de versie, de herkomst en de licentie. Dat lijkt weinig, en het is precies genoeg om de twee vragen te beantwoorden die er ooit toe doen: raakt dit ons, en mogen wij dit zo gebruiken. Belangrijker dan de velden is de reikwijdte — een lijst met alleen de onderdelen die u zelf heeft gekozen, mist het grootste deel, want de verrassingen zitten in wat daarmee is meegekomen.

De reden dat dit nu overal opduikt, is tweeledig. De Cyber Resilience Act vraagt van fabrikanten een machineleesbare SBOM van ten minste de bovenste laag afhankelijkheden, en afnemers zijn er in hun inkoopvoorwaarden om gaan vragen. Wie dat bij de eerste uitvraag moet gaan samenstellen, is dagen kwijt; wie het automatisch heeft, stuurt een bestand mee en komt sterker voor de dag.

Wat wij doen is het genereren in uw bouwstraat hangen, in SPDX of CycloneDX, en er de twee toepassingen aan koppelen die hem nuttig maken: de licentiecontrole en de koppeling met kwetsbaarheidsbronnen. Dat sluit direct aan op kwetsbaarhedenbeheer en op de eisen uit de Cyber Resilience Act. Vaak doen we het als onderdeel van het inrichten van DevSecOps, omdat het dezelfde plek in de pijplijn raakt.

Drie soorten opdrachten die wij hierin krijgen.

Waar u begint hangt af van of u iets moet aantonen, iets wilt weten, of allebei. In het eerste gesprek zeggen we welke variant het snelst iets oplevert.

Eerste traject · vast sprintbudget

Genereren in de bouwstraat

Een lijst die iemand met de hand samenstelt, is bij de eerstvolgende oplevering al verouderd. Dat is geen kwestie van discipline maar van tempo. Wij hangen het genereren daarom aan de bouw zelf, met gereedschap dat bij uw talen en pakketbeheerders past, in SPDX of CycloneDX. De lijst ontstaat als bijproduct van iets wat toch al gebeurt, en hij kan niet verouderen zonder dat de bouw stilstaat. Van elke uitgebrachte versie blijft de bijbehorende lijst bewaard.

SPDX of CycloneDXPer bouwArchief per versieMeerdere talen
Middelgroot traject · vast sprintbudget

Licenties en verplichtingen in beeld

De meeste open-sourcelicenties leggen u weinig op, maar een handvol legt verplichtingen op die kunnen doorwerken naar de code die u eromheen bouwt. Dat wilt u weten voordat u bouwt, niet nadat een klant of een koper ernaar vraagt. Wij zetten een controle in de pijplijn die ongewenste licenties tegenhoudt, en leggen de bewuste uitzonderingen vast in een register met de reden erbij.

LicentiebeleidPoort in de pijplijnUitzonderingenregisterHerkomstcontrole
Groter traject · vast sprintbudget

Koppeling met kwetsbaarheidsbronnen en VEX

De lijst wordt pas nuttig als hij zichzelf vergelijkt met wat er bekend is. Wij koppelen hem aan bronnen als de nationale kwetsbaarhedendatabank en open bronnen, en zetten daar een weging op zodat u niet elke melding als even dringend behandelt. Met VEX legt u vervolgens vast dat een gemelde kwetsbaarheid u niet raakt omdat de kwetsbare functie bij u niet wordt aangeroepen — dat scheelt uw team en uw klanten veel vergeefse onrust.

Doorlopende vergelijkingWeging op impactVEX-verklaringenMeldingen aan afnemers

Wat u aan het einde van een traject heeft.

Een lijst die zichzelf bijhoudt, plus de twee toepassingen die hem meer maken dan een bestand in een map.

  • Generatie in uw eigen bouwstraatDraait mee met elke bouw, in SPDX of CycloneDX, met de bovenste laag en de lagen daaronder, en werkt voor de talen en pakketbeheerders die u gebruikt.
  • Een archief per uitgebrachte versieVan elke uitgave blijft de bijbehorende lijst bewaard, zodat u achteraf kunt vaststellen wat er in een specifieke versie zat die nog ergens draait.
  • Licentiebeleid met een poortVastgelegd welke licenties zijn toegestaan, met een controle die de rest tegenhoudt en een register voor de uitzonderingen die u bewust maakt.
  • Doorlopende vergelijking met kwetsbaarheidsbronnenDe lijst wordt automatisch afgezet tegen bekende kwetsbaarheden, met een weging die uw eigen situatie meeneemt in plaats van alleen de gepubliceerde ernstscore.
  • Een deelbaar exemplaar voor afnemersEen versie die u zonder bewerking kunt meesturen in een inkooptraject of aan een toezichthouder kunt overleggen, met de tijdstempel erbij.
  • Overdracht aan uw teamEen werksessie waarin uw ontwikkelaars zelf de bevindingen van de eerste lijst doorlopen en het uitzonderingenregister vullen.

Wanneer dit bij u speelt.

Vier aanleidingen waarmee organisaties ons hiervoor benaderen. Meestal is er een directe aanleiding en blijkt de opbrengst breder.

Wettelijke plicht

De Cyber Resilience Act raakt uw product

U brengt software of een connected apparaat op de Europese markt en moet een machineleesbaar componentoverzicht kunnen overleggen. Dat is de directe aanleiding, maar de echte winst zit in de meldtermijn: zonder overzicht haalt u de 24 uur niet.

Afnemers vragen erom

Het staat in de inkoopvoorwaarden

In standaardvoorwaarden voor ICT-inkoop staat inmiddels dat een leverancier inzicht geeft in gebruikte software en derden. Wie dat per uitvraag handmatig samenstelt, verliest tijd en geloofwaardigheid tegelijk.

Een lek in het nieuws

De vraag “raakt dit ons” kost een dag

Er wordt een kwetsbaarheid in een veelgebruikt component gemeld en er gaat een dag heen met uitzoeken of u het gebruikt. Dat herhaalt zich een paar keer per jaar, en elke keer met dezelfde onzekerheid aan het einde.

Overname of due diligence

Een koper wil weten wat erin zit

Bij een overname, een investeringsronde of een certificering wordt gevraagd wat er in de software zit en onder welke licenties. Een lijst die er al is, verkort dat onderzoek en voorkomt verrassingen op het slechtst denkbare moment.

Hoe zo’n traject loopt.

1

Kennismaking en inventarisatie

Welke talen, pakketbeheerders en bouwstraten gebruikt u, hoeveel producten en versies staan er, en wat is de aanleiding: een wettelijke plicht, een uitvraag van een afnemer, of het inzicht zelf. Dat bepaalt welk formaat en welke diepte zinvol zijn.

2

Eerste lijst en bevindingen

We genereren een eerste volledige lijst en lopen die met u door. Bijna altijd blijkt hetzelfde: er zitten meer onderdelen in dan iedereen dacht, een handvol is jaren niet bijgewerkt, en er staat een licentie tussen waarvan niemand had gecontroleerd of die past. Dat is geen slecht nieuws maar de opbrengst.

3

Inbouwen in de bouwstraat

Het genereren gaat mee in de pijplijn, met opslag per uitgebrachte versie. Tegelijk richten we het licentiebeleid in en zetten we de poort erop, eerst waarschuwend en pas blokkerend als de lijst schoon is. Blokkeren op een berg openstaande bevindingen leidt alleen maar tot uitzetten.

4

Koppelen aan kwetsbaarheidsbronnen

De lijst wordt doorlopend vergeleken met wat er bekend is, met een weging die meeneemt waar een component bij u zit. Waar een melding u niet raakt, leggen we dat vast als VEX-verklaring zodat dezelfde discussie niet elke maand terugkomt.

5

Overdracht en ritme

Een werksessie met uw team, afspraken over wie de uitzonderingen beoordeelt en met welke regelmaat, en een afspraak over wat er gebeurt als de poort iets tegenhoudt. Zonder die laatste afspraak wordt een poort binnen een maand omzeild.

Veelgestelde vragen over SBOM.

Wat ontwikkelteams, productverantwoordelijken en security-officers ons vragen voordat ze hieraan beginnen.

SPDX of CycloneDX — wat moeten wij kiezen?
Beide zijn gangbaar en beide worden geaccepteerd. SPDX is een ISO-standaard en wordt veel gebruikt waar licentie-informatie centraal staat, bijvoorbeeld bij due diligence. CycloneDX komt uit de beveiligingshoek en sluit iets natuurlijker aan op kwetsbaarheidsbeheer en VEX. In de praktijk kunt u vrijwel elke lijst tussen de twee omzetten, dus het is zelden een keuze waar u aan vastzit. Wij kijken naar wat uw afnemers vragen en naar welk gereedschap u al gebruikt, en volgen dat.
Hoe diep moet de lijst gaan?
De Cyber Resilience Act vraagt ten minste de bovenste laag afhankelijkheden. Voor het beantwoorden van de vraag “raakt dit ons” is dat te ondiep: de meeste gemelde kwetsbaarheden zitten in onderdelen die met uw keuzes zijn meegekomen en die u dus niet zelf heeft opgeschreven. Wij genereren standaard de volledige boom en leveren daarnaast een uittreksel van de bovenste laag voor waar dat volstaat. Het kost hetzelfde werk en het antwoord wordt er veel bruikbaarder van.
Moeten wij de lijst openbaar maken?
Nee. De verplichting is dat u hem heeft en op verzoek kunt overleggen aan wie er recht op heeft, in de eerste plaats de markttoezichthouder. Wat u met afnemers deelt, bepaalt u zelf. Sommige organisaties delen een volledig exemplaar onder geheimhouding, andere alleen een bevestiging dat een specifiek component niet wordt gebruikt. Dat is een commerciele afweging en geen juridische.
Wat als een leverancier ons geen lijst geeft?
Dat is dezelfde vraag, een schakel verderop. Voor ingekochte componenten kunt u vaak zelf vaststellen wat erin zit door de geleverde artefacten te scannen, maar volledig wordt dat zelden. De praktische route is om het in uw inkoopvoorwaarden te zetten en het bij verlenging af te dwingen. Wij helpen die formulering opstellen; het is dezelfde bepaling die uw eigen afnemers inmiddels bij u neerleggen.
Wat is VEX en hebben wij dat nodig?
VEX staat voor Vulnerability Exploitability eXchange: een verklaring waarin u vastlegt of een gemelde kwetsbaarheid uw product daadwerkelijk raakt. Een kritieke fout in een component dat u wel meelevert maar nooit aanroept, is voor uw klant geen probleem — maar zonder verklaring ziet zijn scanner alleen het component en de score. U heeft het nodig zodra uw afnemers zelf gaan scannen, want dan bespaart het u en hen veel vergeefse vragen.
Verandert dit hoe wij ontwikkelen?
Weinig, en dat is de bedoeling. Het genereren gebeurt automatisch en kost geen handeling. Wat wel verandert, is dat een nieuwe afhankelijkheid met een ongewenste licentie of een bekend lek zichtbaar wordt op het moment dat iemand hem toevoegt, in plaats van maanden later. Dat is een kort gesprek op het juiste moment, en het voorkomt het lange gesprek op het verkeerde moment.
Wat laat de eerste lijst meestal zien?
Bijna altijd hetzelfde beeld: het aantal onderdelen is een veelvoud van wat het team dacht, een handvol is jaren niet bijgewerkt, en er staat minstens een licentie tussen die niemand bewust heeft geaccepteerd. De meeste bevindingen zijn met een versie-update opgelost. De waarde zit niet in het aantal maar in het feit dat de vraag voor het eerst beantwoordbaar is.
Werkt dit ook voor oudere software?
Ja, en daar is het vaak het nuttigst. Bij een systeem dat al jaren draait, weet meestal niemand meer precies wat erin zit. Het genereren werkt hetzelfde, al kan het bij zeer oude bouwstraten wat inpassingswerk kosten. In de praktijk levert de eerste lijst daar het meeste op, en is hij vaak het startpunt van een gesprek over modernisering.
Hoe zit het met containers en besturingssystemen?
Die horen erbij. Een containerafbeelding bevat naast uw code een besturingssysteemlaag met tientallen pakketten, en daar zit een groot deel van de gemelde kwetsbaarheden. Wij nemen die laag mee in de lijst, want anders geeft de scan een schoon beeld terwijl het lek een niveau lager zit. Hetzelfde geldt voor basisafbeeldingen die u van een leverancier betrekt.
Kost dit ons een nieuw abonnement?
Niet noodzakelijk. Het genereren zelf kan met open gereedschap dat in uw bestaande bouwstraat past. Voor het beheren van de lijsten over veel producten en versies heen is een centraal systeem prettig, en daar zijn zowel open als betaalde opties voor. Wij adviseren op basis van hoeveel producten en versies u heeft, en beginnen bij wat u al draait. Kosten die terugkomen, leggen we vooraf aan u voor.
Wie moet dit bij ons beheren?
Het genereren beheert zichzelf. Wat aandacht vraagt, is het beoordelen van de uitzonderingen: welk component blijft bewust op een oude versie en waarom, en wanneer kijken we opnieuw. Dat hoort bij dezelfde persoon of rol die de kwetsbaarheden beoordeelt, want het is dezelfde afweging. Zonder eigenaar groeit het uitzonderingenregister tot niemand er meer in kijkt.

Praat met ons over uw overzicht van componenten.

Een kennismaking van een half uur, vrijblijvend. Vertel wat er draait en wat de aanleiding is, dan zeggen we hoe wij het zouden aanpakken en wat de eerste lijst waarschijnlijk laat zien — ook als we uiteindelijk niet samenwerken.

Edit Content