Hyökkäys Kaspa KRC-20 -silta-lompakkoon
Tänä viikonloppuna hyökkääjä siirsi 186,4 miljoonaa ZEAL:ia ja 54,4 miljardia NACHO:a Kaspa KRC-20 -silta-lompakosta ilman, että hänellä oli sen yksityistä avainta. Hän kierrätti tokenit kerroksessa kaksi (L2) ja myi ne likviditeettipooliin. Outoa tässä on se, että Kaspa itse ei ollut hakkeroitu.
Siirtojen huijaus ja seuraukset
Viisi voimassa olevaa siirtoa huijasi off-chain -indeksoijaa tunnistamaan siirtoja, joita kukaan ei ollut oikeasti allekirjoittanut, jättäen siltojen tokenit ilman katetta ja jotkut poolit menettivät jopa 99,6 % KAS-puolen arvostaan. Yksityisen avaimen pitäisi olla raja kryptovaluutan omistamisen ja vain sen sijainnin tietämisen välillä.
20. syyskuuta joku löysi keinon kiertää tämä oletus KRC-20 tokenien osalta ilman, että Kaspan perusketjua rikottiin lainkaan.
Hyökkääjä siirsi 186,425,259 ZEAL:ia ja 54,397,983,246 NACHO:a silta-asiakirjalta, vaikka hän ei hallinnut sen yksityistä avainta. Nämä tokenit lähetettiin sitten takaisin samaan asiakirjaan tavallisina silta-talletuksina, jotka lyötiin Igra Labsin EVM-kerroksessa ja Kasplex L2:ssa, ja dumpattiin Zealous Swap -likviditeettipooliin.
Kaspan kerros ja indeksoijan rooli
Kun pöly asettui, hyökkääjän L2 ZEAL- ja NACHO-saldot olivat tyhjät, kun taas vaikuttaneet poolit olivat menettäneet 94 % – 99,6 % KAS-puolen arvostaan. Tässä on koukku: Kaspan kerros yksi (L1) teki juuri sen, mitä sen piti tehdä. KRC-20 tokenin omistamista ei valvota suoraan Kaspa-konsensuksen kautta.
Token-ohjeet kulkevat Kaspa-siirtojen mukana, kun taas off-chain Kasplex -indeksoija lukee näitä ohjeita ja määrittää, kuka omistaa mitä. Normaalisti KRC-20 siirto sisältää julkisen avaimen, token-ohjeet ja voimassa olevan allekirjoituksen. Hyökkääjä piti tämän tutun rakenteen, mutta toimitti tyhjän allekirjoituksen ja lisäsi OP_NOT:n OP_ENDIF:n jälkeen.
Tyhjät allekirjoitukset saavat OP_CHECKSIG:n palauttamaan väärin sen sijaan, että ne tappaisivat siirron suoraan.
Lisä OP_NOT käänsi tuloksen takaisin todeksi, jättäen Kaspan voimassa olevaan siirtoon. Mikään ei ollut mennyt pieleen konsensuskerroksessa. Indeksoija oli toinen tarina. Se tunnisti KRC-20 -kuoren, mutta ei vaatinut skriptin vastaavan tarkasti kanonista muotoa. Se myönsi siten väärennetyn siirron lailliseksi.
Yhteisön reaktiot ja tulevaisuuden suunnitelmat
Kamalin käänne oli se, että hyökkääjän ei tarvinnut löytää mitään piilotettua tunnistetta. Tavanomainen Kaspa-osoite paljastaa julkisen avaimen, jota tarvitaan väärennetyn KRC-20 -toiminnan rakentamiseen. Tämä tarkoittaa, että tokenien siirtäminen toiseen osoitteeseen ei ratkaise perusongelmaa.
Kunnes indeksoija on korjattu ja sen historia on uudelleenindeksoitu, sama vika voidaan teoreettisesti käyttää KRC-20 saldoja vastaan muualla. Viisi siirtoa väärennettiin ZEAL- ja NACHO-siirroissa. Yhdeksän pientä yhden yksikön nostoa oli sen sijaan todella allekirjoitettu asiakirjalla, ja vaikuttaa siltä, että ne olivat kokeiluja, joilla testattiin, toimiiko poistumistie.
Kiinnostavaa on, että lailliset siirrot olivat pieniä. Asiakirjalompakossa oli noin 50 muuta KRC-20 tokenia. Hyökkääjä valitsi kaksi.
Sunnuntaiaamuna Igra ilmoitti, että asiakirjalompakon koko ZEAL- ja NACHO-omistus oli viety, jättäen 97,651,212 ZEAL:ia ja 42,570,879,908 NACHO:a kerrokselle 2 ilman täyttä L1-katetta. Toinen 4,5 miljardia NACHO:a jäi hyökkääjälle L1:lle.
Igra keskeytti iKAS-poistot Kaspa L1:stä ja Hyperlane-siirrot, kun käyttäjiä varoitettiin KRC-20 tokenien siltaamisesta, ZEAL:n tai NACHO:n ostamisesta L2 hajautetuilla pörsseillä (DEX) tai likviditeetin lisäämisestä vaikuttaneisiin pooleihin.
Ongelmat jatkuvat
Natiivista KAS:ia, Kaspa-konsensusta ja Igra-varoista, jotka eivät olleet siltaamattomia KRC-20 tokenia, kuvattiin koskemattomiksi. Ohjelmiston korjaaminen yksin ei puhdista sotkua. Zealous Swap sanoo, että operaattoreiden on korjattava indeksoija ja uudelleenindeksoitava sen historia, hyläten tyhjät allekirjoitukset, väärinmuotoillut tunnisteet ja skriptit, jotka jatkuvat OP_ENDIF:n jälkeen.
Nacho the Kat puolestaan sanoo, että yhteisö aikoo siirtyä KCC-20:een, standardiin, joka on suunniteltu asettamaan token-säännöt skripteihin, joita verkko itse valvoo. Ongelma seuraa useita hyökkäyksiä, bugeja, hakkereita ja tietomurtoja viimeisten viikkojen aikana.
Lauantaina Lightning Networkin säilytyspalveluiden ja ei-säilytyspalveluiden tarjoaja Blink Wallet paljasti, että ”muutama kymmenen” säilytystiliä oli tyhjennetty. Kyberturvallisuusyritys DCENT näki DCENT App Walletien olevan tyhjennetty tällä viikolla myös. Aikataulu osuu aikaan, jolloin kyberturvallisuus hyökkäykset ovat lisääntyneet, ja jotkut epäilevät, että tekoäly auttaa tätä hyökkääjien aaltoa.