이번 주말, 한 공격자가 개인 키를 보유하지 않은 채 Kaspa KRC-20 브리지 지갑에서 1억 8,640만 ZEAL과 544억 NACHO를 빼낸 뒤, 레이어 2(L2) 네트워크를 통해 토큰을 재순환시켜 유동성 풀에 매도했습니다. 이상한 점은 카스파(Kaspa) 자체는 해킹당하지 않았다는 사실입니다. 5건의 유효한 거래가 오프체인 인덱서를 속여, 실제로 아무도 서명하지 않은 이체를 인정하게 만들었고, 이로 인해 브리지된 토큰은 담보가 없는 상태가 되었으며, 일부 풀은 KAS 측 가치의 최대 99.6%까지 소진되었습니다.
Kasplex KRC-20 인덱서 시그니처 우회로, 두 개의 토큰 풀에서 자금을 유출

주요 요점
- 공격자는 브리지 지갑의 개인 키를 보유하지 않은 상태에서 544억 NACHO를 이동시켰습니다.
- 위조된 이체 이후 Zealous Swap 풀들은 KAS 측 가치의 94%에서 99.6%를 잃었습니다.
- KRC-20 운영진이 시스템 패치 및 재색인 작업을 준비하는 동안 Igra는 주요 출금을 일시 중단했습니다.
5건의 거래, 개인 키 없이
개인 키는 암호화폐를 소유하는 것과 단순히 그 위치만 아는 것 사이의 경계선 역할을 해야 합니다. 9월 20일, 누군가는 Kaspa의 베이스 체인을 전혀 훼손하지 않고도 KRC-20 토큰에 대해 이러한 가정을 우회할 방법을 찾아냈습니다.
공격자는 개인 키를 통제하지 못했음에도 불구하고, 브리지 보관 주소에서 186,425,259 ZEAL과 54,397,983,246 NACHO를 이동시켰습니다. 이 토큰들은 이후 일반 브리지 예치금처럼 동일한 보관 주소로 다시 전송된 뒤, Igra Labs의 EVM 레이어와 Kasplex L2에서 발행되어 Zealous Swap 유동성 풀에 쏟아져 들어갔습니다.
사태가 수습될 무렵, 공격자의 L2 ZEAL 및 NACHO 잔고는 비어 있었으며, 피해를 입은 풀들은 KAS 측 가치의 94%에서 99.6%를 잃은 상태였습니다. 여기서 주목할 점은 Kaspa의 레이어 1(L1)이 정확히 의도된 대로 작동했다는 사실입니다.
통과된 빈 서명
KRC-20 토큰 소유권은 Kaspa 합의에 의해 직접적으로 강제되지 않습니다. 토큰 명령어는 Kaspa 트랜잭션 내에 포함되며, 오프체인 Kasplex 인덱서가 해당 명령어를 읽어 누가 무엇을 소유하는지 결정합니다. 일반적으로 KRC-20 전송에는 공개 키, 토큰 지시사항, 유효한 서명이 포함됩니다. 공격자는 이 익숙한 구조를 유지한 채 빈 서명을 제공하고, OP_ENDIF 뒤에 OP_NOT을 추가했습니다.

빈 서명은 OP_CHECKSIG가 트랜잭션을 즉시 중단시키지 않고 false를 반환하게 만듭니다. 추가된 OP_NOT은 그 결과를 다시 true로 뒤집어, 카스파에 유효한 트랜잭션으로 남게 했습니다. 컨센서스 계층에서는 아무런 문제가 발생하지 않았습니다. 문제는 인덱서 측에 있었습니다. 인덱서는 KRC-20 엔벨로프를 인식했으나, 스크립트가 표준 형식과 정확히 일치할 것을 요구하지 않았습니다. 그 결과, 위조된 전송을 합법적인 것으로 인정해 주었습니다. Kasplex의 자체 API조차 첫 번째 위조된 ZEAL 거래에 대해 opAccept: 1을 반환했습니다.
누구나 위조 트랜잭션을 만들 수 있었다
가장 악랄한 점은 공격자가 숨겨진 인증 정보를 찾아낼 필요가 없었다는 것입니다. 표준 Kaspa 주소는 위조된 KRC-20 작업을 구성하는 데 필요한 공개 키를 노출합니다. 즉, 토큰을 다른 주소로 이동한다고 해도 근본적인 문제가 해결되지는 않습니다. 인덱서가 패치되고 그 내역이 재색인될 때까지, 이론적으로 동일한 결함을 이용해 다른 곳의 KRC-20 잔고도 공격할 수 있습니다.
ZEAL 및 NACHO 이체는 총 5건의 위조 거래로 이루어졌습니다. 반면, 1단위씩 이루어진 9건의 소액 인출은 수탁 측이 정식으로 서명한 것으로, 탈출 경로가 작동하는지 테스트하기 위한 탐색성 거래로 보입니다. 흥미롭게도, 정당한 거래는 소액 거래들이었습니다. 수탁 지갑에는 약 50개의 다른 KRC-20 토큰이 보관되어 있었는데, 공격자는 그중 두 개를 선택했습니다.
토큰은 여전히 있지만, 그 뒷받침은 사라졌다
일요일 아침, 이그라(Igra)는 수탁 지갑의 ZEAL 및 NACHO 보유량 전부가 탈취되어, 레이어 2 네트워크 상에 97,651,212 ZEAL과 42,570,879,908 NACHO가 L1의 완전한 담보 없이 남아 있다고 밝혔다. 나머지 45억 NACHO는 L1에서 공격자가 계속 보유하고 있다.
Igra는 Kaspa L1로의 iKAS 인출과 Hyperlane 전송을 일시 중단했으며, 사용자에게는 KRC-20 토큰 브리징, L2 탈중앙화 거래소(DEX)에서 ZEAL 또는 NACHO 구매, 또는 영향을 받은 풀에 유동성을 공급하지 말 것을 경고했습니다. KRC-20 토큰으로 브리징되지 않은 네이티브 KAS, Kaspa 합의 자산 및 Igra 자산은 영향을 받지 않은 것으로 설명되었습니다. 소프트웨어만 수정한다고 해서 문제가 해결되지는 않을 것입니다. Zealous Swap은 운영자들이 인덱서를 패치하고 이력을 재색인하여, 빈 서명, 형식이 잘못된 태그, OP_ENDIF를 넘어가는 스크립트를 거부해야 한다고 밝혔습니다. 한편 Nacho the Kat은 커뮤니티가 토큰 규칙을 네트워크 자체에서 강제하는 스크립트에 포함하도록 설계된 표준인 KCC-20으로 전환할 계획이라고 전했습니다.
이번 문제는 지난 몇 주간 잇달아 발생한 일련의 악용 사례, 버그, 해킹 및 데이터 유출 사태에 이은 것이다. 토요일에는 라이트닝 네트워크의 수탁 및 비수탁 인프라 제공업체인 블링크 월렛(Blink Wallet)이 “수십 개”의 수탁 계정이 털렸다고 밝혔다. 사이버보안 기업 DCENT 역시 이번 주 DCENT 앱 지갑에서 자금이 빼돌려진 사실을 확인했다. 이러한 사태는 사이버보안 공격이 급증하는 시점에 발생했으며, 일부에서는 AI가 이러한 악용자들의 물결을 돕고 있는 것으로 의심하고 있다.
이 기사는 AI를 사용하여 영어에서 번역되었습니다. 영어 원본이 권위 있는 출처이며, 자동 번역에는 특히 법률 및 규제 용어에서 부정확한 내용이 포함될 수 있습니다.











