Matavimo metodika

Ką matuojame, ko ne, ir kodėl

Matavimas egzistuoja tam, kad būtų patikrintas, o ne kad juo būtų žavimasi. Šis puslapis nurodo tikslų jo perimetrą: ką apima paskelbti skaičiai, ką jie sąmoningai palieka nuošalyje ir kurių mūsų gebėjimų sąžiningai negalima suvesti į procentą.

Ką matuoja matavimas

Vienas klausimas, užduotas versijuojamam rankomis įvertintų projektų korpusui: turint failą, dėl kurio jau apsisprendėme, ar variklis praneša ten esantį pažeidžiamumą teisingoje eilutėje, nepranešdamas dalykų, kurių nėra?

Versijuojamas korpusas
Kiekvienas atvejis yra mažas projektas, turintis mažiausią kodą, kuris parodo arba saugiai išvengia vieno pažeidžiamumo. Kiekvienas turi komentarą, kuriame nurodoma, kas negerai, ko tikimasi ir kodėl. Korpusas yra versijuojamas: jo pakeitimas yra paskelbtų skaičių pakeitimas.
Etaloninė tiesa, parašyta apie kodą
Laukiamas rezultatas yra sprendimas apie kodą, priimtas dar prieš paleidžiant variklį, niekada ne aprašymas to, ką variklis pateikė. Kai šie du nesutampa, pirmiausia tiriame variklį. Žyma, parašyta taip, kad atitiktų variklio išvestį, nematuoja nieko, ir mums teko taisyti žymas, nukrypusias ta linkme.
Konvejeris, kuris tiekiamas
Kiekvienas atvejis analizuojamas taip, kaip vyksta kliento skenavimas: pilnas orkestruotojas didžiausiu gyliu, jokių išorinių skaitytuvų, jokio modelio cikle. Skaičiai aprašo variklį, kuris visur pristatomas identiškas, o ne progai sudėliotą laboratorinę konfigūraciją.
Teisingas kodas, sąmoningai
Trečdalis korpuso yra kodas, kuris nėra pažeidžiamas, didžiąja dalimi pataisyta pažeidžiamo atvejo forma. Vien iš pažeidžiamumų sudarytas korpusas negali aptikti klaidingai teigiamo, o būtent klaidingai teigiami lemia, kad saugumo įrankis nustojamas skaityti.

Ko matavimas nematuoja

Cybseco juos tiekia. Nė vienas skaičius matavimo puslapyje jų neaprašo, ir kiekvienas turi savo priežastį. Tyliai praleistas gebėjimas yra gebėjimas, kurį skaitytojas laiko skaičių apimtu.

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

Kodėl kai kurie gebėjimai nėra procentas

Aptikimas turi teisingą atsakymą: pažeidžiamumas toje eilutėje yra arba jo nėra. Dalis to, ką Cybseco daro, kelia kitokio pobūdžio teiginį, ir preciziškumas bei atkūrimas jo išreikšti negali. Vis tiek paskelbti skaičių būtų lengviausia šiame puslapyje ir greičiausias būdas pralaimėti ginčą su tuo, kas skaito atidžiai.

Architektūros grafas
Faktinis teiginys: šie ištekliai egzistuoja ir tarp jų galioja šie ryšiai. Išmatuojama, ir tai pirmas dalykas, kurį ketiname išmatuoti. Tam reikia ištisų rankomis anotuotų saugyklų korpuso, dviejų nepriklausomų vertintojų ir jų tarpusavio sutarimo, paskelbto šalia įverčio. Bet kas mažesnio matuoja anotavimo procesą, o ne ekstraktorių.
Atakos keliai
Faktiniai, bet tik tada, kai kas nors nurodo, su kuo užpuolikas pradeda. „Užpuolikas gali pasiekti duomenų bazę“ nėra nei tiesa, nei netiesa, kol nepasakoma, ar jis pradeda kaip anoniminis lankytojas, autentifikuotas naudotojas, ar pažeistas kūrimo vykdytojas. Tas pats variklis teisus esant vienai prielaidai ir klysta esant kitai, tad skaičius be šalia atspausdintos prielaidos nėra atkartojamas.
Kontekstinis prioritetų nustatymas
Teiginys apie tai, kas svarbiau, o fakto apie tai, nepriklausomo nuo tikslo, nėra. Pajamų dar neturintis startuolis ir reguliuojamas bankas skaito tą pačią saugyklą ir abu teisūs ją reitinguodami skirtingai. Bet kokia teisinga tvarka, kurią paskelbtume, būtų mūsų pačių produkto nuomonė, patvirtinta pagal etaloninę tiesą, kurią taip pat parašėme mes.
Sprendimų variklis
Veik dabar, planuok, patikrink: rekomendacija pagal politiką, o politika yra produkto sprendimas. Galime patikrinti, ar jis laikosi savo paties politikos, ar nė vienas radinys tyliai nedingsta ir ar kiekviena rekomendacija remiasi egzistuojančiu įrodymu. Tai atitikties testas. Vadinti tai tikslumu reikštų pakviesti būtent tą klaidingą skaitymą, kuriam užkirsti šis puslapis ir parašytas.

Kaip skaityti skaičius

Keturi dalykai, kuriuos verta žinoti prieš darant išvadą iš bet kurio pavienio skaičiaus matavimo puslapyje.

Imties dydis prieš procentą
Kiekvienas sluoksnis rodo, iš kiek radinių buvo apskaičiuotas jo preciziškumas. Mažų imčių sluoksniai yra neseniai pridėti, ir jų skaičiai judės augant jų korpusui. Tai kalba prieš glostančias eilutes lygiai taip pat, kaip ir prieš nemalonią: tobulas rezultatas iš devynių radinių yra silpnas teiginys, ne stiprus.
Kiekvienas klaidingai teigiamas skelbiamas
Radiniai, kuriuos variklis pateikia kode, kuris nėra pažeidžiamas, išvardyti kartu su suklydusiu analizatoriumi ir priežastimi, kodėl radinys klaidingas. Jie skaičiuojami prieš preciziškumą, niekada nepašalinami iš jo. Trys iš jų suveikia būtent ties ta priemone, kurią rekomenduoja pati taisyklė, o tai kaip tik toks defektas, kuriam iškelti, o ne sugerti, matavimas ir egzistuoja.
LLM sluoksnis analizuoja jūsų kodą
Jis skaito pačios programos integracijos kodą ieškodamas LLM ir agentų klaidų: modelio išvestis, pasiekianti komandų apvalkalą, prisijungimo duomenys, įdėti į užklausą, agento įrankis, galintis paleisti bet ką. Tai nėra Cybseco viduje esančio dirbtinio intelekto matas. Šis matavimas paleidžia deterministinį variklį be modelio cikle.
Žinomos spragos įvardijamos
Pažeidžiamumas, kuris yra tikras ir už dabartinės variklio aprėpties, įrašomas kaip priimta spraga, pašalinamas iš atkūrimo ir išvardijamas. Ribos užfiksavimas yra būdas, kuriuo būsimas patobulinimas pasirodo kaip išmatuotas laimėjimas, užuot buvęs teigiamas šiandien.

Taisyklės, kurių laikomės patys

Tai apribojimai mums, o ne teiginiai apie produktą. Būtent jie daro skaičius vertus skaitymo.

  • Viskas, ką Cybseco paskelbia, yra arba išmatuota, arba šiame puslapyje įvardyta kaip esanti už aprėpties. Trečios būsenos nėra, o automatinis vartas nutraukia kūrimą, kai analizatorius pateikiamas be vieno ar kito.
  • Etaloninė tiesa aprašo kodą ir nustatoma prieš paleidžiant variklį. Žyma, parašyta taip, kad atitiktų variklio išvestį, nėra įrodymas.
  • Skaičius skelbiamas kartu su imtimi, iš kurios buvo apskaičiuotas.
  • Mums žinomas defektas skelbiamas, o ne pašalinamas iš rodiklio. Vartas taip pat neįleidžia, kai paskelbtas defektas tyliai nustoja atsikartoti, todėl sąrašas gali trumpėti tik sąžiningai.
  • Jokio palyginimo su kitu produktu tose srityse, kur mes patys rinktume jų konfigūraciją, jų korpusą ir scenarijų. Tokiu palyginimu neturėtų tikėti niekas, įskaitant mus.
  • Jokio skaičiaus, kol jo metodika netapo vieša, o etaloninė tiesa patikrinama.

Pamatykite, kaip Cybseco analizuoja realią sistemą

Peržiūrėkite interaktyvią demonstraciją, tada paprašykite vadovaujamo bandomojo laikotarpio savo komandai.