CounterProof är en oberoende adversariell granskningsverksamhet för moderna kodbaser — maskinskriven kod framför allt. Vi levererar det enda ni inte kan producera internt: en oberoende, signerad, evidensgraderad säkerhetsbedömning, byggd för granskning av tillsynsmyndigheter, förvärvare, försäkringsbolag och företagskunder.
Kod som skrivits av en modell och granskats av samma modell har granskats av ingen.
Tala med oss innan tidsfristen gör det →Ingen köper en kodgranskning. Man köper det den låser upp.
Ni läser inte det här för att ni vaknade och ville ha en säkerhetsbedömning. Något kräver belägg av er.
Tre av dessa fyra accepterar aldrig ert eget ord om er egen kod — oberoende är egenskapen de köper, och det är den enda egenskap som inget team kan leverera om sitt eget arbete. Den fjärde, tillsynsmyndigheten, godtar ofta er självbedömning — och håller er sedan ansvariga för varje dokument bakom den. I båda fallen måste beläggen hålla. Det är vad vi producerar.
Leveransen är poängen.
Ett uppdrag producerar en CounterProof Assessment under en beständig uppdragsidentifierare (CPR-YYYY-NNN — det som era underhållare, er förvärvare eller era fix-commits citerar). Varje fynd bekräftas antingen mot er källkod — exakt fil och rad, reproduktionsväg, konsekvensklassificering — eller graderas uttryckligen som enbart plausibelt. Inget utfyllt, inget skannergenererat, inget ni inte kan agera på. Protokollet anger också vad vi kontrollerade och inte fann: ett dokumenterat negativt resultat är här en leverans, inte ett misslyckat uppdrag.
Varje fynd anger det evidenssteg det faktiskt nådde — källspårning, kompileringsbevis, test eller körande reproduktion — och antyder aldrig ett högre. Varje sökväg:rad-hänvisning löses maskinellt mot exakt den revision vi granskade innan rapporten lämnar våra händer. Ni kan kontrollera vårt arbete. Det är avsiktligt.
När ett fynd inte överlever granskning — er, era underhållares eller vår egen omprövning — drar vi tillbaka det skriftligen, med skälet, under samma uppdragsidentifierare. Vi gör det oombedda; motparten behöver inte be om det. Återkallelseloggen är inget medgivande; den är mekanismen.
Provexemplar — så ser ett fynd utIllustrativt exemplar, inte från något kunduppdrag; identifierarna är platshållare. Rapporter utfärdas på engelska.
”Vittnena är numera gratis. Den kritiska utgåvan är det inte.”
Marknaden har börjat konkurrera om hur många fynd ett verktyg kan generera — men ett fynd är ett vittne, inte en dom. En fil:rad-hänvisning kan en läsare öppna och kontrollera på en minut; ett blott ”Kritisk” kan inte kontrolleras. I våra protokoll är allvarlighetsgraden ett resultat av evidenssteget, aldrig ett underlag för marknadsföring. Vittnena är numera gratis. Den kritiska utgåvan är det inte. Ett fynd är ingen dom →
Fyra steg. Ni känner omfånget innan ni betalar, och ni behåller protokollet efteråt.
Ett första uppdrag behöver inte omfatta allt ni levererar. Ett litet, väl valt omfång — en modul, en förtroendegräns — ger samma försvarbara protokoll i en storlek ni kan utvärdera, och det kan bli det första underlag enligt del II punkt 3 som en tillverkare lämnar in.
Flyt är inte ett kvalitetstecken. Det är felmoden.
När en människa skriver en kodrad tvivlar hon på den. Hon vet att hon gissade — och det tvivlet är en säkerhetsfunktion, för det är vad som får henne att gå och testa saken.
En modell skriver samma rad flytande, med exakt den röst den använder för raderna som är korrekta. För den som läser läses flyt som kompetens. En juniör ingenjör räcker er något synbart grovt och ni kontrollerar det. En modell räcker er tvåhundra polerade rader med ett säkert skäl för var och en, och ni gör det inte.
Fällan är inte att modeller har fel oftare än människor. Det är att deras felaktiga svar anländer klädda i samma röst som deras riktiga — omöjliga att skilja åt utifrån, eftersom de är omöjliga att skilja åt inifrån.
Sedan skriver samma process testet som certifierar koden, och kommentaren som förklarar den. Alla tre stämmer överens, eftersom alla tre kom från samma ställe. Den samstämmigheten läses som tre oberoende bekräftelser. Den är en.
”Deras felaktiga svar anländer i samma röst som deras riktiga.”
Så den användbara frågan är inte om en modell kan skriva bra kod — det kan den, med en metod omkring sig. Frågan är vad er granskningsprocess faktiskt mäter när allt den inspekterar kom från samma källa: koden, testet, förklaringen och alltmer även verktyget ni byggde för att kontrollera dem. Rätt gjort är resultatet bra. Fel gjort läses det exakt likadant.
En granskning hittar vad dess granskare kan hitta.
Kör en modell över en kodbas och en kort rapport säger er något smalt: den modellen, i den selen, den dagen, lyfte fram dessa. Det den inte lyfte fram finns inte i rapporten, och kan per konstruktion inte finnas där.
Hur mycket det betyder beror på hur mycket olika granskares blinda fläckar överlappar — vilket ingen har mätt för kodgranskning. Forskning om korrelerade fel mellan leverantörer fann betydande överlapp på flervalstest och en CV-gallringsuppgift; om det överförs till att hitta sårbarheter är inte fastställt. Vad den visar: olika leverantörer är inte automatiskt oberoende av varandra.
Flera saker kan avgränsa vad en enskild genomgång missade: ett bevis, en testsvit, en fuzzer, en specialist, utplanterade defekter, eller en granskare som skiljer sig från den första. Vad som inte kan avgränsa det: att läsa samma genomgång med större självförtroende.
Vi har inte visat att flergranskargranskning fångar fler verkliga defekter — experimentet vi utformade för att pröva det drogs tillbaka innan det kördes, och vi säger det offentligt. Den smalare poängen är den vi står bakom: en ren genomgång från en granskare är ett avgränsat resultat, och att läsa den som ett renhetsintyg är en slutsats som resultatet inte bär. Hela argumentet (på engelska) →
Vi har skrivit ned det långa argumentet, inklusive var vår egen metods gränser går och vad vi inte har demonstrerat: en introduktion på enkelt språk, och hela artikeln bakom den, publicerad som preprint under doi:10.5281/zenodo.22030516 (CC BY 4.0), på engelska. Den är inte referentgranskad, och den säger det.
Ni kan köra samma modeller. Ni kan inte vara oberoende.
Att köra flera AI-modeller över er egen kod replikerar våra verktyg men förlorar egenskapen som räknas. Ert team väljer vad granskarna ser, ramar in frågorna och bedömer svaren — och vart och ett av de valen bär era antaganden rakt tillbaka in i granskningen. Det är inte ett disciplinbrott; det är strukturellt. Ett systems upphovsperson kan inte vara dess egen domare.
Så även en felfri intern granskning är fortfarande ert eget ord om er egen kod. Vad de köper är en tredje part som är villig att signera. Vi är inte ett anmält organ och vi certifierar inte överensstämmelse; vi producerar de oberoende belägg som stödjer er bedömning och som är strukturerade för att omprövas av vem som helst annans.
Metoden bryr sig inte om vem — eller vad — som skrev er kod. Oberoende saknas lika ofta i människoskriven kod. Maskinskriven kod gör bara gapet omöjligt att ignorera.
Ni skulle upptäcka det ändå. Bättre att ni hör det från oss.
CounterProof är del av en koncern som bygger infrastruktur för betalningar och förvaring av digitala tillgångar. Det är där denna metod smiddes — och det betyder att om ni bygger på de marknaderna kan vårt närstående bolag ligga intill er, eller konkurrera med er.
Alltså: före varje uppdrag berättar vi skriftligt exakt vad koncernen bygger och var den verkar. Ni avgör om det är acceptabelt, och ni avgör det innan ni betalat oss någonting. Om det inte är acceptabelt är det ett legitimt svar, och vi hör det hellre i början.
Vad vårt oberoendeanspråk täcker och inte täcker, exakt: vi utfärdar ingen bedömning av kod som skrivits av CounterProof eller av något bolag i vår koncern. Den gränsen är strukturell. Det är ett uttalande om vems kod vi granskar, inte ett anspråk på att sakna kommersiella intressen någonstans nära er sektor. Våra är namngivna ovan, och ni avgör om de är acceptabla innan ni har betalat oss något.
Tre personer, namngivna, i protokollet.
En signerad bedömning betyder att någons namn står på den. Det här är personerna — och vilket namn som bär vad.
Vi är en familjeverksamhet — far, son och dotter — och granskningsbänken består av två personer. Båda är fakta som ett due diligence-team upptäcker på egen hand, så vi säger dem hellre här: en bänk med två granskare tar färre uppdrag än en firma, avböjer allt utanför sin domän och kan inte gömma en svag genomgång bakom ett varumärke. Det är bytet, och det är skälet till att metoden är nedskriven och mekaniserad i stället för att bäras i någons huvud.
Vad vi läser, och vad vi kontrollerar.
Att hitta har blivit billigt; resten av livscykeln inte. En genomgång steg för steg (identifiera, bedöma, besluta, åtgärda, rapportera, bevara) med det som EU:s Cyber Resilience Act kräver i varje steg, och platsen där en oberoende adversariell granskning sitter: i stegen efter det första.
TypeSafe AI:s Jev är en ny sorts modell: den skriver aldrig text, den returnerar bara typade beslut med sannolikheter. Dess riktmärke bedömer den mot genomsnittet av två andra AI-modeller. Vi öppnade de fall TypeSafe publicerar och räknade. I 8 av de 19 fall där båda bedömarna svarade var bedömarna oense med varandra. Vart och ett av de fyra fall TypeSafe publicerar under etiketten ”alla tre missar referensen” är ett fall där referensen själv var omtvistad. En anteckning på klarspråk om vad det betyder för hur vi bedömer AI.
Två förregistrerade, blindbedömda jämförelser mellan vår fulla granskningsapparat och en enda billig genomgång, med publicerade professionella revisioner som facit. Apparaten förlorade ett mål rakt av; på det andra utlöste den sin egen precisionströskel bara genom att radera de fynd revisorn hade bedömt som verkliga (0–1 av 4, beroende på bedömare). Vad vi ändrade, vad vi mätte om, och hålen som en senare revision fann i själva mätningen.
Tala med oss innan tidsfristen gör det.
Informationsförfrågningar går till Elenora Soons, account manager: