V roce 2026 o 131% více nahlášených CVE denně než loni.

Srovnání

Kde AI nástroje pro bezpečnost selhávají a co pokrývají deterministické důkazy z buildu

Bezpečnostní data, která opouštějí vývojový tým, musí obstát ve třech testech: dají se reprodukovat, dají se auditovat a jsou úplná? Takto si v každém z nich vedou AI nástroje a deterministické záznamy buildů, s příklady.

Aktualizováno

Argument v úzkém vymezení

Nejde o argument proti AI v bezpečnosti. Modely dobře čtou kód, vysvětlují nálezy a navrhují opravy a týmy, které je dobře využívají, postupují rychleji. Argument je užší: pro záznamy, které musí obstát i později, je pravděpodobnostní model špatným primárním zdrojem. Týká se to SBOM, kterou předáváte regulátorovi, původu artefaktu, který jste dodali, a odpovědi na otázku „byli jsme zasaženi?“

O tom, zda záznam obstojí, rozhodují tři vlastnosti. Každá z následujících částí se věnuje jedné z nich, s příklady a zdroji.

1. Reprodukovatelnost: zeptejte se dvakrát a dostaňte stejnou odpověď

Bezpečnostní záznam má smysl, jen pokud z téhož vstupu dostane stejnou odpověď i někdo jiný. Jazykové modely to neslibují a jejich dodavatelé to sami říkají.

  • Dokumentace společnosti Anthropic: „Ani při teplotě nastavené na 0 nebudou výsledky plně deterministické a identické vstupy mohou napříč voláními API dávat různé výstupy.“
  • GitHub o Copilot Autofix: „I při stejném upozornění a kódu se mu nemusí podařit vytvořit použitelný návrh, nebo se návrh může mezi pokusy lišit.“
  • Výzkumníci, kteří vytvořili framework SecLLMHolmes, otestovali pro IEEE S&P 2024 osm LLM na 228 scénářích kódu. Uvádějí, že modely „poskytují nedeterministické odpovědi“ a že „pouhou změnou názvů funkcí nebo proměnných nebo přidáním knihovních funkcí do zdrojového kódu“ daly PaLM2 a GPT-4 chybné odpovědi v 26 % a 17 % případů.

Příklad. Dva inženýři se stejného asistenta zeptají, zda je služba vystavena novému bezpečnostnímu upozornění. Jeden dostane „ne“, druhý „možná, zkontrolujte tranzitivní strom“. Ani jedna odpověď není záznam a ani jednu nelze pro auditora o šest měsíců později reprodukovat.

Zaznamenaný build tento problém nemá, protože se nic neodvozuje. CRACI sleduje balíčky, které job během běhu stahuje ze zdrojů balíčků, a SBOM je záznamem tohoto pozorování.

2. Auditovatelnost: ukažte, jak to víte

Audity se točí kolem otázky „jak to víte?“ Model umí dát plynulou odpověď, ale jeho vysvětlení není důkaz. Hodnocení SecLLMHolmes zjistilo, že LLM o posuzovaných zranitelnostech podávají „chybné a nevěrné zdůvodnění“, takže správný verdikt může přijít s vysvětlením, které neobstojí.

Normy se posouvají k záznamům, které vysvětlují svůj vlastní původ. Minimální prvky SBOM pro rok 2026, které zveřejnila CISA spolu s NSA, FBI a mezinárodními partnery, přidávají SBOM Tool Name, SBOM Tool Version a SBOM Generation Context, který říká, zda SBOM vznikla „před buildem“, během „buildu“ nebo „po buildu“. Stejný dokument varuje, že „organizace mohou chyby, ať už plynou z postupů autora SBOM, nebo z volby nevhodných nástrojů, zohlednit v rozhodnutích o řízení rizik organizace“.

Příklad. Dotazník zákazníka se ptá, jak vaše SBOM vznikla. „Asistent přečetl repozitář a sepsal ji“ udává kontext generování, ale ne takový, který může posuzovatel ověřit. „Byla zaznamenána uvnitř runneru CI během buildu vydání a stav úplnosti jobu je Complete“ je něco, co posuzovatel může ověřit proti buildu.

3. Úplnost: nemůžete nahlásit, co jste nikdy neviděli

Model uvažuje nad tím, co mu ukážete. Pokud soubory, které čte, software nepopisují, nepopíše ho ani odpověď a nic ve výstupu na to neupozorní. Pokyny CISA pro rok 2026 nastavují laťku podle rozhodnutí příjemce: ten by „měl být schopen dojít k závěru, že nově nahlášená zranitelnost se ho netýká, pokud SBOM danou komponentu neuvádí“. To funguje, jen pokud absence v seznamu znamená absenci v buildu.

Příklad. Repozitář anthropics/claude-code ve verzi v2.1.259 nemá žádný manifest závislostí ani lockfile. Zveřejněný balíček npm deklaruje nula runtime závislostí a obaluje předpřipravenou nativní binárku. Jakýkoli nástroj, který čte repozitář, ať AI, nebo jiný, nemá skoro co uvést, zatímco program, který běží, je kompilovaná binárka.

Příklad. AI nástroje pro psaní kódu mohou tuto mezeru také samy vytvořit. GitHub varuje, že Copilot Autofix „může navrhnout smyšlené závislosti zveřejněné pod statisticky pravděpodobnými názvy“. Studie z USENIX Security 2025 nad 576 000 vygenerovanými ukázkami kódu od 16 modelů zjistila průměrný podíl halucinovaných balíčků nejméně 5,2 % u komerčních modelů a 21,7 % u open source modelů, s 205 474 unikátními halucinovanými názvy balíčků.

Deterministický přístup je nutný, ale ne postačující

Poctivá verze tohoto argumentu musí zahrnout i další bod. Generátory SBOM jsou deterministické, a přesto se mezi sebou rozcházejí. Nad stejným commitem expressjs/express mohou vrátit různé seznamy, protože každý sám rozhoduje, co považuje za komponentu a kterým souborům věřit. Repozitář neobsahuje commitnutý lockfile, takže nástroj, který řeší závislosti z lockfilu, nemá vůbec žádné závislosti z package.json, které by mohl nahlásit.

Deterministický skener pokaždé reprodukuje stejnou neúplnou odpověď. Opakovatelnost je nutná, ale mezeru uzavírá pozorování: zaznamenat, co build skutečně stáhl, a říct, kdy je záznam neúplný. CRACI označuje každý job a každou cache jako Complete, Complete with connections, Incomplete, Unavailable nebo Not recorded.

Praktický příklad: vymezení dopadu nového bezpečnostního upozornění

Hypotetická situace: vyjde bezpečnostní upozornění pro verzi široce používaného balíčku npm. Podle Cyber Resilience Act mají výrobci 24 hodin na to, aby aktivně zneužívanou zranitelnost oznámili agentuře ENISA, takže vymezení dopadu musí být rychlé a správné.

Cesta „nejprve AI“

Požádáte asistenta, aby zkontroloval vaše repozitáře. Přečte manifesty a lockfily a možná Dockerfile. Nevidí balíčky obnovené z cache CI, nástroje stažené krokem buildu ani verze vyřešené při instalaci v repozitáři bez lockfilu. Zeptáte-li se dvakrát, může odpovědět jinak. Jeho shrnutí je užitečné, ale podepsat na jeho základě oznámení nemůžete.

Cesta „nejprve záznam“

CRACI agreguje zranitelnosti napříč buildy a repozitáři, omezené na výchozí větev na úrovni organizace, a znovu vyhodnocuje monitorované SBOM, jakmile se objeví nové zranitelnosti. API vrací pro každý build SBOM CycloneDX, jeho síťový záznam a údaje o původu. Pokud je záznam jobu neúplný, jeho stav úplnosti vám řekne, kam se podívat ručně. Model můžete stále požádat o shrnutí výsledku. Shrnuje ale záznam, nevytváří ho.

Se záznamem je otázka „která vydání obsahovala tento balíček?“ vyhledáním, ne vyšetřováním.

Vedle sebe

Funkce CRACI AI nástroj pro bezpečnost
Reprodukovatelné Záznam se při opakovaném dotazu nezmění Stejné vstupy mohou dát různé výstupy
Auditovatelné Odkazuje na job a stažení balíčku Uvedené zdůvodnění nemusí odpovídat skutečnosti
Uvedená úplnost Pro každý job a každou cache, i když je neúplný Omezeno na to, co model dostal k dispozici
Funguje nad zdrojovým kódem ještě před buildem Zaznamenává buildy na runnerech CRACI Čte kód, diffy a nálezy
Typické selhání Job označený jako Incomplete nebo Not recorded Věrohodná odpověď, která je chybná
Nejlépe se hodí pro SBOM, původ, vymezení dopadu incidentu, důkazy pro audit Code review, vysvětlení, návrhy pro triáž
  • Součástí
  • Částečně
  • Není součástí

Každý nástroj tam, kde je silný

AI používejte tam, kde pomáhá úsudek a výstup kontroluje člověk: code review, vysvětlení nálezu, návrh opravy. Deterministické záznamy buildů používejte tam, kde se výstup musí reprodukovat, auditovat nebo se na něj musí dát spolehnout jako na úplný: SBOM, původ a vymezení dopadu incidentů. CRACI automatizuje významnou část těchto důkazů o dodavatelském řetězci pro širší proces CRA. Sám o sobě vám soulad nezajistí.

Jak záznam vzniká, si přečtěte v části generování SBOM během buildu, nebo začněte tím, co CRA požaduje.

Podívejte se na záznam buildu, který můžete reprodukovat

Rezervujte si demo a ukážeme vám SBOM, stav úplnosti a údaje o původu, které CRACI zaznamenává u skutečného buildu.

Rezervujte si demo