Benchmarkmetodik

Vad vi mäter, vad vi inte mäter, och varför

Benchmarket finns för att granskas, inte beundras. Den här sidan anger dess exakta perimeter: vad de publicerade siffrorna täcker, vad de medvetet utelämnar, och vilka av våra förmågor som inte ärligt kan reduceras till en procentsats.

Vad benchmarket mäter

En fråga, ställd över ett versionshanterat korpus av handbedömda projekt: givet en fil som vi redan har tagit ställning till, rapporterar motorn den sårbarhet som finns där, på rätt rad, utan att rapportera saker som inte finns?

Ett versionshanterat korpus
Varje fall är ett litet projekt som innehåller den minsta kod som uppvisar, eller säkert undviker, en sårbarhet. Varje bär en kommentar som säger vad som är fel, vad som förväntas och varför. Korpuset är versionshanterat: en ändring i det är en ändring i de publicerade siffrorna.
Ground truth skriven om koden
Det förväntade resultatet är en bedömning av koden, beslutad innan motorn körs, aldrig en beskrivning av vad motorn producerade. När de två är oense undersöker vi motorn först. En etikett skriven för att matcha motorns utdata mäter ingenting, och vi har fått korrigera etiketter som hade drivit åt det hållet.
Den pipeline som levereras
Varje fall analyseras så som en kundskanning körs: den fullständiga orkestratorn på maximalt djup, inga externa skannrar, ingen modell i loopen. Siffrorna beskriver motorn som levereras identiskt överallt, inte en laboratoriekonfiguration hopsatt för tillfället.
Korrekt kod, avsiktligt
En tredjedel av korpuset är kod som inte är sårbar, merparten av den den korrigerade formen av ett fall som är det. Ett korpus av enbart sårbarheter kan inte upptäcka en falsk positiv, och falska positiva är det som får ett säkerhetsverktyg att sluta läsas.

Vad benchmarket inte mäter

Cybseco levererar dessa. Ingen siffra på benchmarksidan beskriver dem, och var och en bär sitt skäl. En förmåga som utelämnas i tysthet är en förmåga som läsaren antar att siffrorna täckte.

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

Varför vissa förmågor inte är en procentsats

Detektion har ett rätt svar: sårbarheten finns på den raden eller inte. En del av det Cybseco gör gör ett annat slags påstående, och precision och recall kan inte uttrycka det. Att ändå publicera en siffra vore det lättaste på den här sidan att göra, och det snabbaste sättet att förlora diskussionen med någon som läser noggrant.

Arkitekturgrafen
Ett faktapåstående: dessa tillgångar finns och dessa relationer gäller mellan dem. Mätbart, och det första vi avser att mäta. Det kräver ett korpus av kompletta repositorier annoterade för hand, två oberoende granskare, och överensstämmelsen mellan dem publicerad bredvid poängen. Något mindre mäter annoteringsprocessen snarare än extraktorn.
Attackvägar
Faktiska, men först när någon anger vad angriparen startar med. ”En angripare kan nå databasen” är varken sant eller falskt förrän du säger om de börjar som en anonym besökare, en autentiserad användare eller en komprometterad build-runner. Samma motor har rätt under ett antagande och fel under ett annat, så en siffra utan det antagandet tryckt bredvid är inte reproducerbar.
Kontextuell prioritering
Ett påstående om vad som betyder mer, och det finns inget sakförhållande oberoende av ett mål. En startup före intäkter och en reglerad bank läser samma repositorium och har båda rätt i att rangordna det olika. Varje korrekt ordning vi publicerade skulle vara vår egen produktåsikt, validerad mot en ground truth som vi också skrev.
Beslutsmotorn
Agera nu, planera, verifiera: en rekommendation mot en policy, och policyn är ett produktbeslut. Vi kan testa att den följer sin egen policy, att inget fynd tyst förkastas, och att varje rekommendation hänvisar till bevis som finns. Det är ett konformitetstest. Att kalla det noggrannhet vore att bjuda in exakt den misstolkning som den här sidan är skriven för att förhindra.

Hur siffrorna ska läsas

Fyra saker värda att veta innan du drar en slutsats av någon enskild siffra på benchmarksidan.

Urvalsstorlek före procentsats
Varje lager visar från hur många fynd dess precision beräknades. Lagren med små urval är de nyligen tillagda, och deras siffror kommer att röra sig när deras korpus växer. Detta talar emot de smickrande raderna lika mycket som den besvärliga: ett perfekt resultat över nio fynd är ett svagt påstående, inte ett starkt.
Varje falsk positiv publiceras
Fynd som motorn producerar på kod som inte är sårbar listas med den felande analysatorn och skälet till att fyndet är fel. De räknas mot precisionen, de undantas aldrig från den. Tre av dem utlöses på den åtgärd som regeln själv rekommenderar, vilket är precis den sortens defekt som ett benchmark finns till för att blottlägga snarare än att absorbera.
LLM-lagret analyserar din kod
Det läser en applikations egen integrationskod efter LLM- och agentmisstag: modellutdata som når ett skal, en autentiseringsuppgift placerad i en prompt, ett agentverktyg som kan köra vad som helst. Det är inte ett mått på en AI inuti Cybseco. Detta benchmark kör den deterministiska motorn utan någon modell i loopen.
Kända luckor namnges
En sårbarhet som är verklig och utanför motorns nuvarande räckvidd registreras som en accepterad lucka, utesluts från recall och listas. Att registrera en gräns är hur en framtida förbättring visar sig som en mätt vinst i stället för att påstås idag.

Reglerna vi håller oss till

Detta är begränsningar på oss, inte påståenden om produkten. De är det som gör siffrorna värda att läsa.

  • Allt som Cybseco annonserar är antingen mätt eller namngivet på den här sidan som utanför omfattningen. Det finns inget tredje tillstånd, och en automatiserad grind får bygget att misslyckas när en analysator levereras utan det ena eller det andra.
  • Ground truth beskriver koden, beslutad innan motorn körs. En etikett skriven för att matcha motorns utdata är inte bevis.
  • En siffra publiceras tillsammans med det urval den beräknades från.
  • En defekt vi känner till publiceras, den utesluts inte från måttet. En grind misslyckas också när en publicerad defekt tyst slutar reproduceras, så listan kan bara krympa ärligt.
  • Ingen jämförelse mot en annan produkt på förmågor där vi skulle välja deras konfiguration, deras korpus och scenariot. Ingen bör tro på en sådan jämförelse, inte heller vi.
  • Ingen siffra innan dess metodik är offentlig och dess ground truth går att granska.

Se Cybseco resonera om ett verkligt system

Se den interaktiva demon och begär sedan en guidad provperiod för ditt team.