# Ett fynd är ingen dom

> AI kan numera generera tusentals sårbarhetsfynd på en eftermiddag. Ett fynd är ett vittne, inte en dom — och det enda fält ingen kan kontrollera är det alla blåser upp. Så läser man floden utan att drunkna i den.

Source: https://counterproof.io/sv/notes/ett-fynd-ar-ingen-dom/ · Published 25 August 2026 · CounterProof är en verksamhet inom Clavestra Capital Limited (Malta, C 113987).


Under ungefär 108 timmar maskintid i augusti 2026 körde en enda volontärkampanj en modell med
öppna vikter genom 501 open source-projekt i Bitcoin-ekosystemet och loggade **7 958 potentiella
säkerhetsfynd, varav 1 280 klassade som höga eller kritiska**. Vi skrev om den kampanjen — och
förordningen den kolliderar med — i
[*Maskinerna läser koden*](https://counterproof.io/sv/notes/maskinerna-laser-koden/). Denna anteckning handlar om själva
siffran.

För en säkerhetsleverantör har publicerat ett riktmärke som ställer tre AI-kodgranskningssystem
mot en privat testapplikation: ett hittade 68 av 89 utplanterade sårbarheter, ett annat 60, ett
tredje 58. Leverantörerna konkurrerar nu om det förhållandet — fler fynd, till lägre kostnad. Att
hitta har blivit en handelsvara i ett priskrig.

Så det är värt att säga rakt ut vad ett fynd egentligen är — för räkningen mäter fel sak.

## Ett fynd är ett vittne, inte en dom

Textvetenskapen avgjorde detta för fem sekler sedan, och dess ord är exakt.

När en antik text överlever i många handkopierade manuskript *är* ingen enskild kopia texten. Var
och en är ett **vittne**: ett härlett dokument som bär originalet — plus skrivarens felskrivningar,
vanor och ärvda glidningar. Att tre manuskript stämmer överens kan betyda att läsarten är äkta —
eller att alla tre härstammar från samma felaktiga förlaga. Disciplinen som reder ut detta
producerar en **textkritisk utgåva**: texten så gott den kan fastställas, med en apparat under som
bokför varje vägt vittne, varje variant, varje redaktionellt avgörande och dess skäl.

Ett AI-genererat sårbarhetsfynd är ett vittne i exakt den meningen. Det är inte defekten. Det är
en modells *rapport* om en defekt — kodens verkliga egenskaper blandade med modellens vanor, dess
träningshärkomst och prompten som producerade den. Att två skannrar stämmer överens kan betyda
att buggen är verklig — eller att båda delar samma blinda fläckar och samma mallar. Tränade på i
stort sett samma offentliga korpus gör de ofta det. Samstämmighet mellan korrelerade vittnen är
belägg om vittnena, inte om koden.

Och textvetarnas mest mödosamt vunna regel överförs intakt: den *flytande* läsarten är den
misstänkta. Skrivare slätar ut ett svårt ställe till en bekväm klyscha, och den släta versionen
är oftare kopistens förbättring än författarens ord. En sårbarhetsrapport har en fast genre:
titel, svaghetsklass, allvarlighetsgrad, en hänvisning, ett stycke ”en angripare skulle kunna…”.
En språkmodell producerar den formen övertygande — **vare sig defekten finns eller inte**.
Poleringen bär ingen information om sanningen. I denna genre är flyt ingen merit. Det är det som
ska kontrolleras.

Därför är räkningen fel enhet. Den räknar vittnen och rapporterar dem som domar.

## Allvarlighetsgraden är där rapporterna överdriver

Inflationen är inte jämnt fördelad. Den koncentreras till en punkt, av ett strukturellt skäl värt
att namnge.

*”Den här funktionen jämför en tidsstämpel i millisekunder med en kolumn i sekundupplösning”* är
ett påstående som hänvisar till något — en fil, en rad, en commit. Man kan öppna det och avgöra
det på en minut. **”Kritisk”** hänvisar till ingenting. Det finns ingen kodrad där det står
*Kritisk*. Allvarlighetsgrad är ett omdöme om nåbarhet, utnyttjbarhet och sprängradie — och
eftersom den saknar ankare i källkoden är den exakt platsen där en flytande generator driver
uppåt utan motstånd. Den dramatiska läsarten är den lättare; varje incitament i rapportkedjan
belönar den större siffran; och inget i artefakten gör motstånd.

Så när en kampanj rapporterar 1 280 fynd ”höga eller kritiska” är den ärliga läsningen: 1 280
fynd som en generator *etiketterat* så. Etiketten är dokumentets minst kontrollerbara fält — och
det är den som gör grovjobbet i rubriken.

## Är de utnyttjbara? Ingen har sagt det ännu

Mellan ett fynd och en defekt ligger ett steg som räkningen hoppar över: **prövningen** — att
avgöra vilka fynd som är verkliga, vilka som är nåbara, vilka som spelar roll. Det steget är
fortfarande mänskligt, och det skalar inte med genereringen.

Den tydligaste offentliga mätningen av vad som händer när det hoppas över kommer från curl. Dess
sjumanna volontärsäkerhetsteam såg andelen *bekräftade* sårbarhetsrapporter falla från över 15 %
till under 5 % när AI-assisterade inlämningar började anlända — varje grundlös rapport kostade
fortfarande timmar att vederlägga. En kom komplett med GDB-sessioner och registerdumpar för en
HTTP/3-exploit i en funktion som inte finns i curl. Underhållaren beskrev triagebördan som
”liktydig med en DDoS” (”tantamount to a DDoS”), och till slut stängde projektet sitt
bug bounty-program — med beskedet att det inte sett en enda giltig säkerhetsrapport producerad
med AI-hjälp.

Läs den siffran åt rätt håll. Den bevisar inte att AI-fynd är värdelösa — den bevisar att **ett
fynds flyt och dess giltighet är oberoende av varandra**, och att signal-brusförhållandet
kollapsar när prövningssteget tas bort. Rapporterna blev fler och mer självsäkra; andelen som
överlevde kontroll gick *ned*.

## Floden är ett säkerhetsproblem, inte ett irritationsmoment

Det är frestande att sortera ”för många fynd” under besvär. Det vore fel. När genereringen
springer ifrån prövningen försvinner inte det verkliga fyndet — det begravs i kön bakom tvåhundra
plausibla, och en kö ingen kan beta av är en kö som gömmer saker. curls ord — DDoS — är rätt
register. Ett team som drunknar i självsäkra rapporter är inte säkrare än ett team utan
rapporter; det är ett team vars uppmärksamhet förbrukats på vittnen som aldrig korsförhördes.

## Håll isär de två larmen

Två påståenden blandas ihop här, och att skilja dem åt är hela disciplinen.

**I aggregatet är faran verklig.** Det finns genuint enorma mängder orättade defekter i gammal
kod, och en billig, outtröttlig letare kommer att lyfta fram några av dem. Att avfärda hela
kategorin som hajp är fel.

**Per fynd är den angivna kritikaliteten systematiskt överdriven** — uppåt, eftersom det enda
fält ingen kan kontrollera är det alla blåser upp. Att behandla varje larm som en dom är också
fel — åt andra hållet.

Felet är att besvara den enas fråga med den andras larm. ”Många verkliga buggar finns någonstans
i detta ekosystem” gör inte *detta* fynd på *er* rad utnyttjbart. Och ”de flesta av just dessa
larm är brus” betyder inte att er kodbas är ren.

## Vad som ser igenom det

Den medeltida utgivaren kunde inte sanera hela traditionen. Vad han kunde göra: fästa villkor vid
varje läsart och göra villkoren explicita. Samma drag fungerar här. När någon räcker er ett fynd,
fråga:

1. **Vilket evidenssteg når det faktiskt?** Spårat i källkoden, kompilerat, testat eller
   reproducerat i körning — det är inte samma påstående. Ett fynd bör aldrig bära en högre
   visshet än arbetet bakom det.
2. **Är det nåbart i er build, eller nåbart i princip?** Allvarlighetsgrad utan nåbarhetsargument
   är en sinnesstämning, inte en mätning.
3. **Prövades det, eller medelvärdesbildades det?** Att tre verktyg stämmer överens är inte tre
   bekräftelser om verktygen delar en blind fläck. Ett minoritetsfynd är värt en billig
   orakelkontroll — kör testet, läs specifikationen, exekvera vägen — inte en omröstning.
4. **Är det redan åtgärdat, eller redan känt?** Ett fynd som underhållarna stängde förra månaden
   är ett vittne om historien, inte om er risk.

Inget av det är exotiskt. Det är vad en textkritisk utgåva gör med en hög manuskript: kollationera
vittnena, pröva dem mot belägg starkare än ännu en åsikt, och behålla apparaten — omdömena,
osäkerheten, läsarterna som övervägdes och förkastades.

## Alla döda fynd dog inte samma död

De flesta fynd överlever inte. Det är normalt, och det är poängen — men *hur* ett fynd dog är
information, och en granskning som tippar alla i en och samma låda märkt ”avfärdade” har kastat
bort den informationen.

Textvetenskapen skiljer på fallen, och distinktionen är gammal nog att ha ett namn. Ett manuskript
som visats vara kopierat från ett annat bevarat manuskript stryks helt ur räkningen — *eliminatio
codicum descriptorum* — inte för att det är fel, utan för att det inte tillför något oberoende
vittnesmål. Dess samstämmighet var aldrig belägg.

Tre dödssätt, och de betyder inte samma sak:

- **Redundant.** Flera verktyg producerade samma fynd. Där verktygen inte är oberoende — och
  eftersom de delar träningsdata och mallar är de det ofta inte — är deras samstämmighet en
  läsart i tre kopior snarare än tre bekräftelser, och att räkna den tre gånger är så falsk
  trygghet tillverkas. Stryk dubbletterna, men bokför oberoendeantagandet i stället för att anta
  bort det: samstämmighet mellan genuint oberoende granskare är inte ingenting.
- **Falskt.** Fyndet säger att koden gör något som koden inte gör. Avgörs genom att öppna filen.
  Det är den enda kategori de flesta har i åtanke när de säger ”falskt positivt”.
- **Sant, men om en text som inte längre finns.** Fyndet är korrekt — om en revision som sedan
  dess rättats. Vittnet är ärligt; koden rörde sig under det. En defekt som stängts vid en fäst
  uppströmsrevision är inte ett falskt positivt för den revisionen och bör inte bokföras som ett.
  Det gäller bara om fyndet säger vilken revision det läste: en rapport som inte kan namnge sin
  revision är inget ärligt vittne om en passerad text — det är ett förlegat påstående om den
  nuvarande.

Bara det andra är ett fel i själva läsarten; det ofästa fallet av det tredje är ett fel i kedjan
som rapporterade det. Ett protokoll som säger vilken död varje fynd dog kan revideras av någon
som inte var där. Ett förhållande — ”vi triagerade tvåhundra fynd ned till sex” — kan det inte,
och det är inte heller en kvalitetssignal: en lat kedja når det förhållandet genom att generera
skräp och kasta det. **Elimineringen är inte produkten. Beläggen bakom de överlevande är det.**

## Vad en utgåva är till för

Skälet att bygga en utgåva i stället för en lista är att någon måste nå en dom, och det blir inte
granskaren.

En underhållare avgör om det ska patchas. En tillverkare avgör vad som går in i den tekniska
dokumentationen. En företagskunds säkerhetsteam avgör om de skriver under. Var och en av dem når
en dom, och var och en kommer senare att ombes — av någon mindre vänlig, med mer tid — att visa
hur den nåddes. Vad de behöver från en granskare är inte ännu en åsikt att väga. Det är beläggen,
ordnade så att deras eget beslut överlever frågandet.

I Europa håller detta på att bli lagkrav snarare än god sed. Cyberresiliensförordningen kräver
att tillverkare *”tillämpa[r] effektiva och regelbundna provningar och granskningar av säkerheten
hos produkten med digitala element”* (bilaga I del II punkt 3), och den tekniska dokumentationen
måste innehålla *”rapporter om de provningar som utförts för att kontrollera”* överensstämmelsen
(bilaga VII punkt 6) — bevarade i minst tio år efter utsläppandet på marknaden, eller under
stödperioden om den är längre (artikel 13.13). Artikel 14-rapporteringen av aktivt utnyttjade
sårbarheter och allvarliga incidenter börjar den 11 september 2026; förordningen tillämpas fullt
ut från den 11 december 2027.

Läs vad som faktiskt efterfrågas. Inte en ren skanning, och inte en låg siffra. En *rapport om
utförda provningar*, bevarad ett decennium, läsbar för någon som inte var i rummet. En lista med
fynd klädda i självsäkra allvarlighetsgrader, utan apparat under och utan protokoll över vad som
förkastades och varför, överlever inte den läsningen. En utgåva gör det — för varje påstående
namnger beläggen bakom sig, varje eliminerad läsart bokförs med sitt skäl, och varje rättelse
sker skriftligt.

Skyldigheterna vilar på tillverkaren, inte på en extern granskare. En extern granskning av det
slag som beskrivs här stödjer den tekniska dokumentation ni sammanställer; den är inte hela
akten, och den ersätter inte ett anmält organs bedömning av överensstämmelse där förordningen
kräver en. Men den är den del av akten som är svårast att producera om det egna arbetet — för
den enda egenskap den måste bära är att någon annan än ni skrev den.

## Varför det angår oss

På CounterProof bedriver vi adversariell granskning av maskinskriven kod, och dessa frågor är
inte teoretiska för oss — de är våra driftregler. Fynd prövas i stället för att
medelvärdesbildas; varje påstående namnger det evidenssteg det nådde, och inget högre; ett fynd
som redan rättats uppströms dras tillbaka i stället för att räknas; och när ett av våra egna
påståenden inte överlever
[återkallar vi det skriftligt, offentligt](https://counterproof.io/notes/we-withdrew-our-own-number/) (på engelska). Vi
säljer inte ett antal fynd, och vi skulle råda er att inte köpa på ett. Skannrarna är skrivare,
och skriptoriet går numera dygnet runt för växelpengar. Det knappa var aldrig kopian. Det är
utgåvan.

Det längre argumentet — inklusive den villkorade formen av varje påstående ovan och gränserna
för vår egen metod — finns i vårt arbetspapper om kollationering och proveniens för
maskingenererad text, [läsbart i sin helhet här](https://research.counterproof.io/) (på
engelska). Det är ett utkast till preprint, inte referentgranskat, och det säger det.

---

*Siffrorna ovan är källbelagda: kampanjen över 501 projekt dokumenteras i vår tidigare
anteckning; de tre systemens riktmärkesförhållanden kommer från leverantörens publicerade
inlägg; curls bekräftelseandel, rapporten om fantomfunktionen och stängningen av dess
bounty-program rapporteras av The New Stack, BleepingComputer och The Register. Hänvisningar
till cyberresiliensförordningen avser förordning (EU) 2024/2847 i den officiella svenska
språkversionen — samma bestämmelser som vi bär på vår startsida. Där ett påstående är vår
slutledning snarare än ett citerat fynd — att allvarlighetsgraden inflateras uppåt, att flyt och
giltighet är oberoende — har vi sagt det. Denna sida är en översättning av det engelska
originalet; vid avvikelser gäller originalet. Om något här är fel rättar vi det skriftligt på
denna sida.*

