Tänä viikonloppuna hyökkääjä vei 186,4 miljoonaa ZEAL-tokenia ja 54,4 miljardia NACHO-tokenia Kaspa KRC-20 -siltalompakosta ilman sen salaisinta avainta, kierrätti tokenit sitten toisen kerroksen (L2) verkkojen kautta ja myi ne likviditeettipooliin. Outoa tässä on se, että Kaspaa itseään ei hakkeroitu. Viisi kelvollista tapahtumaa huijasivat off-chain-indeksoijaa tunnistamaan siirtoja, joita kukaan ei ollut todellisuudessa allekirjoittanut, minkä seurauksena sillatut tokenit jäivät ilman vakuutta ja joistakin pooleista katosi jopa 99,6 % niiden KAS-puolen arvosta.
Kasplex KRC-20 -indeksointiohjelman Signature-ohitus tyhjentää kaksi token-poolia

Tärkeimmät johtopäätökset
- Hyökkääjä siirsi 54,4 miljardia NACHO:ta ilman sillan lompakon yksityistä avainta.
- Zealous Swap -poolit menettivät 94–99,6 % KAS-puolen arvostaan väärennettyjen siirtojen jälkeen.
- Igra keskeytti tärkeimmät ulosmenot, kun KRC-20-operaattorit valmistautuvat korjaamaan ja indeksoimaan järjestelmän uudelleen.
Viisi siirtoa, ei yksityistä avainta
Yksityisen avaimen on tarkoitus olla raja kryptovaluutan omistamisen ja pelkän sijainnin tietämisen välillä. 20. syyskuuta joku löysi tavan kiertää tämän oletuksen KRC-20-tokenien osalta rikkomatta lainkaan Kaspa-perusketjua.
Hyökkääjä siirsi 186 425 259 ZEAL-tokenia ja 54 397 983 246 NACHO-tokenia sillan säilytysosoitteesta, vaikka hänellä ei ollut hallussaan sen yksityistä avainta. Nämä tokenit lähetettiin sitten takaisin samaan säilytysosoitteeseen tavallisina sillan talletuksina, lyötiin Igra Labsin EVM-kerroksessa ja Kasplex L2:ssa sekä kaadettiin Zealous Swapin likviditeettipooliin.
Kun tilanne oli rauhoittunut, hyökkääjän L2-tason ZEAL- ja NACHO-saldot olivat tyhjät, kun taas vaikutuksen kohteeksi joutuneet likviditeettipoolit olivat menettäneet 94–99,6 % KAS-puolen arvostaan. Tässä on juju: Kaspan kerros yksi (L1) toimi täsmälleen niin kuin sen piti.
Tyhjä allekirjoitus, joka silti hyväksyttiin
KRC-20-tokenien omistusoikeutta ei valvota suoraan Kaspa-konsensuksen avulla. Token-ohjeet sisältyvät Kaspa-transaktioihin, kun taas ketjun ulkopuolinen Kasplex-indeksoija lukee nämä ohjeet ja määrittää, kuka omistaa mitäkin. Normaalisti KRC-20-siirto sisältää julkisen avaimen, token-ohjeet ja kelvollisen allekirjoituksen. Hyökkääjä säilytti tämän tutun rakenteen, mutta toimitti tyhjän allekirjoituksen ja lisäsi OP_NOT-koodin OP_ENDIF:n jälkeen.

Tyhjä allekirjoitus saa OP_CHECKSIG:n palauttamaan arvon false sen sijaan, että se keskeyttäisi transaktion kokonaan. Lisätty OP_NOT käänsi tuloksen takaisin arvoksi true, jolloin Kaspa piti transaktiota kelvollisena. Konsensuskerroksessa mikään ei mennyt pieleen. Indeksoija oli toinen juttu. Se tunnisti KRC-20-kirjekuoren, mutta ei vaatinut, että skripti vastaisi tarkalleen kanonista muotoa. Sen seurauksena se hyväksyi väärennetyn siirron lailliseksi. Kasplexin oma API palautti jopa opAccept: 1 -arvon ensimmäisessä väärennetyssä ZEAL-transaktiossa.
Kuka tahansa olisi voinut luoda väärennöksen
Pahin käänne oli se, että hyökkääjän ei tarvinnut löytää mitään piilotettuja tunnistetietoja. Tavallinen Kaspa-osoite paljastaa julkisen avaimen, jota tarvitaan väärennetyn KRC-20-operaation rakentamiseen. Tämä tarkoittaa, että tokenien siirtäminen toiseen osoitteeseen ei ratkaise perimmäistä ongelmaa. Ennen kuin indeksoija on korjattu ja sen historia indeksoitu uudelleen, samaa haavoittuvuutta voidaan teoriassa käyttää KRC-20-saldojen vastaan muuallakin.
ZEAL- ja NACHO-siirrot väärennettiin viidellä transaktiolla. Sen sijaan yhdeksän pientä yhden yksikön nostoa oli aidosti allekirjoitettu säilytyspalvelun toimesta, ja ne näyttävät olleen koe-tapahtumia, joilla testattiin, toimiiko poistumisreitti. Mielenkiintoista on, että lailliset transaktiot olivat juuri niitä pieniä. Säilytyslompakossa oli noin 50 muuta KRC-20-tokenia. Hyökkääjä valitsi niistä kaksi.
Tokenit ovat yhä olemassa, mutta niiden taustalla oleva varallisuus puuttuu
Sunnuntaiaamuna Igra kertoi, että säilytyslompakon koko ZEAL- ja NACHO-omaisuus oli viety, jolloin Layer 2 -verkkoihin jäi 97 651 212 ZEALia ja 42 570 879 908 NACHOa ilman täyttä L1-vakuutta. Hyökkääjällä oli edelleen hallussaan 4,5 miljardia NACHO:ta L1:llä.
Igra keskeytti iKAS-nostot Kaspa L1:een ja Hyperlane-siirrot, samalla kun käyttäjiä varoitettiin KRC-20-tokenien siirtämisestä, ZEAL- tai NACHO-tokenien ostamisesta L2:n hajautetuilla pörsseillä (DEX) tai likviditeetin lisäämisestä kyseessä oleviin pooleihin. Alkuperäiset KAS-tokenit, Kaspa-konsensus ja Igra-varat, jotka eivät olleet silta-KRC-20-tokeneita, kuvattiin vahingoittumattomiksi.
Pelkästään ohjelmiston korjaaminen ei riitä siivoamaan sotkua. Zealous Swapin mukaan operaattoreiden on korjattava indeksoija ja indeksoitava sen historia uudelleen hylkäämällä tyhjät allekirjoitukset, virheelliset tunnisteet ja OP_ENDIF:n jälkeen jatkuvat skriptit. Nacho the Kat puolestaan kertoo, että yhteisö aikoo siirtyä KCC-20-standardiin, joka on suunniteltu sijoittamaan tokenien säännöt verkoston itse valvomille skripteille.
Ongelma seuraa viime viikkojen lukuisia haavoittuvuuksia, bugeja, hakkerointeja ja tietovuotoja. Lauantaina Lightning Networkin säilytys- ja ei-säilytysinfrastruktuurin tarjoaja Blink Wallet paljasti, että ”muutamia kymmeniä” säilytystilejä oli tyhjennetty. Myös kyberturvallisuusyritys DCENT havaitsi tällä viikolla, että varoja oli siirretty DCENT App Wallets -lompakoista. Tämä tapahtui samaan aikaan, kun kyberturvallisuusuhkat ovat lisääntyneet, ja jotkut epäilevät tekoälyn avustavan tätä hyökkäysten aaltoa.
Tämä artikkeli on käännetty englannista tekoälyn avulla. Alkuperäinen englanninkielinen versio on auktoritatiivinen lähde; automaattiset käännökset voivat sisältää epätarkkuuksia, erityisesti oikeudellisessa ja sääntelyyn liittyvässä terminologiassa.











