← Nieuwste papers
💻 computer science

An empirical analysis of vulnerability detection tools for solidity smart contracts

Dit artikel evalueert empirisch 20 geautomatiseerde kwetsbaarheidsdetectietools en een op een LLM gebaseerde methode op een nieuw vrijgegeven, handmatig geannoteerde dataset van 2.182 Solidity-smartcontracten, waarbij aanzienlijke variaties in de nauwkeurigheid van de tools worden blootgelegd en wordt aangetoond dat het combineren van een specifieke set van drie tools tot 76,78% van de kwetsbaarheden in minder dan een minuut kan detecteren.

Oorspronkelijke auteurs: Francesco Salzano, Cosmo Kevin Antenucci, Simone Scalabrino, Giovanni Rosa, Rocco Oliveto, Remo Pareschi

Gepubliceerd 2026-05-19
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Francesco Salzano, Cosmo Kevin Antenucci, Simone Scalabrino, Giovanni Rosa, Rocco Oliveto, Remo Pareschi

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je de wereld van blockchain voor als een enorme, publieke digitale markt. Op deze markt gebruiken mensen Slimme Contracten om geautomatiseerde zakelijke transacties uit te voeren – vergelijkbaar met een automaat die automatisch een snack uitdeelt wanneer je het juiste bedrag munten inwerpt, maar dan voor miljoenen dollars. Deze contracten zijn geschreven in een taal genaamd Solidity.

Het probleem is dat als er een klein barstje in de logica van de automaat zit, een dief al het geld erin kan stelen. Omdat deze contracten openbaar zijn en vaak enorme bedragen geld bevatten, is het vinden van deze "barstjes" (kwetsbaarheden) van cruciaal belang.

Dit artikel is in feite een uitgebreid rapport voor de tools die mensen gebruiken om deze barstjes te vinden. Hier is wat de onderzoekers hebben gedaan, eenvoudig uitgelegd:

1. De "Gouden Standaard" Testset

Stel je voor dat je wilt testen hoe goed een groep metaaldetectoren is in het vinden van begraven schatten. Je kunt de metaaldetectoren niet zomaar vragen om schatten te vinden en hun woord vertrouwen; je hebt een test nodig waarbij je precies weet waar de schatten verborgen zijn.

  • De Oude Manier: Eerdere studies gebruikten vaak testsets waarbij de locaties van de "schatten" werden geraamd door andere metaaldetectoren. Dit is alsof je een metaaldetector vraagt om een munt te vinden, en vervolgens een tweede metaaldetector vraagt om dit te bevestigen. Als de eerste het fout heeft, kan de tweede gewoon met de fout instemmen.
  • De Nieuwe Manier: De onderzoekers in dit artikel hebben een gloednieuwe, enorme testset gecreëerd. Ze namen 2.182 echte slimme contracten en lieten drie menselijke experts deze handmatig regel voor regel doorlezen om de bugs te vinden. Ze markeerden de exacte regel code waar het probleem zat. Denk hierbij aan een leraar die een stapel examens nakijkt met een rode pen, het specifieke verkeerde antwoord markeert, in plaats van alleen te zeggen "dit hele examen is fout".

2. Het Testen van de "Metaaldetectoren" (De Tools)

De onderzoekers namen 19 verschillende geautomatiseerde tools (de "metaaldetectoren") en draaiden ze tegen hun nieuwe, door mensen beoordeelde testset. Ze testten ook een Groot Taalmodel (LLM), wat vergelijkbaar is met een AI die miljoenen boeken heeft gelezen en probeert op basis van patronen te raden waar de bugs zitten.

De resultaten waren verrassend:

  • Geen Enkele Held: Geen enkele tool vond alle bugs. Het is alsof je een arts hebt die geweldig is in het diagnosticeren van gebroken botten, maar slecht in het opsporen van infecties.
  • Het "Rekenkundige" Probleem: Sommige tools waren fantastisch in het vinden van rekenfouten (zoals een rekenmachine die 2+2 optelt en 5 krijgt), maar nutteloos bij het vinden van andere soorten bugs.
  • Het "Valse Alarm" Probleem: Veel tools waren te paranoïde. Ze schreeuwden "GEVAAR!" bij veilige code, wat leidde tot veel valse alarmen (False Positives). Dit maakt ze vervelend om te gebruiken voor ontwikkelaars, omdat ze elk alarm handmatig moeten controleren.
  • De AI (ChatGPT) Verrassing: De AI presteerde redelijk goed op eenvoudige, schoolboekachtige voorbeelden van bugs (zoals een oefentoets). Echter, toen ze het testten op echte, complexe contracten, crashte de prestatie van de AI. Het was als een student die de oefentoets perfect haalde maar de echte toets faalde, omdat de echte vragen rommeliger en complexer waren. De onderzoekers vermoeden dat de AI de antwoorden van de oefentoets had "geleerd" omdat die voorbeelden zo vaak online voorkomen.

3. De "Droomteam" Oplossing

Omdat geen enkele tool perfect is, vroegen de onderzoekers zich af: Wat als we ze combineren?

Ze groepeerden de tools op basis van waar ze goed in waren en kozen de beste drie om samen te werken:

  1. Conkas (De Rekenexpert)
  2. Slither (De Generalist die snel is en goed in veel dingen)
  3. Smartcheck (De Specialist voor Denial-of-Service-aanvallen)

Het Resultaat: Door slechts deze drie tools samen te gebruiken, vonden ze 76,78% van alle bekende bugs. Nog beter: het draaien van alle drie duurde gemiddeld minder dan één minuut. Het is alsof je een team van drie specialisten hebt die elkaars blinde vlekken opvangen, waardoor het probleem sneller wordt opgelost dan door welke enkele persoon dan ook.

4. Waarom "Regel voor Regel" Belangrijk Is

De onderzoekers vroegen ontwikkelaars ook welk soort bugrapporten ze eigenlijk willen.

  • Bestandsniveau: "Er zit een bug in dit bestand." (Te vaag, alsof je zegt "Er is een lek in het huis" zonder te zeggen welke kamer).
  • Functieniveau: "Er zit een bug in deze functie." (Beter, maar nog steeds vaag).
  • Regelniveau: "Er zit een bug op regel 42." (Perfect).

De enquête toonde aan dat ontwikkelaars overweldigend de voorkeur geven aan regelniveau-rapporten, omdat dit hen precies vertelt waar ze de patch moeten aanbrengen. Dit artikel biedt de grootste dataset van zijn soort met dit specifieke, hoogprecieze niveau van detail.

Samenvatting

  • Het Probleem: Geautomatiseerde tools voor het vinden van bugs in slimme contracten zijn vaak onbetrouwbaar, vol valse alarmen of missen echte bugs.
  • De Oplossing: De onderzoekers bouwden een enorme, door mensen geverifieerde "antwoordenlijst" om deze tools correct te testen.
  • De Ontdekking: AI-tools worstelen met real-world complexiteit, en geen enkele tool werkt voor alles.
  • De Oplossing: Een specifieke combinatie van drie bestaande tools werkt het beste, waarbij de meeste bugs in de kortste tijd worden gevonden.
  • De Gift: Ze hebben hun enorme, door mensen geverifieerde dataset openbaar gemaakt zodat anderen in de toekomst betere tools kunnen bouwen.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →