123% flere rapporterede CVE'er pr. dag i 2026 end sidste år.

Sammenligning

En AI-genereret SBOM er et gæt om dit build. Myndighederne beder om en registrering.

Det går hurtigt at bede en model om at skrive en SBOM, og resultatet ser rigtigt ud. Det er ikke det samme artefakt som en SBOM registreret under buildet, og forskellen betyder noget under CRA og CISA's minimumselementer fra 2026.

Opdateret

Hvorfor teams prøver det

Tiltrækningen er reel. Du indsætter et repository eller en lockfile i en kodeassistent, beder om CycloneDX, og et velformet dokument kommer tilbage på få sekunder. Det kan endda udfylde felter, som scannere ofte lader stå tomme. Leverandørfeltet er det sædvanlige eksempel: De fleste generatorer har ingen kilde til det, så det ender tomt. En model, der bliver bedt om et komplet dokument, kan skrive noget i hvert felt.

Det sidste punkt er problemet i miniature. En scanner, der ikke kender leverandøren, lader feltet stå tomt. En model, der ikke kender den, kan alligevel producere et plausibelt svar. Dokumentet ser mere komplet ud og er mindre pålideligt.

Hvad modellen faktisk ser

En model, der genererer en SBOM, arbejder ud fra teksten foran den: manifester, lockfiles, måske en Dockerfile. Den observerer ikke buildet. Så den kan ikke se:

  • hvilke versioner pakkehåndteringen valgte, når et repository ikke committer en lockfile,
  • pakker gendannet fra en CI-cache,
  • værktøjer, OS-pakker og binærfiler, som et build-trin downloader direkte,
  • hvad der gik ind i en kompileret binærfil, der leveres sammen med et næsten tomt manifest.

To repositories viser, hvor tynde filerne kan være. expressjs/express 5.2.1 committer ingen lockfile, så dens package.json angiver afhængigheder som versionsintervaller, og de faktiske versioner afgøres ved installationen. Repositoriet anthropics/claude-code på v2.1.259 har hverken afhængighedsmanifest eller lockfile af nogen art, og dets offentliggjorte npm-pakke deklarerer nul runtime-afhængigheder, mens den pakker en færdigbygget native binærfil ind. En deterministisk scanner, der peges mod det repository, har intet at læse, der beskriver binærfilen. En model, der får de samme filer, mangler de samme oplysninger og har større frihed til at udfylde hullet.

Hallucination er en dokumenteret fejltype

Sprogmodeller navngiver pakker, der ikke findes. Det bedst målte tilfælde er kodegenerering snarere end SBOM-skrivning, men den fejl, det viser, gælder lige så godt for en liste over komponenter. Et studie fra USENIX Security 2025 genererede 576.000 kodeeksempler med 16 modeller og fandt en gennemsnitlig andel af hallucinerede pakker på mindst 5,2 % for kommercielle modeller og 21,7 % for open source-modeller, med 205.474 unikke hallucinerede pakkenavne. GitHubs egen dokumentation for Copilot Autofix advarer om, at det "may suggest fabricated dependencies published under statistically probable names."

Modeller giver heller ikke det samme svar to gange. Anthropics dokumentation siger, at "even with temperature set to 0, the results will not be fully deterministic and identical inputs may produce different outputs across API calls." To SBOM'er genereret ud fra samme commit kan være forskellige, og ingen af dem siger, hvilken der er rigtig.

I en SBOM er en hallucineret post ikke en harmløs slåfejl. En pakke, der ikke findes, eller den forkerte version af en, der gør, sender et sårbarhedsopslag det forkerte sted hen, og resultatet kommer tilbage selvsikkert og forkert.

Hvad standarderne forventer, at en SBOM indeholder

NTIA's minimumselementer (2021)

NTIA's grundlinje definerede syv datafelter: leverandørnavn, komponentnavn, komponentens version, andre unikke identifikatorer, afhængighedsrelation, forfatter af SBOM-data og tidsstempel. Den kombinerede dem med understøttelse af automatisering og et sæt praksisser og processer. Hvert felt beskriver en kendsgerning om softwaren, ikke en holdning til den.

CISA's minimumselementer fra 2026

Den 29. juli 2026 offentliggjorde CISA, NSA, FBI og internationale partnere opdaterede minimumselementer, der erstatter grundlinjen fra 2021. Flere af tilføjelserne er svære at opfylde uden at observere buildet:

  • SBOM Generation Context: "the relative software lifecycle phase and data available at the time the SBOM author generated the SBOM," med "before build," "build," og "after build" som eksempler. En model, der læser et repository, er i bedste fald før build.
  • Component Hash Value: "the output generated from applying a cryptographic hash algorithm to an executable component artifact." Har forfatteren ikke artefaktet, "the SBOM author should indicate the value is unknown." En model, der aldrig har rørt artefaktet, kan ikke producere et hash, kun tekst formet som et.
  • SBOM Tool Name and Version: Det værktøj, der blev brugt til at generere SBOM'en, skal navngives.
  • Coverage: "An SBOM should include information for all components that make up the target software, including transitive dependencies. There is no minimum depth."
  • Explicitly identifying unknown information: Forfatteren "should explicitly state whether the information is unknown." En opdigtet værdi er det modsatte af det.

EU's Cyber Resilience Act

CRA gør SBOM'en til en lovmæssig forpligtelse for producenter af produkter med digitale elementer. Bilag I, del II kræver, at de identificerer og dokumenterer sårbarheder og komponenter i produkter med digitale elementer, blandt andet ved at udarbejde en softwarestykliste i et almindeligt anvendt og maskinlæsbart format, der som minimum dækker produkternes afhængigheder på øverste niveau. Bilag VII placerer SBOM'en i den tekniske dokumentation, og en markedsovervågningsmyndighed kan anmode om den for at kontrollere overholdelsen af de væsentlige krav.

Ingen af disse tekster forbyder AI-værktøjer. Det, de beder om, er data, der beskriver det faktiske produkt, og ærlige angivelser af, hvad der er ukendt. En SBOM skrevet ud fra slutninger har svært ved begge dele.

Funktion CRACI AI-genereret SBOM
Observerer buildet Pakketrafik registreret under jobbet plus CI-caches Arbejder ud fra de filer og den tekst, den fik
Genereringskontekst Build (registreret, mens jobbet kørte) I bedste fald før build: Modellen så aldrig buildet
Fastlagte versioner Det, installationen faktisk hentede Fra en lockfile eller gættet ud fra et interval
Ukendte oplysninger angivet Fem fuldstændighedsstatusser pr. job og pr. cache Huller og opdigtede data ligner gyldige poster
Samme input, samme output Den samme registrering hver gang Output kan variere mellem kørsler
Virker uden at køre et build Registrerer builds på CRACI-runnere Sekunder ud fra indsatte filer
Virker uden for GitHub Actions GitHub Actions i dag; GitLab CI og Jenkins på roadmappen Ethvert repository eller enhver lockfile
  • Inkluderet
  • Delvist
  • Ikke inkluderet
  • På roadmappen

Sådan producerer CRACI SBOM'en

CRACI kører dine GitHub Actions-jobs på sine egne runnere. Du ændrer runs-on til craci, og kørsler vises stadig i GitHub. Mens jobbet kører, observerer en pakkebevidst proxy trafikken til pakkekilder, så SBOM'en registrerer, hvad buildet faktisk hentede, inklusive transitive afhængigheder. Dokumentationen for afhængighederne følger med CI-caches, så en pakke gendannet fra en cache forbliver i registreringen.

  • Økosystemer: npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk og Git-kilder samt download-presets.
  • Fuldstændighed: Hvert job og hver cache markeres som Complete, Complete with connections, Incomplete, Unavailable eller Not recorded, så det ukendte angives i stedet for at blive udfyldt.
  • Formater: CycloneDX og SPDX, med deklarerede licensmetadata inkluderet i eksporten.
  • Provenance: API'et returnerer SBOM'er, netværkstraces og provenance.

CRACI automatiserer en væsentlig del af den indsigt i og dokumentation for forsyningskæden, som en bredere CRA-compliance-proces har brug for. Det gør ikke alene et produkt compliant. SBOM-generering under buildet dækker detaljerne, og vores CRA-overblik dækker tidslinjen.

Hvor AI faktisk hjælper med SBOM'er

Når du har en registreret SBOM, er en model god til at arbejde med den: at opsummere, hvilke komponenter der bærer risiko, forklare en advisory i et enkelt sprog eller udarbejde udkast til dokumentationen omkring den, som et menneske kan gennemgå. Reglen er enkel. Lad buildet producere registreringen, og lad modellen læse den.

Se den SBOM, dit build faktisk producerer

Book en demo, så registrerer vi en SBOM for et af dine builds med dens fuldstændighedsstatus og provenance.

Book en demo