Ethereumkihlveod – miks need sinu rahakotist söövad

Kriitiline turvaoht

Vaata, ethereumkihlveod ei ole mingi väike siseringi, nad on nagu torm, mis lüüab läbi igasugused kaitsemehhanismid.

Üheks peamiseks probleemiks on koodide reentrantsi rünnak – lihtsate sõnadega: suudab leke sama funktsiooni välja kutsuda enne, kui algne tehing on lõpule viidud. Sellega varjatud, aga suruvõimas, riskiga saavad ründajad korra kinni võta miljonid.

Ründemehhanism

Andma sulle pildi: kujuta ette, et sa avad akna, siis kohe avada teine, kolmas… Lõpuks lõhkeb kogu maja. Nii toimib reentrantsi rünnak. Kood, mis ei sulge oma olekut, lubab ründajal korduvalt välja kutsuda samasuguseid makseid.

Ja siin tuleb mängu “gas limit”. Kui ründaja suudab manipuleerida gaasi kulutust, võib ta tehingu katkestada enne, kui õige kontroll toimub. Ühe käigu pealt võid saotada kogu võrgustiku.

Miks koodikõlbulikkus ei kaitse?

Väga peaaegu, et ükski test ei jälgi reentrantsi võimalust, kuni see on juba toimunud. Ja siin on probleemi sügavus: arendajad, kes usuvad, et ethereumkihlveod on vaid haruldane viga, jätavad turvalisuse kontrolli teise taseme.

Vaadates koodi, leiad tihti funktsiooni “withdraw” ilma reentrantsi kaitseta – oh, see on nagu avatud uks, kust vargused võivad sisse pääseda.

Praktilised tagajärjed

Ettekujutus: üks väike viga, miljonid kaotatud tokenid, usaldus langedes. Kriitiline: projektide väärtus kukub, kogukond lahkub. See pole vaid raha; see on maine, see on tulevik.

Ja veel: kihi lõhesüsteemi komplekt, mis on ehitatud teisele kihi peale, võib samuti hävigeeruda. See dominoefekt on täpne, kuid tihti eiratud.

Kiire lahendus

Kasuta “checks-effects-interactions” mustrit kohe. Lõpeta kõik välised kutsub enne oleku muutmist. See väike koodijupp, see võib päästa su projekt.

Ja ära unusta “ReentrancyGuard” teeki, see on nagu õhurõhutuss, mis hoiab rünnakut. Kood, mis on puhas ja testitud, ei pea kunagi näha seda kahjude varjutust.