Razčlenitev: Kako je heker ukradel 80k ETH iz mostu Solana Wormhole PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Razčlenitev: Kako je heker ukradel 80 ETH z mostu Solana Wormhole

Eden najslabših žaga proti blokovni verigi Solana se je zgodilo v sredo, ko je hekerju uspelo prenesti 80,000 eter (ETH), več kot 214 milijonov dolarjev v trenutku pisanja, iz sistema Solana v blockchain Ethereum prek mostu Wormhole – storitev, ki omogoča prenos sredstva med različnimi verigami blokov.

Razloženo v tvitu navoj po psevdonimnem Twitter profilu pametna naročila, je heker dokončal izkoriščanje s prenosom 80,000 ETH iz pametne pogodbe Wormhole na Ethereum v enem samem transakcija. Kot se je izkazalo, je bila to le zadnja poteza v seriji vdorov, ki so hekerju omogočili krajo sredstev. 

»Čeprav je dramatična, je ta transakcija samo konec zanimive serije dogodkov. Moral sem začeti delati nazaj, da sem ugotovil, kako je to sploh mogoče,« tvita Smartcontracts.

Skrbniki so podpisali lažni prenos

Črvina je tako imenovani most, a pametna pogodba, v tem primeru na Ethereumu, ki zagotavlja način za premikanje kripto sredstev med različnimi verigami blokov. Glede na pametne pogodbe z vidika visoke ravni ima Wormhole posebej niz tako imenovanih varuhov, ki podpisujejo prenose med verigami blokov.

Skrbniki Wormhole so nekako podpisali ta prenos 80,000 ETH, kot da je 100% zakonit.

»Transakcija, ki je potegnila 80,000 ETH je bil pravzaprav napadalec, ki je prenesel 80,000 ETH iz Solane v Ethereum. Prvotno sem mislil, da je pogodba morda napačno potrdila podpise pri prenosu, vendar so bili podpisi [so] popolnoma preverjeni."

Glede na pametne pogodbe je prvi preboj in delna razlaga prišla iz a transakcija na Solani, ki je nekako od nikoder skoval 120,000 “Wormhole ETH”, zavil eter na Solano. Ker je hekerju uspelo kovati Wormhole ETH na Solani, ga je lahko pravilno umaknil nazaj v Ethereum.

"Solana je malo čudna"

Če preučujemo hekerjevo zgodovino transakcij, obstaja transakcija, ki je prišla tik pred kovanjem 120,000 Wormhole ETH. V tem transakcija, heker kuje le 0.1 Wormhole ETH, kot da bi heker funkcijo testiral z majhno količino.

Nadaljnji pregled hekerjeve zgodovine transakcij razkrije, da je heker naredil a depozit 0.1 ETH iz Ethereuma v Solana. Čeprav napadalec ni nakazal ETH depozita v višini 120,000 ETH v pametno pogodbo Wormhole na Ethereumu, je na tem depozitu nekaj zanimivega.

Kot pametna pogodba pojasnjuje v svojem tvitu, so transakcije, ki so kovale Wormhole ETH na Solani, sprožile pametno pogodbo Wormhole funkcija imenovano "popolno_zavito“. Eden od parametrov, ki jih sprejme ta funkcija, je "sporočilo za prenos", v bistvu a Sporočilo podpisana s strani varuhov mostu, ki pravi, kateri žeton kovati in koliko.

»Solana je nekoliko čudna, zato so ti parametri pravzaprav sami pametni pogodbi. Toda pomembno je, kako nastanejo te pogodbe o »prenosnem sporočilu«. Tukaj je transakcija ki je poslal sporočilo o prenosu 0.1 ETH,« tvita Smartcontracts.

Kdo preverja dame?

Ta pogodba "prenos sporočila" je ustvarjena s sprožitvijo a funkcija imenovano "post_vaa“. Najpomembneje je, da post_vaa s preverjanjem podpisov skrbnikov preveri, ali je sporočilo veljavno. Ta del se zdi dovolj razumen, pravi smartcontracts, vendar je ta korak preverjanja podpisa tisti, ki je pokvaril vse.

Funkcija “post_vaa” dejansko ne preverja podpisov. Namesto tega je na tipičen Solanin način druga pametna pogodba, ki se ustvari s klicem »preveri_podpise" funkcija. Eden od vhodi za funkcijo "verify_signatures" je Solana vgrajen "sistemski" program, ki vsebuje različne pripomočke, ki jih pogodba lahko uporablja.

Znotraj "verify_signatures" program Wormhole poskuša preveriti, ali je bila izvedba, ki se je zgodila tik pred sprožitvijo te funkcije, Secp256k1 Izvedena je bila funkcija preverjanja podpisa.

»Ta funkcija preverjanja je vgrajeno orodje, ki naj bi preverjalo, ali so podani podpisi pravilni. Zato je bilo preverjanje podpisa preneseno na ta program. Toda tu se pojavi napaka,« tvita Smartcontracts.

Pogodbe Wormhole so uporabljale to funkcijo load_instruction_at da preverite, ali je bila najprej poklicana funkcija Secp256k1, vendar je bila funkcija load_instruction_at relativno nedavno opuščena, ker ne preveri, ali se izvaja glede na dejanski sistemski naslov!

Igra se je končala

Po pametnih pogodbah naj bi klicatelj zagotovil kot vhod sistemski naslov za program, ki se izvaja, vendar je heker navedel drugačen sistemski naslov.

Tukaj je ta sistemski naslov, ki se uporablja kot vhod za "verify_signatures" za zakoniti depozit v višini 0.1 ETH:

Pravilen vnos sistemskega naslova
Pravilen vnos sistemskega naslova

Toda tukaj je transakcija "verify_signatures" za lažni depozit v višini 120 ETH:

Vnos sistemskega naslova
Napačen vnos sistemskega naslova 

To ni sistemski naslov!

»Z uporabo tega »lažnega« sistemskega programa bi napadalec lahko dejansko lagal o dejstvu, da je bil program za preverjanje podpisa izveden. Podpisov sploh niso preverjali!,« tvita Smartcontracts.

"Po tej točki je bilo tekme konec. Napadalec je dal videti, da so skrbniki podpisali 120 polog v Wormhole na Solani, čeprav tega niso storili. Vse, kar je napadalec moral zdaj narediti, je, da svoj denar za »igranje« uveljavi tako, da ga umakne nazaj v Ethereum. In en umik 80k ETH + 10k ETH kasneje (vse v mostu na Ethereumu), je vse izginilo.«

everdome

Glasilo CryptoSlate

Vsebuje povzetek najpomembnejših dnevnih zgodb v svetu kripto, DeFi, NFT in še več.

Get rob na trgu kriptoasset

Dostopite do več kripto vpogledov in konteksta v vsakem članku kot plačan član CryptoSlate Edge.

Analiza verige

Utrinki cen

Več konteksta

Pridružite se zdaj za 19 USD na mesec Raziščite vse prednosti

Vir: https://cryptoslate.com/breakdown-how-the-hacker-stole-80k-eth-from-the-solana-wormhole-bridge/

Časovni žig:

Več od CryptoSlate