DeFi-protokoller har tapt milliarder av dollar til smart contract-utnyttelser. Ikke på grunn av markedsnedgang eller regulatoriske tiltak, men på grunn av kode som ikke oppfarte seg slik utviklerne forventet når noen bevisst presset den til siden. Å forstå hvordan disse angrepene fungerer, er ikke bare en akademisk øvelse. Hvis du bruker DeFi, sitter pengene dine inne i disse kontraktene.
Ethereum ETH$2,200ETH$2,20024h+0.46%7d+6.96%30d+8.02%1y+31.82%via Statility økosystemet alene har sett over 5 milliarder dollar bli drenert gjennom utnyttelser siden DeFi begynte å skaleres i 2020. Noen av disse var sofistikerte zero-day-angrep. Mange var velkjente sårbarhetermønstre som revisorer mistet eller som ble introdusert etter at revisjonen var fullført. Her er angrepsvektorene som fortsetter å dukke opp.
De vanlige mistenkte
Reentrancy
Reentrancy er den eldste sårbarheten i smart contracts, og det fungerer fortsatt. Angrepet utnytter en enkel logikkfeil: en kontrakt sender midler til en ekstern adresse før den oppdaterer sin egen interne balanse. Angriperens kontrakt mottar midlene, og kaller deretter umiddelbart tilbake til den opprinnelige kontrakten for å ta ut igjen. Siden saldoen ikke har blitt oppdatert ennå, tror kontrakten at angriperen fortsatt har midler og sender mer.
Det mest kjente reentrancy-angrepet var The DAO-hacken i 2016, som tappet omtrent 60 millioner dollar i ETH og til slutt førte til Ethereum hard fork som skapte Ethereum Classic. Du kan anta at industrien lærte sin leksjon. Det gjorde den ikke.
I juli 2023 førte en reentrancy-sårbarhet i Vyper-kompilatoren (ikke i noen individuell protokolls kode, men i programmeringsspråket selv) til utnyttelser på tvers av flere Curve Finance-pooler, og drenerte over 60 millioner dollar. Feilen hadde vært tilstede i Vyper-versjoner 0.2.15 gjennom 0.3.0 i årevis. Dette er viktig fordi det viser at reentrancy kan skjule seg i lag av stakken som protokollutviklere og revisorer ikke engang ser på.
Oracle-manipulasjon
DeFi-protokoller trenger prisdata for å fungere. Utlånsplattformer må kjenne verdien av sikkerhet. DEXs trenger referansepriser for glidningsvern. Denne prisdataen kommer fra orakler, og å manipulere oraklet betyr å manipulere protokollen.
Mango Markets-utnyttelsen i oktober 2022 er et lærebokeksempel. Avraham Eisenberg brukte 5 millioner dollar for kunstig å pumpe opp prisen på MNGO-tokens på Mangos egen børs, noe som blåste opp verdien av hans sikkerstillingsposisjon. Han lånte deretter 114 millioner dollar mot det oppblåste sikkerstillet og trakk det ut. Teknisk sett fungerte protokollen nøyaktig som designet. Oraklet rapporterte prisen det så. Utlåningslogikken fulgte sine regler. Men systemet antok at orakelprisen reflekterte reell markedsverdi, og den antagelsen var feil.
Protokoller som bruker en enkelt on-chain-kilde for prisdata, spesielt en tokens egen handelspool med lav likviditet, er iboende sårbare for dette. Chainlink og andre desentraliserte oracle-nettverk eksisterer for å dempe dette ved å aggregere data fra flere kilder, men ikke alle protokoller bruker dem, og selv aggregerte feeds kan manipuleres under ekstreme forhold.
Flash Loan-angrep
Flash-lån er usikrede lån som må lånes og tilbakebetales innen en enkelt transaksjon. Hvis tilbakebetalingen ikke skjer, reverserer hele transaksjonen som om den aldri skjedde. Dette er en genuint ny finansiell primitiv som ikke har noe ekvivalent i tradisjonell finans.
Det er også verktøyet som gjør mange utnyttelser økonomisk levedyktige. Før flash-lån, trengte en angriper som ville manipulere en 50 millioner dollar pool, 50 millioner dollar. Med flash-lån trenger de nok ETH til å dekke gassgebyrer og flash-lånpremien, ofte bare noen få hundre dollar.
Mønsteret gjentas over dusinvis av utnyttelser: låne en massiv mengde via flash-lån, bruk den til å manipulere en priserakel eller drenere en sårbar pool, tilbakebetal lånet, behold fortjenesten. bZx-angrepene i 2020 var blant de første som demonstrerte dette mønsteret. Pancake Bunny i 2021 tapte 45 millioner dollar til en flash-lån-drevet prismanipulasjon. Listen fortsetter å vokse.
Flash-lån skaper ikke sårbarheten. De forsterker den. Enhver protokoll som er sårbar for store kapitalbevegelser var allerede brukket. Flash-lån gjorde det bare mulig for hvem som helst å være det store kapitalet, gratis.
Hva revisjoner faktisk gjør (og ikke gjør)
En smart contract-revisjon er en linje-for-linje kodegransking, vanligvis utført av et spesialisert sikkerhetsfirma, som ser etter kjente sårbarhetermønstre, logikkfeil og avvik fra spesifikasjonen. Gode revisorer tester også grensetilfeller, simulerer angrepssituasjoner og gjennomgår den økonomiske insentivstrukturen.
Her er hva revisjoner ikke er: en garanti. Reviderte protokoller blir hacket jevnlig. Det er flere grunner til dette.
For det første, koden som ble revidert, er kanskje ikke koden som blir distribuert. Protokoller gjør ofte endringer etter en revisjon, noen ganger betydelige, og distribuerer uten å re-revidere. For det andre, revisjoner undersøker en kontrakt isolert eller innenfor et begrenset omfang. DeFi-protokoller er komposerbare, noe som betyr at de samhandler med andre protokoller på måter som skaper emergent oppførsel som ingen enkelt revisjon kan forutsi. En utlånsprotokoll kan være sikker alene, men bli sårbar når noen lager en ny pool som samhandler med den på en uventet måte.
For det tredje, er mange utnyttelser økonomiske snarere enn tekniske. Koden gjør det den ble skrevet for å gjøre, men den økonomiske insentivstrukturen har en feil som en angriper kan utnytte. Revisorer med rent ingeniørbakgrunn kan kanskje ikke fange disse. Det er grunnen til at noen sikkerhetsfirmaer nå har økonomer og mekanismedesignere på sine revisjonsteam.
Hva revisjoner fanger vs. Hva de savner
| Revisjoner fanger vanligvis | Revisjoner savner ofte |
|---|---|
| Reentrancy-mønstre | Kodeendringer etter revisjon |
| Integer overflow/underflow | Risiko for tverrprotokoll-komposabilitet |
| Tilgangskontrollfeil | Økonomiske eller insentivdesignfeil |
| Kjente sårbarhetermønstre | Nye angrepsvektorer |
| Gasoptimaliseringsproblemer | Styringssurfasser for angrep |
| Standardoverholdelse (ERC-20, osv.) | Infrastruktur-lags bugs (kompilator, EVM) |
Post-mortem-mønstre
Etter nok utnyttelses-post-mortems dukker mønstre opp. De fleste utnyttelser er ikke nye. De er variasjoner på kjente temaer brukt på protokoller som hadde blindflekker.
Uverifiserte antagelser er den vanligste rotårsaken. Utvikleren antok at orakelprisen ville være nøyaktig. De antok at bare de tiltenkte kontraktene ville kalle en bestemt funksjon. De antok at ingen ville ha nok kapital til å flytte et marked 40% i en enkelt blokk. Hver antagelse er en potensiell angrepssurface.
Oppgraderbare kontrakter og admin-nøkler er et annet tilbakevendende tema. Mange protokoller bruker proxy-mønstre som lar teamet oppgradere kontraktlogikk etter distribusjon. Dette er ment som en sikkerhetsmåte, som lar utviklere fikse bugs raskt. Men det betyr også at en kompromittert admin-nøkkel kan brukes til å erstatte en fungerende kontrakt med en ondsinnet. Ronin Bridge-hacken i 2022, som tapte 625 millioner dollar, var til slutt en admin-nøkkelkompromiss snarere enn en smart contract-logikkfeil.
Bemerkelsesverdige DeFi-utnyttelser
| Protokoll | År | Beløp tapt | Angreptype |
|---|---|---|---|
| The DAO | 2016 | $60M | Reentrancy |
| Ronin Bridge | 2022 | $625M | Validator-nøkkelkompromiss |
| Wormhole | 2022 | $320M | Signaturverifikasjonsomgåelse |
| Mango Markets | 2022 | $114M | Oracle / prismanipulasjon |
| Curve (Vyper) | 2023 | $60M | Kompilator-nivå reentrancy |
| Euler Finance | 2023 | $197M | Likvidasjonslogikkfeil |
Beskytte deg selv
Du kan ikke revidere smarte kontrakter selv med mindre du er en Solidity-utvikler, og selv da ville du sannsynligvis misse ting. Men du kan vurdere risiko mer tydelig ved å stille de rette spørsmålene.
Sjekk om en protokoll har blitt revidert, av hvem, og hvor nylig. En revisjon fra to år siden på en kodebase som har blitt oppdatert femti ganger, gir ikke mye sikkerhet. Flere revisjoner fra uavhengige firmaer er bedre enn en. Bugbelønningsprogrammer er et godt tegn fordi de skaper løpende insentiv for hvitehatt-forskere til å finne problemer før angripere gjør det.
Forstå hvem som holder admin-nøklene. Hvis en multisig med tre underskrivere kontrollerer muligheten til å oppgradere kontraktene, er det en meningsfull sentraliseringsrisiko. Hvis disse nøklene sitter bak en timelock som gir brukere 48 timer til å eksittere før endringene trer i kraft, er det et bedre design.
Vær forsiktig med forks. Når et team kopierer en annen protokolls kode og lanserer en ny versjon, endrer de ofte biter uten å fullt ut forstå sikkerhetsplikter. Noen av de verste utnyttelsene har rammet dårlig utførte forks av ellers sikre protokoller.
Diversifiser på tvers av protokoller. Den samme logikken som gjelder for ikke å holde alle pengene dine i en bank, gjelder her. Hvis en protokoll du bruker blir utnyttet, er eksponeringen begrenset til en brøkdel av porteføljen din, et overlevelsestap. Konsentrasjon er det ikke.
DeFi-sikkerhet forbedres. Formell verifikasjonsverktøy, mer sofistikert revisjonspraksis, og tiden-testet kodebaser som Uniswap og Aave har bevist at godt bygde kontrakter kan sikre milliarder av dollar over år uten hendelser. Men grensen er alltid rotete, og ny kode bærer ny risiko. Protokollene som tilbyr de høyeste avkastningene, er ofte de minst testet av tid og antagonistiske forhold. Det er ikke en tilfeldighet.
Leter du etter kryptoplatformer, børser og DeFi-apper? Bla gjennom vår kuraterte katalog: