Benchmarkmethodologie

Wat we meten, wat we niet meten, en waarom

De benchmark bestaat om gecontroleerd te worden, niet om bewonderd te worden. Deze pagina benoemt de exacte reikwijdte: wat de gepubliceerde cijfers dekken, wat ze bewust weglaten, en welke van onze mogelijkheden niet eerlijk tot een percentage te herleiden zijn.

Wat de benchmark meet

Eén vraag, gesteld over een geversioneerd corpus van met de hand beoordeelde projecten: rapporteert de engine bij een bestand waarover wij al beslist hebben de kwetsbaarheid die er is, op de juiste regel, zonder dingen te melden die er niet zijn?

Een geversioneerd corpus
Elk geval is een klein project met de kleinst mogelijke code die één kwetsbaarheid vertoont of veilig vermijdt. Elk draagt een commentaar dat zegt wat er mis is, wat er verwacht wordt en waarom. Het corpus is geversioneerd: het wijzigen ervan is het wijzigen van de gepubliceerde cijfers.
Referentiewaarheid geschreven over de code
Het verwachte resultaat is een oordeel over de code, genomen voordat de engine draait, nooit een beschrijving van wat de engine produceerde. Wanneer die twee van elkaar afwijken, onderzoeken we eerst de engine. Een label dat geschreven is om bij de engine-uitvoer te passen meet niets, en we hebben al labels moeten corrigeren die die kant op waren gedreven.
De pijplijn die geleverd wordt
Elk geval wordt geanalyseerd zoals een klantscan draait: de volledige orchestrator op maximale diepte, geen externe scanners, geen model in de lus. De cijfers beschrijven de engine die overal identiek geleverd wordt, niet een laboratoriumconfiguratie die voor de gelegenheid is samengesteld.
Correcte code, met opzet
Een derde van het corpus is niet-kwetsbare code, grotendeels de gecorrigeerde vorm van een geval dat dat wel is. Een corpus dat alleen uit kwetsbaarheden bestaat kan geen valse positieven opsporen, en valse positieven zijn precies waardoor een beveiligingstool niet meer gelezen wordt.

Wat de benchmark niet meet

Cybseco levert deze. Geen enkel cijfer op de benchmarkpagina beschrijft ze, en elk draagt zijn reden. Een stilzwijgend weggelaten mogelijkheid is een mogelijkheid waarvan een lezer aanneemt dat de cijfers haar dekten.

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

Waarom sommige mogelijkheden geen percentage zijn

Detectie heeft een goed antwoord: de kwetsbaarheid staat op die regel of niet. Een deel van wat Cybseco doet maakt een claim van een andere aard, en precisie en recall kunnen die niet uitdrukken. Toch een cijfer publiceren zou het eenvoudigste op deze pagina zijn en de snelste manier om de discussie te verliezen met iemand die aandachtig leest.

De architectuurgraaf
Een feitelijke bewering: deze assets bestaan en deze relaties gelden ertussen. Meetbaar, en het eerste wat we willen meten. Het vraagt een corpus van volledige, met de hand geannoteerde repositories, twee onafhankelijke beoordelaars en de overeenstemming tussen hen gepubliceerd naast de score. Iets minder meet het annotatieproces in plaats van de extractor.
Aanvalspaden
Feitelijk, maar pas zodra iemand aangeeft waarmee de aanvaller begint. „Een aanvaller kan de database bereiken” is noch waar noch onwaar zolang niet gezegd wordt of die begint als anonieme bezoeker, als geauthenticeerde gebruiker of als gecompromitteerde build-runner. Dezelfde engine heeft gelijk onder de ene aanname en ongelijk onder de andere, dus een cijfer zonder die aanname ernaast afgedrukt is niet reproduceerbaar.
Contextuele prioritering
Een bewering over wat zwaarder weegt, en daarover bestaat geen feit los van een doelstelling. Een startup zonder omzet en een gereguleerde bank lezen dezelfde repository en hebben allebei gelijk om haar anders te ordenen. Elke „juiste” volgorde die wij publiceerden zou onze eigen productmening zijn, gevalideerd tegen een referentiewaarheid die wij ook zelf geschreven hadden.
De beslissingsengine
Nu handelen, plannen, verifiëren: een aanbeveling tegenover een beleid, en dat beleid is een productbeslissing. We kunnen testen dat zij haar eigen beleid volgt, dat geen bevinding stilzwijgend wegvalt en dat elke aanbeveling naar bestaand bewijs verwijst. Dat is een conformiteitstest. Die nauwkeurigheid noemen zou precies uitnodigen tot de verkeerde lezing die deze pagina wil voorkomen.

Hoe de cijfers te lezen

Vier dingen die de moeite waard zijn om te weten voordat u een conclusie trekt uit één enkel cijfer op de benchmarkpagina.

Steekproefomvang vóór percentage
Elke laag toont uit hoeveel bevindingen haar precisie is berekend. De lagen met kleine steekproeven zijn de recent toegevoegde, en hun cijfers zullen bewegen naarmate hun corpus groeit. Dit werkt evenzeer tegen de vleiende regels als tegen de ongemakkelijke: een perfecte score over negen bevindingen is een zwakke bewering, geen sterke.
Elke valse positief wordt gepubliceerd
Bevindingen die de engine op niet-kwetsbare code produceert staan vermeld met de verantwoordelijke analyzer en de reden waarom de bevinding onjuist is. Ze tellen mee tegen de precisie en worden er nooit uit weggelaten. Drie ervan vuren op de mitigatie die de regel zelf aanbeveelt, precies het soort defect dat een benchmark bestaat om zichtbaar te maken in plaats van te absorberen.
De LLM-laag analyseert uw code
Zij leest de eigen integratiecode van een applicatie op LLM- en agentfouten: modeluitvoer die een shell bereikt, een credential in een prompt, een agenttool die alles kan uitvoeren. Het is geen maat voor AI binnen Cybseco. Deze benchmark draait de deterministische engine zonder model in de lus.
Bekende hiaten worden benoemd
Een kwetsbaarheid die echt is en buiten het huidige bereik van de engine valt, wordt geregistreerd als aanvaard hiaat, uitgesloten van recall en vermeld. Een grens vastleggen is de manier waarop een toekomstige verbetering zich aandient als gemeten winst in plaats van vandaag te worden geclaimd.

De regels waaraan wij ons houden

Dit zijn beperkingen voor onszelf, geen beweringen over het product. Zij maken de cijfers het lezen waard.

  • Alles wat Cybseco aankondigt is ofwel gemeten ofwel op deze pagina benoemd als buiten de reikwijdte. Een derde toestand bestaat niet, en een automatische controle laat de build falen wanneer een analyzer zonder een van beide wordt geleverd.
  • De referentiewaarheid beschrijft de code en wordt vastgesteld voordat de engine draait. Een label dat geschreven is om bij de engine-uitvoer te passen is geen bewijs.
  • Een cijfer wordt gepubliceerd met de steekproef waaruit het is berekend.
  • Een defect dat wij kennen wordt gepubliceerd, niet uitgesloten van de metriek. Een controle faalt ook wanneer een gepubliceerd defect stilzwijgend niet meer reproduceerbaar is, zodat de lijst alleen eerlijk kan krimpen.
  • Geen vergelijking met een ander product op mogelijkheden waarbij wij hun configuratie, hun corpus en het scenario zouden kiezen. Zo'n vergelijking zou niemand moeten geloven, wijzelf incluis.
  • Geen cijfer voordat de methodologie ervan openbaar en de referentiewaarheid ervan inspecteerbaar is.

Zie Cybseco redeneren over een echt systeem

Bekijk de interactieve demo en vraag daarna een begeleide proef aan voor uw team.