ABT blog

A
A Wormhole-támadás / The $324 million bug / Der 321-Millionen-Dollar-Bug

Szerző
Balogh Gábor
Szenior tanácsadó, kockázatmenedzsment
[email protected]

A Wormhole-támadás

Február elején a kriptovalutákra szakosodott Wormhole-t támadás érte, mely során a hackerek 324 millió USD értékű ETH-t tulajdonítottak el. Mi lehetett az oka, hogy sikerrel jártak? A válasz egészen megdöbbentő.

A 324 millió dolláros kódhiba

Február elején a legtöbb hírportálon megjelent a hír, hogy a kriptovaluták átváltására szakosodott Wormhole Portal-t hackertámadás érte, mely során a hackerek 120.000 ETH-t (Ether) tulajdonítottak el, ez akkori áron 324 millió USD, most egy héttel később pedig már, az ETH dollárral szembeni erősödése miatt, megközelítőleg 390 millió amerikai dollárt ér, ami nagyjából 120 millárd! forint. Jogosan merül fel a kérdés, hogy mi okozhatott egy ilyen volumenű lopást, a válasz elsőre megdöbbentő és elgondolkodtató is, egy egyszerű if() függvény, pontosabban annak hiánya a kódban.

De mi is az a Wormhole és hogyan működik?

Ahhoz, hogy megértsük a támadás hátterét, kicsit ki kell tekintenünk a blokkláncokra és a kriptovaluták működésére. Napjainkban már rengeteg kriptovaluta létezik, azonban nincs minden valutának különböző blokklánca, hanem közös blokkláncokat használnak. Amíg a kriptovaluták száma már 10.000 körül van jelen pillanatban, addig a publikus blokkláncok száma 900 körül mozog, közöttük is a legnagyobbak az Ethereum (ETH), Solana (SOL), Polkadot (DOT), Cardano (ADA). Az azonos blokkláncon lévő valuták átváltása egyszerűbb folyamat, azonban a különböző blokkláncok közötti átváltást is meg kell oldani valahogy, erre jöttek létre az úgynevezett bridge-k (hidak).

A Wormhole Portal az egyik legnépszerűbb ilyen bridge, ahol a különböző blokkláncok közötti tranzakciókat lehet végrehajtani és átváltani a valutákat. Az átváltás során a forrás blokkláncon a bridge leköti egy smart contract-ba az átküldendő kriptovaluta mennyiséget és úgynevezett wrapped (csomagolt) tokent generál belőle a cél blokkláncon, ugyanis ezek a tokenek reprezentálják a más blokkláncon lévő valutákat az adott blokkláncon, esetünkben például a Solana láncon az ETH token formájában jelenik meg. A folyamatért az úgynevezett guardian-ek (őrszemek) felelősek, akik egymástól függetlenül validálják a folyamat lépéseit. Ahhoz, hogy a cél blokkláncon megjelenjen a token a guardian-ek minimum 2/3-adának megerősítése szükséges.

A gyenge pont

A hackerek a fent említett guardian-ek által küldött megerősítő üzeneteket használták a lopás végrehajtására. A hackerek rájöttek, hogy tudnak olyan üzeneteket generálni a Solana blokklánc számára, melyek át tudják ugrani az aláírás ellenőrzést és úgy tűnnek, mint amik már jóvá lettek hagyva korábban. Így egy korábbi sikeres tranzakció kódrészletét kihasználva olyan fals üzeneteket generáltak a Solana blokklánc számára, amely azt erősíti meg, hogy az Ethereum láncon le lett kötve 120.000 ETH, így a Solana láncon generált számukra 120.000 wrapped ETH tokent. Ami a legmegdöbbentőbb a történetben, hogy az egész hibát egy egyszerű 2 soros if() függvény hiánya okozta a kódban.

A dolog érdekessége, hogy egy javítás indirekt módon orvosolta volna ezt a hibát is, már elkészült a kód legújabb verziója benne a javítással és 2022. január 13.-án ki is került a nyilvános repository-ba, hogy auditálható legyen a következő release előtt. Könnyen elképzelhető, hogy a hackerek a frissítés alapján találták meg a hibát, amit aztán kihasználtak, de az is lehet, hogy már korábban ismerték ezt a sérülékenységet és gyorsan ki akarták használni, mielőtt élesbe megy a javítás.

A „bűnös” függvény üres helye a régi kódban és a javított új kód:

Forrás: Check instructions sysvar · certusone/wormhole@e8b9181 · GitHub

A támadás utóélete

A hackerek fogták a 120.000 wrapped ETH tokent, majd már teljesen legális módon a nagy részét visszaváltották ETH-ra és felszívódtak az összeggel. A Wormhole javította a problémát, tovább folytatja működését és 10 millió USD-t ajánlott fel a hackereknek és teljes mentességet, ha visszaszolgáltatják az ellopott összeget. A JumpCrypto nevű szervezet, aki a kripto előretörését és fejlődését támogatja kifizette a 120.000 ETH veszteséget, ezzel biztosítva, hogy ne legyen hiány a rendszerben.

Valószínűleg nem ez volt az utolsó támadás a kripto-világ ellen. Egyre nagyobb figyelmet kapnak a kriptovaluták és blokkláncok, mert egyre több és több pénz áramlik a szegmensbe, így a hackerek figyelmét is egyre jobban felkelti és megéri nekik erre a piacra koncentrálni. Egyes források szerint csak 2021-ben 2,2 milliárd USD tulajdonítottak el DeFi (decentralized finance) protokollokon keresztül! Így, ha Ön is blokklánc alapú megoldást használ vagy annak bevezetését fontolgatja, a blokklánc minden előnye mellett vegye figyelembe annak sérülékenységeit is.

Hogy tudunk segíteni Önnek?

Kidolgoztunk egy smart contract audit módszertant, amely az OWASP szabványon alapulva a fejlesztésétől kezdve a működés minden fázisáig lefedi a blokklánc alapú rendszerek működését, manuális ellenőrzések és különböző elemzőszoftverek segítségével. A smart contract auditról egy korábbi bejegyzésünkben részletesen olvashat: Smart Contract Audit - ABT Treuhand Csoport.

Megjelent: 2022. február 17. | Témakör: IT biztonságIT biztonság

A fenti összefoglaló tájékoztatás és figyelemfelhívás céljából készült. Bármilyen ebből következő döntés előtt javasoljuk, hogy konzultáljon szakértőinkkel.

Az ABT Treuhand Csoport 2005 óta a NEXIA International tagja. A Nexia International a világ több mint 100 országában működő mintegy 320 független adótanácsadó és könyvvizsgáló cég szaktudását és tapasztalatát egyesítő, 1971 óta létező hálózat.