Tento víkend útočník ukradol 186,4 milióna ZEAL a 54,4 miliardy NACHO z peňaženky mosta Kaspa KRC-20 bez toho, aby mal jej súkromný kľúč, následne tokeny recykloval prostredníctvom sietí druhej vrstvy (L2) a predal ich do likviditných fondov. Zvláštne na tom je, že samotná platforma Kaspa nebola napadnutá. Päť platných transakcií oklamalo off-chain indexer tak, že uznal prevody, ktoré v skutočnosti nikto nepodpísal, čím zostali prepojené tokeny bez krytia a niektoré fondy prišli až o 99,6 % svojej hodnoty na strane KAS.
Indexátor Kasplex KRC-20 obchádza systém podpisov a vyprázdňuje dva fondy tokenov

Kľúčové závery
- Útočník presunul 54,4 miliardy NACHO bez toho, aby mal súkromný kľúč mostovej peňaženky.
- Fondy Zealous Swap stratili po falošných prevodoch 94 % až 99,6 % svojej hodnoty na strane KAS.
- Igra pozastavila kľúčové výbery, zatiaľ čo prevádzkovatelia KRC-20 sa pripravujú na opravu a reindexáciu systému.
Päť transakcií, žiadny súkromný kľúč
Súkromný kľúč má predstavovať hranicu medzi vlastníctvom kryptomien a jednoduchým vedomím, kde sa nachádzajú. 20. septembra niekto našiel spôsob, ako obísť tento predpoklad v prípade tokenov KRC-20 bez toho, aby vôbec narušil základný reťazec Kaspa.
Útočník presunul 186 425 259 ZEAL a 54 397 983 246 NACHO z adresy úschovy mosta, hoci nemal pod kontrolou jej súkromný kľúč. Tieto tokeny boli následne odoslané späť na tú istú úschovnú adresu ako bežné vklady do mostíka, vyrazené na vrstve EVM spoločnosti Igra Labs a na Kasplex L2 a vložené do likviditných fondov Zealous Swap.
Keď sa situácia upokojila, zostatky útočníka v ZEAL a NACHO na L2 boli prázdne, zatiaľ čo postihnuté fondy stratili medzi 94 % a 99,6 % svojej hodnoty na strane KAS. A tu je háčik: vrstva 1 (L1) Kaspa fungovala presne tak, ako mala.
Prázdny podpis, ktorý napriek tomu prešiel
Vlastníctvo tokenov KRC-20 nie je priamo vynucované konsenzom Kaspa. Pokyny týkajúce sa tokenov sú súčasťou transakcií Kaspa, zatiaľ čo off-chain indexátor Kasplex tieto pokyny číta a určuje, kto čo vlastní. Bežne obsahuje prevod KRC-20 verejný kľúč, inštrukcie tokenu a platný podpis. Útočník zachoval túto známu štruktúru, ale poskytol prázdny podpis a za OP_ENDIF pridal OP_NOT.

Prázdny podpis spôsobuje, že OP_CHECKSIG vráti hodnotu „false“ namiesto toho, aby transakciu hneď zrušil. Dodatočný príkaz OP_NOT zmenil tento výsledok späť na „true“, čím Kaspa považovala transakciu za platnú. Na úrovni konsenzu sa nič nezvrtlo. Indexátor bol však iný prípad. Rozpoznal obálku KRC-20, ale nevyžadoval, aby skript presne zodpovedal kanonickému formátu. V dôsledku toho uznal falošný prevod za legitímny. Vlastné API Kasplexu dokonca vrátilo opAccept: 1 pri prvej falošnej transakcii ZEAL.
Falošnú transakciu mohol vytvoriť ktokoľvek
Najhorším zvratom bolo, že útočník nemusel odhaliť žiadne skryté prihlasovacie údaje. Štandardná adresa Kaspa odhaľuje verejný kľúč potrebný na vytvorenie falošnej operácie KRC-20. To znamená, že presun tokenov na inú adresu nevyrieši základný problém. Pokiaľ nebude indexátor opravený a jeho história znovu indexovaná, tú istú chybu je teoreticky možné využiť proti zostatkom KRC-20 aj inde.
Päť transakcií falšovalo prevody ZEAL a NACHO. Naopak, deväť malých výberov po jednej jednotke bolo skutočne podpísaných správcom a zdá sa, že išlo o testy, či úniková cesta funguje. Zaujímavé je, že legitímne transakcie boli práve tie malé. Peňaženka správcu obsahovala približne 50 ďalších tokenov KRC-20. Útočník si vybral dva.
Tokeny sú stále tam, ale krytie už nie
V nedeľu ráno Igra uviedol, že boli odcudzené všetky držby ZEAL a NACHO z úschovnej peňaženky, čím zostalo v sieťach vrstvy 2 97 651 212 ZEAL a 42 570 879 908 NACHO bez plného krytia vo vrstve 1. Ďalších 4,5 miliardy NACHO zostalo u útočníka na L1.
Igra pozastavila výbery z iKAS do Kaspa L1 a prevody cez Hyperlane, pričom používateľov varovala pred premosťovaním tokenov KRC-20, nákupom ZEAL alebo NACHO na decentralizovaných burzách (DEX) na L2 alebo pridávaním likvidity do postihnutých fondov. Nativné aktíva KAS, konsenzus Kaspa a aktíva Igra, ktoré neboli prepojenými tokenmi KRC-20, boli označené za neovplyvnené.
Samotná oprava softvéru nestačí na vyriešenie problému. Zealous Swap uvádza, že prevádzkovatelia musia opraviť indexer a znovu indexovať jeho históriu, pričom musia odmietnuť prázdne podpisy, nesprávne formátované tagy a skripty, ktoré pokračujú za OP_ENDIF. Nacho the Kat medzitým uvádza, že komunita má v úmysle prejsť na KCC-20, štandard navrhnutý tak, aby pravidlá tokenov boli zakomponované do skriptov vynucovaných samotnou sieťou.
Tento problém nasleduje po sérii zneužití, chýb, hackerských útokov a únikov údajov, ku ktorým došlo v priebehu posledných niekoľkých týždňov. V sobotu poskytovateľ infraštruktúry Lightning Network s úschovou aj bez úschovy, Blink Wallet, zverejnil, že bolo vyprázdnených „niekoľko desiatok“ účtov s úschovou. Spoločnosť zaoberajúca sa kyberbezpečnosťou DCENT zaznamenala tento týždeň tiež vyprázdnenie peňaženiek v aplikácii DCENT App Wallets. K tomuto vývoju dochádza v čase, keď sa kyberútoky zintenzívnili, a niektorí podozrievajú, že túto vlnu útočníkov podporuje umelá inteligencia.
Tento článok bol preložený z angličtiny pomocou umelej inteligencie. Pôvodná anglická verzia je autoritatívnym zdrojom; automatické preklady môžu obsahovať nepresnosti, najmä v právnej a regulačnej terminológii.











