Ethereum är en distribuerad blockchain-plattform, som fungerar som ett ekosystem för smarta kontrakt: fullfjädrade interkommunikationsprogram som fångar transaktionslogiken hos ett konto. Till skillnad från program i vanliga språk, begränsar en gas gräns genomförandet av ett Ethereum smart kontrakt: genomförandet fortskrider så länge gas finns tillgänglig. Gas är således en värdefull resurs som kan manipuleras av en angripare för att framkalla oönskat beteende i offrets smarta kontrakt (t.ex. slösa eller blockera medel från detta offer). Gas-fokuserade sårbarheter utnyttja oönskade beteende när ett kontrakt (direkt eller genom andra interagerande kontrakt) tar slut av gas. Sådana sårbarheter är bland de svåraste för programmerare att skydda mot, eftersom out-of-gas beteende kan vara ovanligt i icke-attack scenarier och resonemang om det är långt ifrån trivialt. I detta papper, vi klassificera och identifiera gas-fokuserade sårbarheter, och presentera MadMax: en statisk programanalys teknik för att automatiskt upptäcka gas-fokuserade sårbarheter med mycket högt förtroende. Vårt tillvägagångssätt kombinerar en kontroll-flöde-analys-baserad dekompilator och deklarativa program-struktur frågor. Den kombinerade analysen fångar upp domänspecifika koncept på hög nivå (t.ex. łdynamisk datastrukturlagringž och łsafely resumable loopsž) och uppnår hög precision och skalbarhet. MadMax analyserar helheten av smarta kontrakt i Ethereum blockchain på bara 10 timmar (med dekompilering timeouts i 8% av fallen) och flaggor kontrakt med ett (mycket flyktigt) penningvärde på över $ 2,8B som sårbar. Manuell inspektion av ett urval av flaggade kontrakt visar att 81 procent av varningarna i urvalet verkligen leder till sårbarheter, som vi rapporterar om i vårt experiment.
MadMax REF ] upptäcker automatiskt gasfokuserade sårbarheter med stort förtroende.
MadMax: surviving out-of-gas conditions in Ethereum smart contracts
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}