CRA SBOM-misstag: 7 praktiska åtgärder för tillverkare

SBOM-generatorn körs, filen validerar och ändå kan nästa produktgranskning hitta luckor. De återkommande CRA-problemen är sällan obskyra juridiska gränsfall. Det handlar om grunda beroendeträd, källbaserade inventarier, inaktuella poster och komponenter som skannrar inte kan matcha mot en sårbarhet. Cyberresiliensförordningen kräver ett SBOM i ett allmänt använt, maskinläsbart format som täcker åtminstone dina direkta beroenden och förvaras tillsammans med den tekniska dokumentationen. Den här artikeln går igenom de sju luckorna mellan en SBOM som tekniskt sett finns och en som kan stödja sårbarhetshantering. Det är den SBOM en marknadskontrollmyndighet förväntar sig att se.

Sammanfattning

  • En SBOM som byggs från källmanifest kan missa vad som faktiskt levereras i artefakten
  • Komponenter utan exakt version, hash och PURL är svåra att matcha mot CVE:er
  • Direkta beroenden är CRA:s minimigolv och räcker inte för användbar sårbarhetshantering
  • En SBOM som skapas en gång blir inaktuell när nya sårbarheter och produktversioner tillkommer
  • Interna, proprietära, kommersiella och firmware-komponenter hör också till räckvidden
  • Leverantörers SBOM:ar är underlag att stämma av, inte din färdiga produkt-SBOM
  • En produktversion behöver ett auktoritativt SBOM-underlag, inte utspridda fragment
7
Vanliga fallgropar
behandlade i den här artikeln
30.6%
SBOM:er som saknar ett direkt beroende
JBomAudit, NDSS 2025
11 Sep 2026
Rapporteringsklocka
11 Dec 2027
Full CRA-tillämpning
SBOM-luckor blir juridisk risk

Misstag i korthet

  • Källträd, inte levererad artefakt: generera från den byggda artefakten eller imagen så att kompilerad kod, OS-paket och firmware syns.
  • Tunna identitetsfält: använd exakta versioner, hashvärden och PURL-identifierare där tillgängliga, samt leverantörsnamn så att skannrar kan matcha CVE:er.
  • Enbart direkta beroenden: lägg till skanning av låsfiler och byggda artefakter så att indirekta och paketerade beroenden ingår i SBOM:en.
  • Engångsfil: regenerera och arkivera SBOM:en vid varje version och håll sårbarhetsmatchningen aktuell.
  • Utelämnad produktkod: interna, proprietära, kommersiella och firmware-komponenter behöver fortfarande identifierare och dokumentationsunderlag.
  • Leverantörskopiera-klistra: leverantörers SBOM:ar är underlag. Stäm av dem mot egenproducerad kod och den slutliga releaserartefakten.
  • SBOM-spridning: ha en auktoritativ produkt-SBOM per version så att version 1.4.2 har ett enda försvarbart underlag.
Var SBOM-misstag uppstår i produktlivscykeln En CRA-redo SBOM produceras ur releaseprocessen och hålls användbar efter leverans.
ByggSkanna artefakten

Fånga applikationskod, OS-paket, firmware-blobbar och genererade filer.

IdentifieraLägg till stabila identifierare

Använd exakta versioner, hashvärden, leverantörsnamn och PURL-identifierare där tillgängliga.

KonsolideraSlå samman leverantörsunderlag

Kombinera uppströms-SBOM:ar med egenproducerad kod och integrationskod.

LagraSpara ett releaseunderlag

Arkivera produkt-SBOM:en med versionen och den tekniska dokumentationen.

BevakaFortsätt matcha CVE:er

Kör sårbarhetsmatchning igen när nya rådgivningar och exploateringssignaler dyker upp.

Om något steg är manuellt eller saknas kan SBOM:en validera som JSON men ändå inte svara på den fråga en granskare faktiskt ställer: vilka komponenter ingick i den produkt som släpptes ut på marknaden?

Vad som spelar roll för SBOM-underlag

SBOM:en är produktdokumentation, inte ett offentligt marknadsföringsunderlag
  • Använd ett allmänt använt, maskinläsbart format.
  • Täck åtminstone direkta beroenden och gå djupare för användbar sårbarhetshantering.
  • Förvara SBOM:en tillsammans med den tekniska dokumentationen och releaseunderlaget.
  • Anta inte att CRA kräver ett format, en hashtyp eller offentliggörande.

Det juridiska minimigolvet är inte detsamma som ett operativt minimigolv för sårbarhetshantering. En SBOM med enbart direkta beroenden kan uppfylla den minimiformulering som gäller beroenden men vara för grund för att snabbt identifiera berörda produkter. BSI TR-03183, ENISA:s vägledning, CISA:s SBOM-vägledning och aktuell verktygspraxis är bäst att läsa som kvalitetsmått som hjälper tillverkare att omsätta CRA-skyldigheten i praktiken.

Misstag 1: din SBOM beskriver källträdet, inte den produkt du levererade

Källmanifest är praktiska, men de är inte produkten. En källsökning kan överapportera utvecklingsberoenden och missa det som bara uppstår efter bygge, paketering, containerlagerläggning, statisk länkning eller firmware-integration. För en tillverkare ska SBOM:en svara på vad som ingick i produktversionen, inte bara vad som deklarerades i en paketfil.

Skillnaden spelar störst roll för inbyggda och containeriserade produkter. En sökning på språknivå kan missa OS-paket i ett containers baslager. En Yocto- eller Buildroot-export kan missa kiselleverantörers firmware, bootloaders, kärnmoduler eller binära blobbar som kom in utanför byggsystemet. Om dessa komponenter finns i den levererade artefakten hör de hemma i releaseunderlaget, även när en automatisk paketskanner inte kan härleda dem.

Lösningen är att generera från releaserartefakten eller imagen och sedan jämföra med utdata från källkod och låsfiler. För containrar, skanna den slutliga imagen via digest. För firmware, kombinera byggsystemets SBOM-utdata med binäranalys och manuella poster för komponenter som verktyg inte kan identifiera automatiskt.

Misstag 2: saknade hashvärden och PURL-identifierare gör komponenter omatchningsbara

En SBOM utan korrekta versions-, hash-, leverantörs- och paketidentifierare är svår att använda för sårbarhetsmatchning. Filen kan vara maskinläsbar, men en skanner behöver ändå stabil komponentidentitet för att avgöra om en CVE, ett OSV-råd, ett GitHub Security Advisory eller en CISA KEV-post gäller.

Varje komponent bör bära tillräcklig identitet för att klara automatisk matchning:

Exakt version

Undvik "latest", lösa intervall och tvetydiga förgreningsnamn.

Grundläggande identitetsfält
Kryptografisk hash

Kopplar posten till det konkreta arkivet, imagen eller binären.

SHA-256 eller starkare i praktiken
PURL-identifierare

Matchar paketdata från register, OSV och GHSA-liknande källor.

Använd där tillgängligt
Leverantörsnamn

Separerar komponenter med samma namn och proprietär kod.

Användbart för varje komponent
Genereringskontext

Visar om SBOM:en kom från källkod, bygge, artefakt, driftsatt system eller körmiljö.

Granskningsunderlag

Det handlar inte bara om hygien. NIST meddelade den 15 april 2026 att NVD-berikandet nu prioriteras för utvalda CVE:er eftersom volymen sårbarheter har överskridit kapaciteten för fullständig berikning. Det gör CPE-baserad matchning till ett svagare alternativ för framtida sårbarhetsarbete. Använd PURL där det finns, behåll hashvärden för levererade artefakter och behandla inte ett komponentnamn ensamt som tillräckligt.

Ett vanligt formatmisstag är att använda CycloneDX 1.3 eller tidigare. Grundläggande VEX-stöd kom i CycloneDX 1.4, och den rikare evidence-strukturen för komponenter kom i CycloneDX 1.5. För aktuell CRA-förberedelse, sikta på CycloneDX 1.6 eller senare, eller en aktuell SPDX-profil som dina verktyg kan använda tillförlitligt. Kontrollera ditt generators utdata innan du antar att formatet stödjer de fält din process behöver.

Misstag 3: stanna vid direkta beroenden

Direkta beroenden är CRA:s minimigolv. De räcker inte för användbar sårbarhetshantering. Ett transitivt beroende är en komponent som dras in av en annan komponent och kan bära den sårbarhet som spelar roll. När en CVE träffar ett transitivt paket som din SBOM inte listar kan produkten vara drabbad medan din matchningspipeline är tyst.

SBOM med enbart direkta beroenden jämfört med användbar beroendetäckning Det juridiska minimigolvet är direkta beroenden. Det operativa målet är tillräckligt djup för att matcha verkliga sårbarheter.
Enbart direkta
  • Produktversion
  • Bibliotek A listat
  • Bibliotek D listat
  • Bibliotek B och bibliotek C är inte synliga för skannern
Användbar täckning
  • Produktversion
  • Bibliotek A listat
  • Bibliotek B och bibliotek C länkade under bibliotek A
  • Bibliotek D listat
Granskningsresultat
  • Färre blinda fläckar
  • Räckvidden är lättare att förklara
  • Berörda versioner är tydligare
  • VEX-beslut har bättre underlag

En kollegialt granskad NDSS 2025-studie, JBomAudit, visade att 7 907 av 25 882 Java-SBOM:ar inte redovisade minst ett direkt beroende. Den praktiska lärdomen är enkel: om ens direkta beroenden ofta saknas behöver transitiv täckning medvetna kontroller.

För att stänga den här luckan, använd låsfiler där ekosystemet stöder det, skanna byggda artefakter liksom källkod och granska paket som buntar eller skuggar beroenden. Behandla transitiv täckning som en revisionskvalitetsstandard, inte som en slapp inställning dold i en skanners standardvärden.

Misstag 4: behandla SBOM:en som ett engångsdokument

En SBOM som genereras en gång och aldrig uppdateras skapar en falsk trygghet. Nya CVE:er publiceras mot komponenter som redan finns i produkten. Nya firmwareversioner, patchar och leverantörsuppdateringar förändrar produkten. Cyberresiliensförordningen förväntar sig också att teknisk dokumentation uppdateras löpande där det är lämpligt under supportperioden.

Vanliga uppdateringstriggers:

Ny versionRegenerera och arkivera versions-SBOM:en

Använd den programvaru- eller firmwareartefakt du släpper ut på marknaden.

SäkerhetspatchUppdatera SBOM:en och VEX/rådgivningsunderlaget

Komponentversionen eller åtgärdstillståndet ändrades.

KomponentändringRegenerera från byggesutdata

Beroendegrafen ändrades eftersom en komponent lades till, togs bort eller ersattes.

LeverantörsuppdateringStäm av leverantörs- och produkt-SBOM:ar

Uppströmskomponentens identitet ändrades, lagra inte leverantörsfilen oförändrad.

Baseimage-ändringSkanna om den levererade artefakten

OS-paket eller inbäddade filer ändrades i binären, firmwarepaketet eller containerimagen.

CI/CD är den praktiska kontrollen. Varje version bör producera en aktuell SBOM-artefakt lagrad tillsammans med bygget och länkad till den tekniska dokumentationen. Manuella poster bör bara finnas för komponenter som verktyg inte kan identifiera, och dessa poster behöver fortfarande granskning när produkten ändras.

September 2026-rapporteringsklockan belönar aktuella SBOM:ar

Från och med den 11 september 2026 gäller rapporteringen enligt artikel 14 aktivt utnyttjade sårbarheter och allvarliga incidenter. För en aktivt utnyttjad sårbarhet gäller flödet: tidig varning inom 24 timmar, sårbarhetsrapportering inom 72 timmar och en slutrapport senast 14 dagar efter att en korrigerande eller begränsande åtgärd finns tillgänglig. En inaktuell SBOM saktar ner det första triagebeslutet.

Misstag 5: utelämna interna, proprietära och firmware-komponenter

En vanlig genväg är att bara dokumentera beroenden med öppen källkod och utelämna interna bibliotek, kommersiella moduler, proprietär firmware eller leverantörsblobbar. Det är inte en produkt-SBOM. Om en komponent levereras med produkten hör den till räckvidden, även när den saknar en offentlig registersida.

Interna komponenter saknar ofta ekosystem-PURL eller offentlig paketpost. Använd en intern identifierare, din organisation som leverantör där det är lämpligt, den exakta versionen eller bygg-ID:t och hashen för binärartefakten. För kommersiella komponenter, behåll leverantörsnamn, version, licensbevis och kontraktshänvisningar i den tekniska dokumentationen.

För produkter med hårdvara och mjukvara är firmware det ställe där detta tydliggörs. Wi-Fi-moduler, modem, säkra element, bootloaders, trusted execution environment-binärer och out-of-tree-kärnmoduler kan bära sårbarheter men förblir osynliga för skannrar på paketspråksnivå. Använd leverantörers SBOM:ar där de finns, lägg till manuella poster där de inte finns och använd binäranalys som kontroll. För hårdvarusidan av dokumentationspaketet, se HBOM under CRA.

Misstag 6: förlita sig på leverantörers SBOM:ar som den färdiga artefakten

Leverantörers SBOM:ar är giltiga underlag. De är inte din färdiga produkt-SBOM. Tillverkaren släpper ut den integrerade produkten på EU-marknaden. Produkt-SBOM:en måste kombinera leverantörskomponenter, egenproducerad kod, byggesutdata, firmware, integrationskod och produktspecifika beroendeförhållanden.

Felbeteendet är lätt att missa: en leverantör ger dig en CycloneDX-fil, en annan ger SPDX, en tredje ger en PDF-inventering och produktmappen innehåller länkar till alla tre. Det är leverantörsunderlag, inte ett produktunderlag. En granskare behöver fortfarande veta vilka komponenter som ingick i produktversion 1.4.2.

Stäm av istället för att kopiera. Slå samman leverantörers SBOM:ar i produkt-SBOM:en, normalisera identitetsfält, registrera kända oklarheter och behåll uppströms-SBOM:arna som stödunderlag. Om en leverantörs-SBOM saknar PURL, hash, licens eller exakt version, dokumentera luckan och åtgärda vad du kan innan lanseringen. En URL till en uppströmsfil är inte samma sak som en integrerad produkt-SBOM.

Misstag 7: många SBOM:ar, inget enda produktunderlag

SBOM-spridning är det stadium som uppstår efter att team börjat använda verktyg. Det finns en app-SBOM, en container-SBOM, en firmware-SBOM, flera leverantörs-SBOM:ar och ett kalkylblad som underhålls av en produktansvarig. Ingen av dem är det auktoritativa svaret för den produktversion som släpptes ut på marknaden.

Det skapar revisions- och driftsrisk. När en ny aktivt utnyttjad sårbarhet dyker upp måste teamet söka igenom fragment innan det kan avgöra om produkten är drabbad. När en myndighet gör en välgrundad begäran ska dokumentationspaketet inte bero på att någon minns vilken mapp som innehåller den senaste sammanfogningen.

Använd en auktoritativ produkt-SBOM per version, med stödjande komponent-SBOM:ar bevarade under den. Spara den i minst 10 år efter att produkten släppts ut på marknaden, eller under supportperioden, beroende på vilket som är längst. Förvara den där versionen, sårbarhetsbevakningen, VEX-besluten och den tekniska dokumentationen alla kan referera till samma version.

Vanliga frågor

Min skanner visar noll sårbarheter. Är SBOM:en tillräcklig?

Inte i sig. En ren sårbarhetsskanning bevisar bara att skannern inte matchade kända sårbarheter mot de komponenter den kunde se. Om SBOM:en genererades enbart från källmanifest, missar firmware-blobbar, saknar PURL-identifierare eller hashvärden eller utelämnar leverantörskomponenter, kan det rena resultatet vara ett täckningsproblem snarare än ett säkerhetsresultat.

Måste vi publicera SBOM:en eller ge den till varje kund?

Nej. Cyberresiliensförordningen skapar ingen allmän skyldighet att publicera SBOM:en. Förvara den i den tekniska dokumentationen och var redo att lämna ut den till en marknadskontrollmyndighet vid en välgrundad begäran när det är nödvändigt för att kontrollera efterlevnaden. Du kan fortfarande välja att dela SBOM-information avtalsmässigt med kunder, men det skiljer sig från en allmän publiceringsskyldighet enligt cyberresiliensförordningen.

Vad är den rättsliga minimumnivån för beroendetäckning?

Cyberresiliensförordningens text säger att SBOM:en måste täcka åtminstone direkta beroenden. Det är minimigolvet. För verklig sårbarhetshantering är täckning av enbart direkta beroenden svag eftersom många sårbarheter finns i transitiva, buntade eller ominpackade komponenter. Bygg ditt operativa mål kring den levererade artefakten och beroendeförhållandena, inte bara den juridiska minimiformuleringen.

Vi genererar från källkod. Räcker det?

Vanligtvis inte. Källkods-SBOM:ar är användbara för utvecklingsgranskning, men produktunderlaget ska återspegla vad som levererades. Generera från den byggda artefakten eller imagen, jämför med utdata från låsfiler och källkod och lägg till manuella poster för komponenter som automatiserade verktyg inte kan härleda.

Vår leverantör ger oss inte en fullständig SBOM. Vad ska vi göra?

Börja med avtalet och inköpsprocessen. Om leverantören fortfarande inte kan ge fullständiga data, registrera de kända oklarheter som finns, samla in de fält du kan verifiera själv, lägg till hashvärden och versionsbevis för de levererade binärerna och dokumentera luckan i den tekniska filen. Utelämna inte komponenten tyst från produkt-SBOM:en.

Vad du gör härnäst

  1. Välj en representativ produktversion och jämför källkods-SBOM:en med SBOM:en för den byggda artefakten eller containerimagen. Undersök varje komponent som finns i den ena men inte i den andra.
  2. Granska identitetsfälten först: exakt version, leverantör, hash och PURL där det finns. En komponent som inte kan identifieras tillförlitligt kan inte heller matchas tillförlitligt.
  3. Regenerera SBOM:en i CI/CD vid varje version och lagra den tillsammans med releasebevisen. Se CycloneDX vs SPDX för formatval och verktygsjämförelse.
  4. Använd BSI TR-03183:s fältkategorier som ett kvalitetsmått, inte som en ersättning för att läsa själva CRA-skyldigheten.
  5. Koppla versions-SBOM:ar till sårbarhetsbevakningen före den 11 september 2026. Om du hellre inte vill bygga den här pipeline från grunden hanterar CRA Evidence CycloneDX/SPDX-inmatning, SBOM-kvalitetsbedömning och sårbarhetsspårning över produktversioner.