Benchmark-metodologi

Hvad vi måler, hvad vi ikke måler, og hvorfor

Benchmarket findes for at blive efterprøvet, ikke beundret. Denne side angiver dets præcise perimeter: hvad de offentliggjorte tal dækker, hvad de bevidst udelader, og hvilke af vores kapabiliteter der ikke ærligt kan reduceres til en procentdel.

Hvad benchmarket måler

Ét spørgsmål, stillet over et versioneret korpus af håndbedømte projekter: givet en fil vi allerede har taget stilling til, rapporterer motoren den sårbarhed der er der, på den rigtige linje, uden at rapportere ting der ikke er der?

Et versioneret korpus
Hvert tilfælde er et lille projekt der indeholder den mindste kode som udviser, eller sikkert undgår, én sårbarhed. Hvert bærer en kommentar der siger hvad der er galt, hvad der forventes og hvorfor. Korpuset er versioneret: en ændring i det er en ændring i de offentliggjorte tal.
Ground truth skrevet om koden
Det forventede resultat er en bedømmelse af koden, besluttet før motoren kører, aldrig en beskrivelse af hvad motoren producerede. Når de to er uenige, undersøger vi motoren først. En mærkning skrevet for at matche motorens output måler intet, og vi har måttet rette mærkninger der var drevet den vej.
Den pipeline der leveres
Hvert tilfælde analyseres sådan som en kundescanning kører: den fulde orkestrator på maksimal dybde, ingen eksterne scannere, ingen model i løkken. Tallene beskriver den motor der leveres identisk overalt, ikke en laboratoriekonfiguration sammensat til lejligheden.
Korrekt kode, bevidst
En tredjedel af korpuset er kode der ikke er sårbar, det meste af det den rettede form af et tilfælde der er. Et korpus af sårbarheder alene kan ikke afsløre en falsk positiv, og falske positiver er det der får et sikkerhedsværktøj til at holde op med at blive læst.

Hvad benchmarket ikke måler

Cybseco leverer disse. Intet tal på benchmark-siden beskriver dem, og hvert af dem bærer sin begrundelse. En kapabilitet der udelades i stilhed er en kapabilitet som læseren antager tallene dækkede.

  • 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.

Hvorfor nogle kapabiliteter ikke er en procentdel

Detektion har et rigtigt svar: sårbarheden er på den linje, eller den er det ikke. Noget af det Cybseco gør fremsætter en anden slags påstand, og præcision og recall kan ikke udtrykke den. At offentliggøre et tal alligevel ville være det letteste på denne side at gøre, og den hurtigste måde at tabe diskussionen med en der læser omhyggeligt.

Arkitekturgrafen
En faktuel påstand: disse aktiver findes, og disse relationer gælder mellem dem. Målbar, og det første vi har til hensigt at måle. Det kræver et korpus af komplette repositories annoteret i hånden, to uafhængige bedømmere, og enigheden mellem dem offentliggjort ved siden af scoren. Noget mindre måler annoteringsprocessen snarere end ekstraktoren.
Angrebsstier
Faktuelle, men først når nogen angiver hvad angriberen starter med. »En angriber kan nå databasen« er hverken sandt eller falsk før du siger om de begynder som en anonym besøgende, en autentificeret bruger eller en kompromitteret build-runner. Den samme motor har ret under én antagelse og uret under en anden, så et tal uden den antagelse trykt ved siden af er ikke reproducerbart.
Kontekstuel prioritering
En påstand om hvad der betyder mere, og der findes intet faktum om sagen uafhængigt af et mål. En startup før omsætning og en reguleret bank læser det samme repository og har begge ret i at rangere det forskelligt. Enhver korrekt rækkefølge vi offentliggjorde ville være vores egen produktholdning, valideret mod en ground truth vi også selv skrev.
Beslutningsmotoren
Handl nu, planlæg, verificér: en anbefaling op mod en politik, og politikken er en produktbeslutning. Vi kan teste at den følger sin egen politik, at intet fund droppes i stilhed, og at hver anbefaling citerer evidens der findes. Det er en konformitetstest. At kalde det nøjagtighed ville indbyde til præcis den fejllæsning denne side er skrevet for at forhindre.

Sådan læses tallene

Fire ting det er værd at vide, før du drager en konklusion ud fra et enkelt tal på benchmark-siden.

Stikprøvestørrelse før procentdel
Hvert lag viser hvor mange fund dets præcision blev beregnet ud fra. Lagene med små stikprøver er de nyligt tilføjede, og deres tal vil flytte sig efterhånden som deres korpus vokser. Dette taler imod de smigrende rækker lige så meget som den akavede: en perfekt score over ni fund er en svag påstand, ikke en stærk.
Hver falsk positiv offentliggøres
Fund som motoren producerer på kode der ikke er sårbar er anført med den ansvarlige analysator og grunden til at fundet er forkert. De tælles med imod præcisionen, aldrig udeladt fra den. Tre af dem udløses på den afhjælpning som reglen selv anbefaler, hvilket er præcis den slags defekt et benchmark findes for at bringe frem snarere end at absorbere.
LLM-laget analyserer din kode
Det læser en applikations egen integrationskode for LLM- og agentfejl: modeloutput der når en shell, en legitimationsoplysning placeret i en prompt, et agentværktøj der kan køre hvad som helst. Det er ikke et mål for en AI inde i Cybseco. Dette benchmark kører den deterministiske motor uden nogen model i løkken.
Kendte huller navngives
En sårbarhed der er reel og uden for motorens nuværende rækkevidde registreres som et accepteret hul, udelades fra recall og anføres. At registrere en begrænsning er måden hvorpå en fremtidig forbedring viser sig som en målt gevinst i stedet for at blive hævdet i dag.

De regler vi holder os selv til

Dette er begrænsninger på os, ikke påstande om produktet. De er det der gør tallene værd at læse.

  • Alt hvad Cybseco annoncerer er enten målt eller navngivet på denne side som uden for omfang. Der findes ingen tredje tilstand, og en automatiseret gate fejler bygningen når en analysator leveres uden det ene eller det andet.
  • Ground truth beskriver koden, besluttet før motoren kører. En mærkning skrevet for at matche motorens output er ikke evidens.
  • Et tal offentliggøres sammen med den stikprøve det blev beregnet ud fra.
  • En defekt vi kender til offentliggøres, ikke udelades fra metrikken. En gate fejler også når en offentliggjort defekt stille holder op med at reproducere, så listen kan kun skrumpe ærligt.
  • Ingen sammenligning med et andet produkt på kapabiliteter hvor vi ville vælge deres konfiguration, deres korpus og scenariet. Ingen bør tro på en sådan sammenligning, heller ikke os.
  • Intet tal før dets metodologi er offentlig og dets ground truth kan inspiceres.

Se Cybseco ræsonnere om et virkeligt system

Se den interaktive demo, og anmod derefter om en guidet prøveperiode til dit team.