Acesta este genul de bug care ține echipele de protocol treji noaptea. Un exploit de 5 milioane de dolari pe ZKSwap, activat de o singură declarație lăsată în locul greșit. Iată o analiză profundă a modului în care s-a întâmplat și cum ar fi putut să o oprească monitorizarea onchain. 🧵
1/ Pe 9 iulie, GMX a fost piratat pentru 42 de milioane de dolari. Dar altceva s-a întâmplat în acea zi și aproape nimeni nu a observat: podul ZKSwap a fost golit în liniște pentru 5 milioane de dolari. Partea interesantă? Nu a fost implicat niciun exploit fantezist. Doar o funcție critică care... nimic.
2/ ZKSwap este un zk-rollup construit pe Ethereum. La fel ca multe rollup-uri, folosește o punte pentru a muta activele între L1 și L2. Ca o garanție, podul include un "Exodus Mode", o modalitate prin care utilizatorii pot recupera fonduri fără a avea nevoie de operator. În teorie, aceasta este o idee grozavă. În practică...
3/ Exodus Mode permite utilizatorilor să dovedească manual că dețin token-uri în ultima stare L2 verificată. Este un mecanism de rezervă: fără încredere, auto-custodie, non-interactiv. Dar implementarea ZKSwap a avut un defect fatal: funcția responsabilă cu verificarea dovezilor nu a verificat nimic. Literalmente.
4/ Iată codul care ar fi trebuit să oprească atacul 👇 La prima vedere, pare un adevărat verificator zk-proof. Dar uitați-vă cu atenție la prima linie: întoarceți adevărat; Asta este. Nimic altceva nu funcționează.
5/ Rezultatul? Fiecare "dovadă" de retragere (oricât de falsă) a trecut validarea. Contractul accepta pretenții arbitrare despre soldurile token-urilor... și le-am creditat ca și cum ar fi fost reale. A transformat un mecanism de rezervă fără încredere într-un robinet nepăzit.
6/ Atacatorul nu a avut nevoie de exploit-uri fanteziste - doar apeluri repetate la exit() cu date inventate. Au ocolit verificările de sold, s-au retras pe mai multe token-uri și au abuzat de logica slabă a anulatorului pentru a evita detectarea. În timp ce contractul spunea: ✅
7/ Acesta nu a fost un caz limită obscur. Aceasta a fost logica de bază pentru recuperarea activelor, lăsată complet deschisă. Și pentru că modul Exodus este rareori declanșat, calea ruptă a trecut neobservată... luni de zile.
8/ Iată ce ar fi trebuit să declanșeze alarmele: • Modul Exodus este declanșat după o lungă perioadă de repaus • Zeci de apeluri de retragere care au loc simultan • Creștere bruscă a soldurilorPentru a retrage modificări Toate acestea erau vizibile și ar fi putut fi oprite cu monitorizarea în timp real pe lanț.
9/ Deci care este lecția? • Codul de urgență este încă codul de producție • Căile de rezervă nu ajută dacă nu funcționează • Monitorizarea în timp real nu este opțională, este esențială pentru supraviețuire
37,85K