Als u software bouwt voor de Europese markt, heeft waarschijnlijk al iemand u om een software bill of materials gevraagd. De Cyber Resilience Act verplicht fabrikanten er een op te stellen en die in hun technische documentatie te bewaren, en uw klanten vragen er steeds vaker om, lang voordat een toezichthouder dat doet. Wanneer uw product een componentenbibliotheek bevat, komt die vraag bij ons terecht.
Vanaf deze release beantwoordt elke sgcWebSockets-setup die vraag. Het installatieprogramma schrijft een CycloneDX bill of materials in de installatiemap als sbom.cdx.json, met daarin de componenten op het hoogste niveau waaruit de bibliotheek is opgebouwd, met hun versies en licenties.
Gegenereerd door het installatieprogramma, niet handmatig bijgehouden
Het interessante is niet het bestand zelf, maar waar het vandaan komt. Een bill of materials die iemand met de hand bijwerkt, veroudert stilletjes, en een nalevingsdocument dat een versie vermeldt die u niet langer levert, is erger dan helemaal geen document.
Daarom wordt het niet met de hand bijgehouden. Het script van het installatieprogramma draait tijdens het bouwen een generator, en die generator leest elke versie uit het bestand dat er werkelijk eigenaar van is: de productversie uit history.txt, Indy uit IdVers.inc, zlib uit zlib.h, OpenSSL uit de units voor statisch linken. Als een van die waarden niet gelezen kan worden, stopt de generator met een fout en mislukt de build van het installatieprogramma. Hij gokt nooit, en valt nooit terug op een waarde die iemand ooit eens heeft ingetypt.
Het praktische gevolg is dat de SBOM niet kan afwijken. Verhoog de zlib-versie en het volgende installatieprogramma dat u bouwt vermeldt dat, zonder dat iemand eraan hoeft te denken.
Hij beschrijft uw editie, niet een algemeen product
Dit is het onderdeel dat voor u waarschijnlijk het meest van belang is. De bill of materials is niet voor elke editie hetzelfde, omdat de edities niet dezelfde code van derden bevatten.
Enterprise en All-Access compileren de aangepaste Indy die met sgcWebSockets wordt meegeleverd, en die fork brengt zijn eigen zlib mee. Core, Standard en Professional bouwen tegen de Indy die bij uw installatie van Delphi of C++ Builder hoort, die wij niet forken en niet herdistribueren. Voor die edities kunnen wij eerlijk gezegd helemaal geen Indy-versie noemen, omdat de versie is wat uw IDE levert.
Eén algemene SBOM zou daarom voor de meeste installaties onjuist zijn. In plaats daarvan genereert het installatieprogramma het document voor de editie die het verpakt, zodat het bestand dat u ontvangt beschrijft wat u werkelijk hebt.
| Editie | Indy | zlib |
|---|---|---|
| Core, Standard, Professional | geleverd door uw IDE, niet door ons herdistribueerd | bereikt het product via diezelfde Indy |
| Enterprise, All-Access | de aangepaste Indy-fork, versie vermeld | de meegeleverde kopie, versie vermeld |
Wat er in zit
Het document is CycloneDX 1.6 JSON, een gangbaar machineleesbaar formaat dat inventarisatie- en scantools al begrijpen. Naast de componenten legt het van elk de licentie vast, of wij het herdistribueren dan wel uw IDE het levert, en waar het zich in de broncodeboom bevindt.
Het bevat ook VEX-verklaringen waar die nuttig zijn. Als een bekende CVE een componentversie treft maar vanuit onze code niet bereikbaar is, vermeldt het document dat expliciet, met de reden, in plaats van u dat zelf te laten uitzoeken. Die vermeldingen verschijnen en verdwijnen automatisch naarmate componentversies veranderen, omdat de generator beslist op basis van de versie die hij heeft gelezen, niet op basis van een notitie die iemand heeft achtergelaten.
Waar u hem vindt
Kijk in de map waarin u hebt geïnstalleerd, naast history.txt en de licentie.
C:\Program Files (x86)\sgcWebSockets\sbom.cdx.json
Voer hem in wat u ook gebruikt voor inventarisatie, voeg hem toe aan een leveranciersvragenlijst, of verwerk de vermeldingen in de bill of materials die u voor uw eigen product opstelt. Als uw complianceteam hem in een ander formaat nodig heeft, of wil dat er een leveranciersbeoordelingsformulier voor een specifieke build wordt ingevuld, vraag het ons dan via het contactformulier, met vermelding van het product, de editie en de versie die u gebruikt.
Eén ding dat we bewust niet hebben gedaan
We publiceren de SBOM niet op deze website. De Cyber Resilience Act verplicht fabrikanten er een op te stellen en die in de technische documentatie te bewaren, publicatie is niet vereist, en er valt weinig te winnen bij het uitdelen van een componenteninventaris aan iedereen die erom vraagt. Door hem in het product mee te leveren komt hij in handen van de mensen die er recht op hebben, namelijk licentiehouders en, op verzoek, markttoezichtautoriteiten.
U kunt meer lezen over hoe wij met de Verordening omgaan op onze pagina Cyber Resilience Act.
