Antifragility: What doesn’t kill me …

For et par uger siden stjal hackere omkring $320M fra Wormhole (en protokol, der bygger broer mellem blockchains og deres DeFi-økosystemer), og det er ikke første gang, at den slags begivenheder finder sted. Fælles for dem alle er, at de løser problemet (hvis de overlever) – og på den måde bliver mere modstandsdygtige over tid.

“Antifragility is beyond resilience or robustness. The resilient resists shocks and stays the same; the antifragile gets better.”

Nassim Taleb

Til alle uden for cryptoverdenen lyder det nok som en katastrofal hændelse, der burde skræmme folk fra at bruge Wormhole eller bare crypto helt generelt. Hvornår er din bank f.eks. blevet hacket eller røvet for $320,000,000?

Men for folk i cryptoverdenen er disse hacks opfattet meget anderledes. På en mærkelig måde ender det ofte med at være en god ting, fordi de blotlægger underliggende problemer med protokollen, der kan fixes og dermed styrke protokollen på sigt.

Det er heller ikke atypisk, at hackerne betaler pengene tilbage i bytte for en (noget mindre) “bug bounty”. Der er en hel industri omkring denne såkaldte white hat hacking.

Web3 hacks vs Web 2.0 hacks

Bliver almindelige web 2.0-virksomheder også hacket? Øh, ja. De kaster om sig med dine personlige oplysninger som ris til et bryllup. Prøv din email på Have I Been Pwned eller opret en konto på SpyCloud, hvis du gerne vil være mere bevidst om, hvor mange gange din email og evt. kodeord er blevet lækket.

Mange gange involverer disse hacks omfattende phishing eller “social engineering”: Hvis du vil se, hvad social engineering er for en størrelse, så se denne video af en hacker, der overtager adgangen til en journalists mobiltelefon på knap 2 minutter.

Data – og adgang til data – er mere centralt kontrolleret i en web 2.0-verden, og individer er typisk den mest sårbare kontaktflade. Hvis du hacker den rigtige person i en organisation, kan du via den person få adgang til data, kontrol, og hvad du ellers behøver.

I cryptoverdenen fungerer tingene lidt anderledes. Alle transaktioner er offentlige. Alle addresser er offentlige. Du kan bruge en anden persons penge, hvis du har deres kreditkortoplysninger, men sådan er det ikke, hvis du har deres offentlige wallet addresse.

Det, der til gengæld er mere interessant, er de tokens, der er lagret i selve applikationerne. Alle DeFi-protokollerne, du har læst om indtil videre, som f.eks. Compound, Yearn, og Alchemix har milliarder af dollars lagret i deres kontrakter.

Derfor hører man ofte disse hacks omtalt som “exploits”: Der er ikke “brudt ind” nogen steder, men i stedet har man formået at udnytte et underliggende problem i koden.

Sjuskefejl

Sjuskefejl er, når du tager din seed phrase – altså den, du fik, da du oprettede din MetaMask wallet – og deler den på din Instagram story.

Det er også, når man laver en protokol som EasyFi, der i bund og grund ikke havde mere sikkerhed end din browser wallet; en hacker fik tilgang til den maskine, hvorpå nøglen var, og så var det slut. For protokoller af den størrelse må det aldrig være “nøgle” i ental, men derimod skulle deres tokens have været på en såkaldt MultiSig-wallet (hvor det kræver mere end en person at godkende en transaktion).

Programmeringsfejl

I sommeren 2021 blev en anden cross-chain protokol, THOR, hacket for ca. $5M, der udnyttede en fejl i koden, som man kan læse mere om på Rekt. Det væsentlige er, at de har været opmærksom på problemet, som man også ser i kommentaren nedenfor: ” // is it important to keep this part outside the above loop … “.

Men det glemte de alt om, så de trykkede “Deploy” og gik ned i fredagsbaren.

Derfor er der nu også en stor industri for “audit”-virksomheder, der efterser smart contract koden og afdækker evt. fejl og mangler, inden de går live. Mange protokoller vil derfor også henvise til disse audits på deres hjemmeside for at bygge tillid.

Det er ikke altid tilstrækkeligt. Rekt’s leaderboard viser meget fint, hvem der evt. har foretaget en audit.

Flash Loans

“Flash loan exploits” udytter ikke en fejl i koden, men i sårbarheden af logikken/tokenomics som kan angribres med en tilstrækkeligt stor mængde midler.

Et “Flash loan” er et DeFi-produkt, hvor du låner en stor mængde token, bruger dem til at gennemføre en handel, og så betale alle de oprindelige tokens tilbage – i den samme transaktion. De bruges ofte som et arbitrageinstrument ift. prisforskelle på diverse cryptobørse.

F.eks. lad os sige, at du lagde mærke til, at DAI koster $1.005 på Uniswap, men kun 0.995$ på SushiSwap. Så kunne du skrive kode, hvor du låner $10M i ETH fra AAVE, derefter bruge de $10M til at købe $10,050,251 DAI fra SUSHI, sælge dem på Uniswap for $10,100,502, og så tilbagebetale de $10M i ETH plus 0.09% i fee ($9,000). I en transaktion har du tjent $91,502. Meget smart.

Ovenstående kaldes flash loan arbitrage, og det er generelt betragtet som en vigtig del af DeFi-økosystemet, siden det hjælper med at holde priserne i tandem på tværs af de forskellige DEXes.

Men flash loans kan også bruges til at lave protokol-exploits.

I tilfældet af Harvest Finance anvendte hackere et $50M flash loan til at manipulere de relative priser af to stablecoins på Curve, hvilket påvirkede de bagvedliggende regnestykker i Harvests vaults. Hver gang de anvendte deres exploit, tjente de ca. $500K

Det gjorde de så 32 gange på 7 minutter og tjente i alt $24M (og de kunne have fortsat, men valgte ikke at gøre – af årsager?)

Anti-skrøbelighed

I en Web2-verden hører vi ofte om disse hacks måneder efter, at de sket, og med begrænset information om, hvordan de skete, og hvordan man vil forhindre lignende læk i fremtiden.

I crypto-verdenen er det umuligt at skjule disse store exploits, idet alle transaktioner er offentlige. Når det sker, så ved alle det.

Folk er typisk også forstående, så længe der er klar kommunikation og en plan for adressere situationen. Typisk vil man gerne se:

  • En anerkendelse af exploitet, og at der sættes en pause for yderligere aktivitetet
  • Hvis muligt, at protokollen betaler folk tilbage med penge fra deres “treasury”
  • At man har fundet og patchet problemet
  • … og at man får foretaget en security audit.

Det kan virke mærkeligt, men en protokol som er blevet exploited en gang før er typisk et tegn på, at den er mindre risikabel at anvende: Det betyder, at hackere allerede har gjort deres bedste for at angribe protokollen, allerede har fundet dens svagheder, og at de nu forhåbentligt er blevet fikset.