Een cryptoproject kan een smart-contractaudit hebben doorstaan en toch kwetsbaar blijven via wallets, beheerderssleutels of software buiten de onderzochte code. Een auditlogo alleen zegt daarom weinig over hoeveel van het systeem werkelijk is gecontroleerd.
Hacken waarschuwt voor precies die kloof tussen verwachting en onderzoeksopdracht. De eigen cijfers van het beveiligingsbedrijf maken duidelijk waarom dat onderscheid telt: in het derde kwartaal ging volgens Hacken ongeveer $1,18 miljard verloren bij 107 incidenten.
Niet al die verliezen begonnen in smart contracts.
Een audit onderzoekt wat vooraf in scope is gezet
Een beveiligingsaudit is geen onbeperkte controle van ieder onderdeel dat bij een cryptoproject hoort.
Een onderzoek kan bijvoorbeeld uitsluitend kijken naar een specifieke set smart contracts. Walletsoftware, servers, ondertekeningssystemen of beheerdersaccounts kunnen buiten die opdracht vallen.
Dat verschil staat zelfs expliciet in Hackens eigen productuitleg.
Volgens de
documentatie over walletaudits kijkt een walletonderzoek onder meer naar privésleutelbeheer, signing flows, clientsoftware, backends en de interface waarmee gebruikers transacties goedkeuren.
Hacken schrijft daarbij expliciet dat dit iets anders is dan een smart-contractaudit, die zich richt op code op de blockchain.
Een succesvol onderzoek van het ene onderdeel is dus geen bewijs dat het andere onderdeel dezelfde controle heeft gehad.
$1,18 miljard verlies laat zien hoe breed het aanvalsvlak is
Het
Q3-rapport van Hacken telt tussen juli en september 107 beveiligingsincidenten met gezamenlijk ongeveer $1,18 miljard schade.
Dat was volgens het bedrijf 55% meer dan een kwartaal eerder.
Smart-contractproblemen waren goed voor 48% van de verliezen.
Problemen rond toegangscontrole en dagelijkse operationele processen vertegenwoordigden nog eens 40%.
Die verdeling maakt het gevaar van één algemeen auditlabel zichtbaar.
Een protocol kan uitstekende smart-contractcode hebben, terwijl een gestolen ondertekeningssleutel alsnog toegang geeft tot geld.
Veilige code beschermt geen slecht beheerde beheerderssleutel
Neem een smart contract zonder bekende kwetsbaarheid.
Als een beheerder via een afzonderlijke sleutel belangrijke instellingen kan veranderen of geld kan verplaatsen, ontstaat ergens anders een aanvalspunt.
Wordt die sleutel gestolen, dan hoeft een aanvaller de onderzochte smart-contractcode niet te breken.
Hij gebruikt simpelweg de bevoegdheden die het systeem zelf aan de beheerder geeft.
Hetzelfde geldt voor multisigs, opnameprocessen en andere systemen rond het protocol.
Een audit van contractcode kan daarom technisch volledig correct zijn en toch geen antwoord geven op de vraag hoe veilig de sleutels eromheen worden beheerd.
Hacken maakt die scheiding zelf in zijn onderzoeken
Openbare Hacken-rapporten laten ook zien hoe specifiek zo'n opdracht kan zijn.
Bij afzonderlijke audits vermeldt het bedrijf bijvoorbeeld de onderzochte repository, het type onderzoek, de datum en eventuele latere hercontroles.
Een recent
Europeum-rapport noemt expliciet welke repository binnen de review scope viel en toont afzonderlijke datums voor voorlopige en bijgewerkte eindrapporten.
Dat is precies de informatie die een belegger nodig heeft.
Niet alleen: “is dit project geaudit?”
Maar: welke code is geaudit?
Ook een oude audit kan achterhaald raken
Tijd speelt eveneens mee.
Software verandert.
Een protocol kan na een audit nieuwe functies toevoegen, afhankelijkheden bijwerken of rechten anders verdelen. Een externe leverancier kan worden vervangen.
Daarmee kan het werkelijke systeem afwijken van de versie die de auditors hebben onderzocht.
Een audit uit januari zegt dus niet automatisch iets over code die in oktober na verschillende updates draait.
Daarom zijn rapportdatum, onderzochte commit of softwareversie belangrijker dan alleen het logo van het auditbedrijf.
‘Alle bevindingen opgelost’ vraagt ook om controle
Zelfs binnen de onderzochte scope is een gevonden probleem niet automatisch verdwenen.
Auditrapporten kennen doorgaans statussen zoals opgelost, geaccepteerd of nog openstaand.
Een rapport kan daardoor juist aantonen dat risico's bekend zijn gebleven.
Ook kan een ontwikkelaar na herstel nieuwe code toevoegen.
De nuttige controle is daarom niet alleen hoeveel fouten een auditor vond, maar ook wat er daarna met iedere bevinding gebeurde.
Een audit is een momentopname van een afgebakend systeem.
Geen permanente garantie.
Sommige aanvallen hadden al een bekende oplossing
Hackens Q3-rapport noemt nog een ongemakkelijk patroon.
Volgens het beveiligingsbedrijf waren bij verschillende incidenten oplossingen of beveiligingsmaatregelen al publiek beschikbaar voordat aanvallers toesloegen.
Het probleem zat dus niet altijd in ontbrekende kennis.
Soms was bekend hoe een bepaald risico kon worden beperkt, maar was die bescherming nog niet of onvoldoende toegepast.
Dat maakt ook duidelijk waarom een auditrapport alleen onvoldoende kan zijn.
Een bevinding heeft pas waarde wanneer een team de aanbevolen aanpassing daadwerkelijk uitvoert en de verandering daarna wordt gecontroleerd.
‘Geaudit’ betekent niet ‘niet hackbaar’
Daarmee ontstaat een simpele maar belangrijke vertaalslag voor beleggers.
Een audit kan bewijs leveren dat deskundigen een bepaald stuk code hebben onderzocht volgens een bepaalde methode.
Dat is nuttig.
Het betekent niet dat het hele bedrijf veilig is.
Het betekent ook niet dat toekomstige versies dezelfde veiligheid houden of dat een aanvaller geen route buiten de onderzochte code kan vinden.
Een audit verlaagt bepaalde onzekerheid.
Hij verwijdert haar niet.
Sleutelbeheer is geen theoretisch detail
Juist de categorie access control maakt dit concreet.
Wanneer een aanvaller genoeg macht krijgt over beheerdersaccounts, multisigs of withdrawal-systemen, hoeft hij geen complexe fout in een smart contract te vinden.
Hacken koppelt 40% van de Q3-verliezen aan toegangscontrole en operationele problemen.
Dat percentage bewijst niet dat al die projecten eerder een beperkte audit hadden.
Het laat wel zien dat een groot deel van de schade buiten pure contractlogica kan ontstaan.
Wie alleen naar een smart-contractaudit kijkt, mist dus een groot deel van het mogelijke aanvalsvlak.
Een waarschuwing over sleutelbeheer is nog geen hackmelding
Daar hoort ook een andere grens bij.
Dat een onderzoek bepaalde onderdelen niet omvat, betekent niet dat die onderdelen kwetsbaar zijn.
Een wallet die buiten scope viel, is niet automatisch onveilig.
Een beheerder met veel rechten is evenmin bewijs dat diens sleutel gestolen is.
Ontbrekende controle en een vastgestelde kwetsbaarheid zijn twee verschillende dingen.
Een auditclaim te ruim interpreteren is riskant. Een beperkte audit vervolgens behandelen als bewijs van een actieve
hack is dat net zo goed.
Vier vragen zeggen meer dan het auditlogo
Voor een belegger begint de nuttige controle daarom bij het rapport zelf.
Welke contracten, wallets of systemen stonden in scope? Welke softwareversie werd onderzocht? Welke problemen zijn gevonden? En is daarna gecontroleerd of de oplossingen werkelijk zijn doorgevoerd?
Pas daarna krijgt de naam van het auditbedrijf betekenis.
Een logo zonder rapport maakt het bijna onmogelijk om die vragen te beantwoorden.
Een openbaar rapport met duidelijke scope, datums en bevindingen geeft veel meer informatie.
Hacken heeft zelf commercieel belang bij deze boodschap
Ook de bron verdient daarbij controle.
Hacken verkoopt smart-contractaudits, walletaudits en andere beveiligingsdiensten.
Het bedrijf heeft dus financieel belang bij het idee dat cryptoprojecten meer en bredere beveiligingsonderzoeken nodig hebben.
Dat maakt zijn Q3-data of technische onderscheid tussen auditsoorten niet automatisch onjuist.
Het betekent wel dat beleggers ook de waarschuwing zelf moeten behandelen zoals Hacken zegt dat ze audits moeten behandelen: kijk naar het bewijs en naar wat precies wordt geclaimd.
Het rapport telt, niet het schildje
Een goede audit blijft waardevol.
Hij kan programmeerfouten vinden voordat een aanvaller dat doet en geeft ontwikkelaars een externe controle op hun eigen werk.
Maar het woord geaudit is pas informatief wanneer duidelijk is wat erachter zit.
Een smart-contractaudit beschermt geen gestolen privésleutel. Een walletaudit controleert niet automatisch iedere server. En een rapport van maanden geleden garandeert niets over code die daarna is gewijzigd.
Wie veiligheid wil beoordelen, moet daarom één laag dieper kijken.
Niet naar het auditlogo.
Naar de scope.