Metodika benchmarku

Co měříme, co neměříme a proč

Benchmark existuje proto, aby byl prověřen, ne obdivován. Tato stránka uvádí jeho přesný perimetr: co publikovaná čísla pokrývají, co záměrně vynechávají a které z našich schopností nelze poctivě zredukovat na procento.

Co benchmark měří

Jedna otázka, položená nad verzovaným korpusem ručně posouzených projektů: u souboru, o němž jsme již rozhodli, ohlásí engine zranitelnost, která tam je, na správném řádku, aniž by hlásil věci, které tam nejsou?

Verzovaný korpus
Každý případ je malý projekt obsahující nejmenší kód, který vykazuje, nebo bezpečně vylučuje, jednu zranitelnost. Každý nese komentář popisující, co je špatně, co se očekává a proč. Korpus je verzovaný: změna v něm je změnou publikovaných čísel.
Referenční pravda psaná o kódu
Očekávaný výsledek je úsudek o kódu, rozhodnutý dříve, než engine běží, nikdy popis toho, co engine vyprodukoval. Když se ty dva neshodují, zkoumáme nejprve engine. Anotace napsaná tak, aby odpovídala výstupu enginu, neměří nic, a museli jsme opravit anotace, které se tímto směrem posunuly.
Pipeline, která se dodává
Každý případ je analyzován tak, jak běží zákaznický sken: plný orchestrátor v maximální hloubce, žádné externí skenery, žádný model ve smyčce. Čísla popisují engine, který se všude dodává identicky, nikoli laboratorní konfiguraci sestavenou pro tuto příležitost.
Správný kód, záměrně
Třetina korpusu je kód, který není zranitelný, z větší části opravená podoba případu, který zranitelný je. Korpus složený jen ze zranitelností nedokáže odhalit falešně pozitivní nález, a právě falešně pozitivní nálezy způsobují, že se bezpečnostní nástroj přestane číst.

Co benchmark neměří

Cybseco je dodává. Žádné číslo na stránce benchmarku je nepopisuje a každá z nich nese svůj důvod. Schopnost mlčky vynechaná je schopnost, o níž čtenář předpokládá, že ji čísla pokryla.

  • Dependency vulnerabilities (SCA) — Produced by external scanners that read a live vulnerability database. Their output changes when the database changes, with no change to Cybseco, so a precision figure measured today would describe the database rather than the engine and would not reproduce tomorrow.
  • Standalone secret scanning — Gitleaks is an external binary and is not installed for this benchmark. Hardcoded credentials found by Cybseco's own analyzers are measured, inside the code and CI/CD layers, under CWE-798 and CWE-532.
  • Third-party SAST (Semgrep, Bandit) — An external ruleset Cybseco orchestrates but does not author. Measuring it would report Semgrep's accuracy, not Cybseco's.
  • Licence compliance policy — A policy decision about a project's licences, not a judgement about its code. The corpus labels vulnerabilities, so a licence finding has nothing to be right or wrong against here.
  • LLM-assisted analysis — Its output depends on a model and a prompt rather than on the engine, and it is not part of the deterministic result this benchmark measures.
  • Graph, attack paths, decision engine — A different kind of claim: these produce paths and plans, not findings, so precision and recall over labelled lines cannot express them. The methodology page explains what could be measured, and which of these cannot honestly be reduced to a percentage at all. Publishing a number before the method is settled is how a benchmark stops being evidence.

Proč některé schopnosti nejsou procento

Detekce má správnou odpověď: zranitelnost na tom řádku je, nebo není. Část toho, co Cybseco dělá, tvrdí něco jiného a přesnost ani úplnost to vyjádřit nedokážou. Publikovat číslo navzdory tomu by bylo to nejsnazší na této stránce a nejrychlejší způsob, jak prohrát spor s někým, kdo čte pozorně.

Architektonický graf
Faktické tvrzení: tato aktiva existují a tyto vztahy mezi nimi platí. Měřitelné, a první věc, kterou hodláme změřit. Vyžaduje to korpus kompletních repozitářů anotovaných ručně, dva nezávislé posuzovatele a shodu mezi nimi publikovanou vedle skóre. Cokoli menšího měří spíše proces anotace než extraktor.
Útočné cesty
Faktické, ale teprve ve chvíli, kdy někdo uvede, s čím útočník začíná. „Útočník se může dostat k databázi“ není pravdivé ani nepravdivé, dokud neřeknete, zda začíná jako anonymní návštěvník, ověřený uživatel, nebo kompromitovaný build runner. Tentýž engine má za jednoho předpokladu pravdu a za jiného se mýlí, takže číslo bez tohoto předpokladu vytištěného vedle není reprodukovatelné.
Kontextová prioritizace
Tvrzení o tom, co je důležitější, a žádná skutečnost zde neexistuje nezávisle na cíli. Startup před prvními tržbami a regulovaná banka čtou tentýž repozitář a oba mají pravdu, když jej seřadí odlišně. Jakékoli správné pořadí, které bychom publikovali, by byl náš vlastní produktový názor, validovaný proti referenční pravdě, kterou jsme také napsali my.
Rozhodovací engine
Jednat hned, naplánovat, ověřit: doporučení vůči politice, a politika je produktové rozhodnutí. Můžeme testovat, že se drží vlastní politiky, že žádný nález není tiše zahozen a že každé doporučení cituje důkaz, který existuje. To je test shody. Nazvat to přesností by vyvolalo přesně to nedorozumění, kterému má tato stránka předcházet.

Jak číst čísla

Čtyři věci, které stojí za to vědět, než z jakéhokoli jednotlivého čísla na stránce benchmarku vyvodíte závěr.

Velikost vzorku před procentem
Každá vrstva ukazuje, z kolika nálezů byla její přesnost spočítána. Vrstvy s malými vzorky jsou ty nedávno přidané a jejich čísla se s růstem korpusu pohnou. Platí to proti lichotivým řádkům stejně jako proti tomu nepříjemnému: perfektní skóre z devíti nálezů je slabé tvrzení, ne silné.
Každý falešně pozitivní nález je zveřejněn
Nálezy, které engine vytvoří na kódu, jenž není zranitelný, jsou uvedeny s chybujícím analyzátorem a důvodem, proč je nález nesprávný. Počítají se proti přesnosti, nikdy nejsou z ní vyloučeny. Tři z nich se spouštějí právě na tom opatření, které samo pravidlo doporučuje, což je přesně ten druh vady, kvůli jejímuž odhalení, nikoli pohlcení, benchmark existuje.
Vrstva LLM analyzuje váš kód
Čte vlastní integrační kód aplikace na chyby LLM a agentů: výstup modelu, který se dostane do shellu, přihlašovací údaj vložený do promptu, agentní nástroj, který může spustit cokoli. Není mírou AI uvnitř Cybsecou. Tento benchmark spouští deterministický engine bez modelu ve smyčce.
Známé mezery jsou pojmenovány
Zranitelnost, která je skutečná a mimo současný dosah enginu, se zaznamená jako akceptovaná mezera, vyloučí se z úplnosti a uvede se v seznamu. Zaznamenání limitu je způsob, jak se budoucí zlepšení projeví jako změřený přínos, místo aby se tvrdilo už dnes.

Pravidla, kterými se sami vážeme

Jsou to omezení pro nás, nikoli tvrzení o produktu. Právě ona činí čísla hodnými čtení.

  • Cokoli Cybseco ohlásí, je buď změřeno, nebo na této stránce pojmenováno jako mimo rozsah. Třetí stav neexistuje a automatická brána shodí build, když je analyzátor dodán bez jednoho či druhého.
  • Referenční pravda popisuje kód a je rozhodnuta dříve, než engine běží. Anotace napsaná tak, aby odpovídala výstupu enginu, není důkaz.
  • Číslo se publikuje se vzorkem, z něhož bylo spočítáno.
  • Vadu, o které víme, publikujeme, nevylučujeme ji z metriky. Brána selže i tehdy, když publikovaná vada tiše přestane být reprodukovatelná, takže seznam se může jen poctivě zkracovat.
  • Žádné srovnání s jiným produktem u schopností, kde bychom vybírali jejich konfiguraci, jejich korpus i scénář. Takovému srovnání by neměl věřit nikdo, ani my.
  • Žádné číslo dříve, než je jeho metodika veřejná a jeho referenční pravda přezkoumatelná.

Podívejte se, jak Cybseco uvažuje o reálném systému

Zhlédněte interaktivní demo a poté si vyžádejte řízenou zkušební verzi pro svůj tým.