Angrep på Kaspa KRC-20 Bro-Lommebok
Denne helgen klarte en angriper å trekke ut 186,4 millioner ZEAL og 54,4 milliarder NACHO fra en Kaspa KRC-20 bro-lommebok uten å ha tilgang til den private nøkkelen. Angriperen resirkulerte deretter tokenene gjennom lag to (L2) nettverk og solgte dem i likviditetspooler. Det merkelige er at Kaspa selv ikke ble hacket.
Hvordan Angrepet Fant Sted
Fem gyldige transaksjoner lurte en off-chain indexer til å gjenkjenne overføringer som ingen faktisk hadde signert, noe som etterlot broede tokens uten dekning og noen pooler stripped for så mye som 99,6 % av sin KAS-sideverdi. En privat nøkkel skal være grensen mellom å eie kryptovaluta og bare vite hvor den befinner seg. Den 20. september fant noen en måte å omgå denne antagelsen for KRC-20 tokens uten å bryte Kaspa sin basiskjede.
«Angriperen flyttet 186,425,259 ZEAL og 54,397,983,246 NACHO fra en bro-forvaringsadresse, selv om de ikke kontrollerte den private nøkkelen.»
Tokenene ble deretter sendt tilbake til den samme forvaringsadressen som vanlige bro-innskudd, preget på Igra Labs’ EVM-lag og Kasplex L2, og dumpet inn i Zealous Swap likviditetspooler. Når støvet la seg, var angriperens L2 ZEAL og NACHO-saldoer tomme, mens berørte pooler hadde tapt mellom 94 % og 99,6 % av sin KAS-sideverdi.
Teknisk Forklaring
Kaspa sitt lag én (L1) gjorde akkurat det det skulle gjøre. KRC-20 token-eierskap håndheves ikke direkte av Kaspa-konsensus. Token-instruksjoner ligger inne i Kaspa-transaksjoner, mens en off-chain Kasplex indexer leser disse instruksjonene og bestemmer hvem som eier hva. Normalt inneholder en KRC-20-overføring en offentlig nøkkel, token-instruksjoner og en gyldig signatur.
Angriperen beholdt den kjente strukturen, men leverte en tom signatur og la til en OP_NOT etter OP_ENDIF. En tom signatur får OP_CHECKSIG til å returnere falsk i stedet for å avvise transaksjonen umiddelbart. Den ekstra OP_NOT snudde resultatet tilbake til sant, noe som etterlot Kaspa med en gyldig transaksjon. Ingenting hadde gått av sporet på konsensuslaget. Indexeren var en annen historie.
Konsekvenser og Fremtidige Tiltak
Den gjenkjente KRC-20-konvolutten, men krevde ikke at skriptet skulle matche det kanoniske formatet nøyaktig. Den krediterte derfor den forfalskede overføringen som legitim. Kasplex sin egen API returnerte til og med opAccept: 1 på den første forfalskede ZEAL-transaksjonen.
Den mest ubehagelige vrien var at angriperen ikke trengte å oppdage noen skjult legitimasjon. En standard Kaspa-adresse eksponerer den offentlige nøkkelen som trengs for å konstruere den forfalskede KRC-20-operasjonen. Det betyr at flytting av tokenene til en annen adresse ikke løser det underliggende problemet.
«Inntil indexeren er fikset og dens historie reindeksert, kan den samme feilen teoretisk brukes mot KRC-20-saldoer andre steder.»
Fem transaksjoner forfalsket ZEAL- og NACHO-overføringene. Ni små uttak på én enhet, derimot, var genuint signert av forvaring og ser ut til å ha vært prøver som testet om utgangsveien fungerte. Interessant nok var de legitime transaksjonene de små. Forvaringslommeboken hadde omtrent 50 andre KRC-20 tokens. Angriperen valgte to.
Søndag morgen sa Igra at hele forvaringslommebokens ZEAL- og NACHO-beholdninger var tatt, og etterlot 97,651,212 ZEAL og 42,570,879,908 NACHO på lag 2-nettverket uten full L1-dekning. Ytterligere 4,5 milliarder NACHO forble med angriperen på L1.
Igra stoppet iKAS-utganger til Kaspa L1 og Hyperlane-overføringer, mens brukere ble advart mot å bro KRC-20 tokens, kjøpe ZEAL eller NACHO på L2 desentraliserte børser (DEXs), eller legge til likviditet til berørte pooler. Native KAS, Kaspa-konsensus og Igra-eiendeler som ikke var broede KRC-20 tokens ble beskrevet som upåvirket.
Å fikse programvaren alene vil ikke rydde opp i rotet. Zealous Swap sier at operatører må fikse indexeren og reindeksere dens historie, avvise tomme signaturer, feilformaterte tagger og skript som fortsetter utover OP_ENDIF.
Nacho the Kat, i mellomtiden, sier at fellesskapet har til hensikt å bevege seg mot KCC-20, en standard designet for å sette token-regler inn i skript håndhevet av nettverket selv. Problemet følger en rekke utnyttelser, feil, hacks og datainnbrudd de siste ukene. På lørdag avslørte Lightning Network forvarings- og ikke-forvaringsinfrastrukturleverandøren Blink Wallet at «noen dusin» forvaringskontoer ble tømt. Cybersikkerhetsselskapet DCENT så DCENT App Wallets bli tappet denne uken også. Timingen kommer ettersom cybersikkerhetsangrep har økt, og noen mistenker at AI hjelper denne bølgen av utnyttelser.