Bitcoin.com News
Drivs av

Kasplex KRC-20 Indexer Signature tömmer två tokenpooler via en bypass

I helgen lyckades en angripare ta ut 186,4 miljoner ZEAL och 54,4 miljarder NACHO från en Kaspa KRC-20-bryggplånbok utan att ha tillgång till den privata nyckeln. Därefter återanvände angriparen tokens via lager 2-nätverk (L2) och sålde dem i likviditetspooler. Det märkliga är att Kaspa i sig inte blev hackat. Fem giltiga transaktioner lurade en off-chain-indexerare att godkänna överföringar som ingen egentligen hade signerat, vilket ledde till att de överförda tokens saknade täckning och att vissa pooler förlorade så mycket som 99,6 % av sitt värde på KAS-sidan.

SKRIVEN AV
DELA
Kasplex KRC-20 Indexer Signature tömmer två tokenpooler via en bypass

Viktiga slutsatser

  • En angripare flyttade 54,4 miljarder NACHO utan att inneha bryggplånbokens privata nyckel.
  • Zealous Swap-poolerna förlorade mellan 94 % och 99,6 % av sitt värde på KAS-sidan efter de förfalskade överföringarna.
  • Igra pausade viktiga uttag medan KRC-20-operatörerna förbereder sig för att åtgärda och indexera om systemet.

Fem transaktioner, ingen privat nyckel

En privat nyckel ska utgöra gränsen mellan att äga kryptovaluta och att bara veta var den finns. Den 20 september hittade någon ett sätt att kringgå detta antagande för KRC-20-tokens utan att alls bryta Kaspas baskedja.

Angriparen flyttade 186 425 259 ZEAL och 54 397 983 246 NACHO från en förvaringsadress för bryggan, trots att denne inte kontrollerade dess privata nyckel. Dessa tokens skickades sedan tillbaka till samma förvaringsadress som vanliga insättningar via bryggan, präglades på Igra Labs EVM-lager och Kasplex L2, och dumpades i Zealous Swaps likviditetspooler.

När dammet hade lagt sig var angriparens L2-saldon för ZEAL och NACHO tomma, medan de drabbade poolerna hade förlorat mellan 94 % och 99,6 % av sitt värde på KAS-sidan. Här är haken: Kaspa:s lager ett (L1) gjorde exakt vad det var tänkt att göra.

En tom signatur som ändå godkändes

Äganderätten till KRC-20-tokens regleras inte direkt av Kaspas konsensus. Tokeninstruktionerna ingår i Kaspa-transaktionerna, medan en off-chain Kasplex-indexerare läser dessa instruktioner och avgör vem som äger vad. Normalt innehåller en KRC-20-överföring en offentlig nyckel, tokeninstruktioner och en giltig signatur. Angriparen behöll den välbekanta strukturen men angav en tom signatur och lade till ett OP_NOT efter OP_ENDIF.

X screenshot
Bildkälla: X

En tom signatur gör att OP_CHECKSIG returnerar ”false” istället för att omedelbart stoppa transaktionen. Den extra OP_NOT-koden vände tillbaka resultatet till ”true”, vilket innebar att Kaspa betraktade transaktionen som giltig. Inget hade gått snett på konsensusnivån. Indexeraren var en annan historia. Den kände igen KRC-20-kuvertet men krävde inte att skriptet exakt skulle stämma överens med det kanoniska formatet. Följaktligen godkände den den förfalskade överföringen som legitim. Kasplex eget API returnerade till och med opAccept: 1 vid den första förfalskade ZEAL-transaktionen.

Vem som helst kunde skapa förfalskningen

Det värsta var att angriparen inte behövde upptäcka några dolda inloggningsuppgifter. En vanlig Kaspa-adress avslöjar den publika nyckel som behövs för att konstruera den förfalskade KRC-20-transaktionen. Det innebär att det inte löser det underliggande problemet att flytta token till en annan adress. Tills indexeraren har uppdaterats och dess historik har indexerats om kan samma sårbarhet teoretiskt sett utnyttjas mot KRC-20-saldon på andra ställen.

Fem transaktioner förfalskade ZEAL- och NACHO-överföringarna. Däremot var nio små uttag på en enhet äkta och signerade av förvararen, och verkar ha varit tester för att se om utgångsvägen fungerade. Intressant nog var det de små transaktionerna som var äkta. Förvararplånboken innehöll ungefär 50 andra KRC-20-tokens. Angriparen valde ut två.

Tokens finns fortfarande kvar, men säkerheten saknas

På söndagsmorgonen uppgav Igra att hela förvaringsplånbokens innehav av ZEAL och NACHO hade stulits, vilket lämnade 97 651 212 ZEAL och 42 570 879 908 NACHO kvar i Layer 2-nätverken utan fullständig L1-täckning. Ytterligare 4,5 miljarder NACHO fanns kvar hos angriparen på L1.

Igra pausade uttag av iKAS till Kaspa L1 och överföringar via Hyperlane, samtidigt som användarna varnades för att brygga KRC-20-tokens, köpa ZEAL eller NACHO på decentraliserade börser (DEX) på L2 eller tillföra likviditet till drabbade pooler. Inbyggda KAS, Kaspa-konsensus och Igra-tillgångar som inte var överbryggade KRC-20-tokens beskrevs som opåverkade.

Att bara åtgärda programvaran räcker inte för att städa upp röran. Zealous Swap säger att operatörerna måste patcha indexeraren och omindexera dess historik, samt avvisa tomma signaturer, felaktigt formaterade taggar och skript som fortsätter bortom OP_ENDIF. Nacho the Kat säger samtidigt att gemenskapen avser att gå över till KCC-20, en standard utformad för att lägga in tokenregler i skript som verkställs av nätverket självt.

Problemet följer på en rad säkerhetsluckor, buggar, hackerattacker och dataintrång under de senaste veckorna. I lördags avslöjade Blink Wallet, en leverantör av infrastruktur för Lightning Network med och utan förvaring, att ”några dussin” konton med förvaring hade tömts. Cybersäkerhetsföretaget DCENT upplevde också att medel från DCENT App Wallets förskingrades denna vecka. Detta inträffar samtidigt som cybersäkerhetsattackerna har ökat, och vissa misstänker att AI bidrar till denna våg av utnyttjare.

Den här artikeln har översatts från engelska med hjälp av AI. Den engelska originalversionen är den auktoritativa källan; automatiska översättningar kan innehålla felaktigheter, särskilt i juridisk och regulatorisk terminologi.