SpecTrum: Specification-Guided Differential Fuzzing for Ethereum Consensus Clients
SpecTrum is een framework dat divergenties tussen Ethereum-consensusclients voorkomt door de consensusspecificatie te mechaniseren om expliciet validiteitsvoorwaarden te definiëren, de dekking van premissen te meten om ongeteste scenario's te identificeren, en gerichte inputs te genereren die succesvol 27 gevallen van cross-client divergentie hebben blootgelegd.
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
In de digitale wereld van Ethereum werkt een enorm netwerk van computers samen om een gedeeld grootboek van transacties veilig en nauwkeurig te houden. Dit systeem vertrouwt op een principe genaamd consensus: om het netwerk te laten functioneren, moeten alle onafhankelijke computers die de software draaien het eens zijn over exact dezelfde uitkomst voor elk nieuw stukje data dat aan de keten wordt toegevoegd. Om deze overeenstemming te waarborgen, schrijven ontwikkelaars verschillende versies van de software in diverse programmeertalen, in de hoop dat als één versie een fout bevat, de anderen deze zullen ontdekken. Echter, als alle versies per ongeluk dezelfde fout maken, of als ze de regels net iets anders interpreteren, kan het netwerk uiteenvallen, wat leidt tot verwarring, verloren beloningen of een volledige stillegging van de activiteiten. De regels die dit gedrag beheersen, zijn beschreven in een gedetailleerd technisch document, maar omdat deze regels vaak worden beschreven als computercode in plaats van een eenvoudige lijst met voorwaarden, is het moeilijk om precies te weten waar de grenzen van geldigheid liggen.
Een team van onderzoekers heeft een nieuwe methode ontwikkeld om deze verborgen grenzen te vinden en ervoor te zorgen dat verschillende versies van de Ethereum-software met elkaar overeenstemmen. Ze creëerden een tool genaamd SpecTrum, die fungeert als een vertaler door de complexe, impliciete regels van het Ethereum-protocol om te zetten in een duidelijke, expliciete set voorwaarden die een computer systematisch kan controleren. In plaats van te gokken waar fouten zouden kunnen optreden, brengt deze tool elk mogelijk scenario in kaart waarin de regels geschonden kunnen worden, inclusief situaties waarin getallen te groot worden voor de computer om te verwerken of waar datalijsten verwachte vermeldingen missen. Door deze kaart te gebruiken, genereerden de onderzoekers duizenden specifieke testgevallen die ontworpen zijn om de software tot het uiterste te drijven, waardoor gebreken aan het licht kwamen die standaard testmethoden hadden gemist.
De onderzoekers pasten deze tool toe op vijf belangrijke versies van de Ethereum-consensussoftware, die in verschillende programmeertalen zijn geschreven en door duizenden nodes wereldwijd worden gebruikt. Hun onderzoek bracht eenentwintig verschillende gevallen aan het licht waarbij deze onafhankelijke programma's van mening verschilden over hoe specifieke inputs behandeld moesten worden. In sommige gevallen accepteerden de programma's dezelfde data maar berekenden ze verschillende eindresultaten, een stille fout die uiteindelijk de netwerksplitsing zou kunnen veroorzaken. In andere gevallen crashte de software volledig wanneer deze werd geconfronteerd met ongebruikelijke maar geldige data. Cruciaal was dat tweeëntwintig van deze zeventendertig fouten niet ontdekt hadden kunnen worden zonder de nieuwe methode van de onderzoekers om de regels expliciet te maken. De studie toonde aan dat traditioneel testen, dat vertrouwt op code coverage om te zien hoeveel van het programma wordt uitgevoerd, er niet in slaagde deze problemen te detecteren omdat de fouten voorkwamen in de subtiele logica van hoe de regels werden toegepast, en niet in de zichtbare structuur van de code zelf.
Het team ontdekte ook dat deze fouten niet beperkt waren tot één enkele versie van de software. Omdat de kernlogica gedeeld wordt over verschillende updates van het Ethereum-netwerk, verschenen dezelfde zeventendertig fouten consistent wanneer de tests werden uitgevoerd op een nieuwere versie van het protocol. Dit suggereert dat een enkele inspanning om de onderliggende specificatie te corrigeren, deze problemen in alle toekomstige versies van het netwerk kan voorkomen. De onderzoekers rapporteerden alle zeventendertig bevindingen aan het Ethereum-beveiligingsteam, waar ze momenteel worden beoordeeld. Dit werk demonstreert dat het door vage, impliciete regels om te zetten in duidelijke, testbare voorwaarden, mogelijk is om diepgewortelde inconsistenties in kritieke software te vinden en te herstellen voordat ze echte schade aanrichten, waardoor het digitale netwerk stabiel en betrouwbaar blijft.
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.