머리말
이번 사건은 사용자의 승리가 아닌 자본의 승리이며, 업계 발전에 있어서는 좌절입니다.
비트코인은 왼쪽으로 가고, 수이는 오른쪽으로 가며, 업계의 분산화를 흔드는 모든 움직임은 비트코인에 대한 더 강한 믿음을 가져옵니다.
세상에 필요한 것은 단순히 더 나은 글로벌 금융 인프라가 아니라, 자유를 위한 공간이 필요한 사람들은 항상 존재할 것입니다.
옛날 옛적에는 얼라이언스 체인이 퍼블릭 체인보다 더 인기가 있었는데, 그 이유는 당시의 규제 요구를 충족했기 때문입니다. 오늘날 얼라이언스의 쇠퇴는 단순히 이러한 수요를 충족하는 데 그치지, 실제 사용자의 요구를 충족하지 못하고 있음을 의미합니다. 규제 대상 사용자가 사라진다면, 규제 도구의 필요성은 어떻게 될까요?
1. 배경
2025년 5월 22일, 수이 퍼블릭 체인 생태계 내 최대 탈중앙화 거래소(DEX)인 세터스(Cetus)가 해커들의 공격을 받았습니다. 순식간에 유동성이 급락하고 여러 거래쌍의 가격이 폭락했으며, 손실액은 2억 2천만 달러를 초과했습니다.
본 기사 작성 시점을 기준으로 타임라인은 다음과 같습니다.
5월 22일 아침, 해커들이 시터스를 공격하여 2억 3천만 달러를 횡령했습니다. 시터스는 계약을 긴급 중단하고 공식 성명을 발표했습니다.
5월 22일 오후, 해커는 약 6천만 달러를 체인 전체로 이체했고, 나머지 1억 6천2백만 달러는 여전히 수이(Sui) 체인 주소에 남아 있었습니다. 수이 검증 노드는 신속하게 해커 주소를 "거부 목록"에 추가하고 자금을 동결하는 조치를 취했습니다.
5월 22일 저녁, 수이 CPO @emanabio는 다음과 같이 트윗을 올렸습니다: 자금이 동결되었으며 곧 반환이 시작될 것입니다.
5월 23일, Cetus는 취약점을 수정하고 계약을 업데이트하기 시작했습니다.
5월 24일, 수이는 PR을 오픈 소스로 공개하며 별칭 지정 및 화이트리스트를 통해 자금을 회수할 것이라고 설명했습니다.
5월 26일, 수이는 프로토콜 업그레이드를 구현하고 해커 자산을 보관 주소로 이전할지 여부를 제안하며 온체인 거버넌스 투표를 시작했습니다.
5월 29일, 프로토콜 업그레이드를 지지하는 검증 노드의 2/3 이상이 투표 결과를 발표했으며, 프로토콜 업그레이드는 구현 준비가 되었습니다.
5월 30일부터 6월 초까지 프로토콜 업그레이드가 적용되어 지정된 거래 해시가 실행되었으며 해커의 자산은 "합법적으로 이전"되었습니다.
2. 공격 원칙
업계에는 이벤트 원칙에 대한 많은 기사가 있지만, 여기서는 핵심 원칙에 대한 개요만 제공합니다.
공격 프로세스 관점에서:
공격자는 먼저 플래시론을 이용해 약 10,024,321.28 haSUI를 빌렸고, 이로 인해 거래 풀의 가격이 즉시 떨어졌습니다.
99.90%. 이 대규모 매도 주문으로 목표 풀 가격이 약 1.8956×10^19에서 1.8425×10^19로 하락하여 거의 바닥을 찍었습니다.
공격자는 Cetus에 매우 좁은 범위(틱 하한 300,000, 상한 300,200, 그리고 범위 폭은 1.00496621%에 불과)의 유동성 포지션을 생성했습니다. 이처럼 좁은 범위는 후속 계산 오류가 필요한 토큰 수에 미치는 영향을 증폭시킵니다.
공격의 핵심 원칙:
문제는 Cetus가 필요한 토큰 수를 계산하는 데 사용하는 get_delta_a 함수에 정수 오버플로 취약점이 있다는 것입니다. 공격자는 고의로 엄청난 양의 유동성(약 10^37 단위)이 추가될 것이라고 주장했지만, 실제로는 단 하나의 토큰만 계약에 투입되었습니다.
checked_shlw의 오버플로 감지 조건에 오류가 있어, 좌측 이동 계산 중에 계약이 높은 위치에서 잘려나가 시스템이 필요한 haSUI 양을 심각하게 과소평가하게 되어, 매우 적은 비용으로 엄청난 양의 유동성을 교환하게 됩니다.
기술적인 관점에서 볼 때, 위의 취약점은 Cetus가 Move 스마트 계약에서 잘못된 마스크와 판단 조건을 사용하여 0xffffffffffffffff << 192보다 작은 값은 감지를 우회할 수 있게 되었다는 사실에서 비롯됩니다. 그리고 64비트만큼 왼쪽으로 이동한 후 상위 데이터가 잘리고, 시스템은 소수의 토큰만 수집하여 막대한 유동성을 얻었다고 생각합니다.
사건 이후, 공식적인 두 가지 조치가 도출되었습니다. "동결" 대 "복구"로, 이는 두 단계로 구성됩니다.
동결 단계는 Deny List + 노드 합의를 통해 완료됩니다.
복구 단계에는 블랙리스트를 우회하기 위한 온체인 프로토콜 업그레이드 + 커뮤니티 투표 + 지정된 거래 실행이 필요합니다.
3. 수이의 동결 메커니즘
수이 체인 자체에는 해커 자금 동결을 가능하게 하는 특별한 거부 목록 메커니즘이 있습니다. 뿐만 아니라, 수이의 토큰 표준에는 동결 기능이 내장된 "규제 토큰" 모드도 있습니다.
이번 긴급 동결은 이 기능을 활용했습니다. 검증 노드는 도난당한 자금과 관련된 주소를 로컬 구성 파일에 신속하게 추가했습니다. 이론적으로 각 노드 운영자는 TransactionDenyConfig를 수정하여 블랙리스트를 업데이트할 수 있지만, 네트워크 일관성을 유지하기 위해 초기 구성 게시자인 수이 재단은 중앙 집중식 조정을 수행했습니다.
재단은 해커의 주소가 포함된 구성 업데이트를 공식적으로 처음 공개했고, 검증자는 기본 구성에 따라 동기적으로 적용되어 해커의 자금이 체인에 일시적으로 "봉인"되었습니다. 실제로 이러한 현상에는 고도로 중앙화된 요소가 존재합니다.
피해자들의 자금 동결을 막기 위해 수이팀은 즉시 화이트리스트 메커니즘 패치를 시작했습니다.
이는 이후 자금 이체를 위한 것입니다. 합법적인 거래는 사전에 설정하여 화이트리스트에 등록할 수 있으며, 자금 주소가 블랙리스트에 있는 경우에도 실행이 가능합니다.
새로운 기능인 transaction_allow_list_skip_all_checks를 사용하면 특정 거래를 "면제 목록"에 미리 추가하여 이러한 거래가 서명, 권한, 블랙리스트 등 모든 보안 검사를 건너뛸 수 있습니다.
화이트리스트 패치는 해커의 자산을 직접 훔칠 수 없다는 점에 유의해야 합니다. 이 패치는 특정 거래에만 동결을 우회할 수 있는 기능을 제공하며, 실제 자산 이전에는 여전히 법적 서명이나 추가 시스템 권한 모듈이 필요합니다.
실제로 업계의 주요 동결 계획은 토큰 계약 수준에서 발생하는 경우가 많으며 발급자의 여러 서명으로 제어됩니다.
테더(Tether)에서 발행한 USDT를 예로 들어 보겠습니다. USDT 계약에는 블랙리스트 기능이 내장되어 있어 발행사가 불법 주소를 동결시켜 USDT 전송을 불가능하게 만들 수 있습니다. 이 솔루션은 체인에서 동결 요청을 시작하려면 여러 서명이 필요하며, 여러 서명이 합의에 도달한 후에야 실제로 실행되기 때문에 실행 지연이 발생합니다.
테더의 동결 메커니즘은 효과적이지만, 통계에 따르면 다중 서명 프로세스에는 종종 "윈도우 기간"이 있어 범죄자들이 이를 악용할 기회가 있습니다.
이와 대조적으로, 수이의 동결은 기본 프로토콜 수준에서 발생하며 검증자 노드에 의해 공동으로 작동하여 일반적인 계약 호출보다 훨씬 빠르게 실행됩니다.
이 모델에서 충분히 빠르게 실행하려면 이러한 검증자 노드 자체의 관리가 매우 통합되어야 함을 의미합니다.
3. 수이의 '이송형 재활용' 구현 원칙
더욱 놀라운 점은 수이가 해커의 자산을 동결했을 뿐만 아니라, 온체인 업그레이드를 통해 훔친 자금을 "이체하고 회수"할 계획이었다는 것입니다.
5월 27일, Cetus는 프로토콜을 업그레이드하고 동결된 자금을 다중 서명 에스크로 지갑으로 전송하는 커뮤니티 투표 계획을 제안했습니다. 이후 Sui 재단은 온체인 거버넌스 투표를 시작했습니다.
5월 29일 투표 결과가 발표되었고, 검증자의 약 90.9%가 이 계획을 지지했습니다. 수이는 이 제안이 통과되면 "두 해커 계좌에 동결된 모든 자금은 해커의 서명 없이 다중 서명 지갑으로 복구될 것"이라고 공식 발표했습니다.
해커의 서명이 필요 없습니다. 정말 독특한 기능입니다. 블록체인 업계에서 이런 복구 방법은 없었습니다.
Sui의 공식 GitHub PR을 통해 해당 프로토콜이 주소 별칭 메커니즘을 도입했다는 사실을 알 수 있습니다. 업그레이드에는 ProtocolConfig에 별칭 규칙을 미리 지정하여 일부 허용된 트랜잭션에서 합법적인 서명을 해커 계정에서 전송된 것으로 처리할 수 있도록 하는 내용이 포함됩니다.
구체적으로, 실행될 복구 거래 해시 목록은 대상 주소(즉, 해커 주소)에 바인딩되며, 이러한 고정 거래 요약에 서명하고 게시하는 모든 실행자는 유효한 해커 주소 소유자로서 거래를 시작한 것으로 간주됩니다. 이러한 특정 거래의 경우, 검증자 노드 시스템은 거부 목록 검사를 우회합니다.
코드 수준에서 Sui는 거래 검증 논리에 다음과 같은 판단을 추가했습니다. 거래가 블랙리스트에 의해 차단되면 시스템은 서명자를 탐색하여 protocol_config.is_tx_allowed_via_aliasing(sender, signer, tx_digest)가 참인지 확인합니다.
별칭 규칙을 충족하는 서명자가 있는 한, 즉 거래가 통과 허용으로 표시된 경우, 이전의 가로채기 오류는 무시되고 정상적인 패키징과 실행이 계속됩니다.
4. 관점
1억 6천만 달러, 업계의 가장 깊은 기본 신념을 무너뜨리다
세터스 사건과 관련해서, 제 개인적인 관점에서 보면 이 사건은 빨리 지나갈지 몰라도, 이 모델은 업계의 기반을 무너뜨리고 블록체인은 동일한 원장 체계 하에서는 변조될 수 없다는 전통적인 합의를 깨뜨렸기 때문에 잊혀지지 않을 것입니다.
블록체인 설계에서 계약은 법이고 코드는 심판입니다.
하지만 이 사건에서는 코드가 실패하고, 거버넌스가 개입하여 권한이 무시되어 "투표 행동이 코드의 결과를 결정한다"는 패턴이 형성되었습니다.
이는 수이의 거래 내용을 직접적으로 도용하는 접근 방식이 해커 문제를 처리하는 주류 블록체인의 접근 방식과 매우 다르기 때문입니다.
합의가 훼손된 것은 이번이 처음은 아니지만 가장 조용한 훼손입니다.
역사적으로:
이더리움은 2016년 DAO 사건 당시 손실을 보상하기 위해 하드포크를 통해 이전 데이터를 롤백했지만, 이 결정으로 인해 이더리움과 이더리움 클래식 체인이 분리되었습니다. 이 과정은 논란의 여지가 있었지만, 결국 여러 그룹이 서로 다른 합의 신념을 형성했습니다.
비트코인 커뮤니티 역시 비슷한 기술적 문제를 겪었습니다. 2010년에 발생한 가치 오버플로 취약점은 개발자들에 의해 긴급히 복구되었고, 합의 규칙이 업그레이드되어 불법적으로 생성된 약 184억 개의 비트코인이 완전히 삭제되었습니다.
이는 동일한 하드 포크 모델로, 문제 발생 전으로 원장을 롤백한 후, 사용자는 계속 사용할 원장 시스템을 스스로 결정할 수 있습니다.
DAO 하드포크와 비교했을 때, 수이는 체인 분할을 선택하지 않고 프로토콜을 업그레이드하고 별칭을 설정함으로써 이 사고를 정확히 해결했습니다. 이를 통해 수이는 체인의 연속성과 대부분의 합의 규칙을 그대로 유지하는 동시에, 기반 프로토콜을 사용하여 특정 "구출 작전"을 실행할 수 있음을 보여주었습니다.
문제는 기존의 "포크 스타일 롤백"은 사용자의 믿음에 따른 선택이지만, Sui의 "프로토콜 스타일 수정"은 체인이 사용자를 대신하여 결정을 내리는 것입니다.
열쇠도 아니고 동전도 아니라고? 더 이상은 아니네요, 죄송해요.
장기적으로 이는 "당신의 키가 아니면 당신의 코인도 없다"는 개념이 수이 체인에서 깨졌다는 것을 의미합니다. 사용자의 개인 키가 손상되지 않았더라도 네트워크는 여전히 자산 흐름을 차단하고 집단 협약 변경을 통해 자산을 리디렉션할 수 있습니다.
이것이 앞으로 대규모 보안 사고에 대응하는 블록체인의 선례가 되거나, 심지어 다시 따를 수 있는 관행으로 여겨진다면.
"사슬이 정의의 규칙을 어길 수 있다면, 어떤 규칙이든 어길 수 있는 선례도 생기는 셈입니다."
일단 "공익 자금 횡령"이 성공하면 다음에는 "도덕적 회색 지대"에서 벌어질 가능성이 있습니다.
그 다음에는 무슨 일이 일어날까요?
해커가 사용자의 돈을 훔쳤으니, 그룹 투표로 그의 돈을 빼앗을 수 있을까?
투표는 누가 더 많은 돈(pos)을 가지고 있는지, 아니면 누가 더 많은 사람을 가지고 있는지에 따라 결정되는 건가요? 만약 돈이 많은 사람이 이긴다면, 류츠신이 묘사한 최종 프로듀서가 곧 도착할 겁니다. 만약 사람이 많은 사람이 이긴다면, 폭도들도 함께 일어설 겁니다.
전통적인 시스템에서는 불법 소득이 보호받지 못하는 것이 매우 흔한 일이고, 동결과 이체는 전통적인 은행의 일상적인 업무입니다.
하지만 기술적인 관점에서 이를 달성할 수 없다는 사실이 블록체인 산업 발전의 근본 원인입니다.
이제 업계 규정 준수라는 큰 틀이 계속해서 흔들리고 있습니다. 오늘은 해커를 위해 계좌 잔액을 동결하고 수정할 수 있지만, 내일은 지리적 요인이나 갈등 요인을 위해 임의로 수정할 수도 있습니다. 만약 이 체인이 지역적인 부분적인 도구가 된다면 말입니다.
해당 산업의 가치는 크게 압축될 것이고, 기껏해야 그다지 유용하지 않은 금융 시스템일 뿐일 것입니다.
이것이 제가 이 업계에 남기로 결심한 이유이기도 합니다. "블록체인은 동결될 수 없기 때문에 가치 있는 것이 아니라, 싫어하더라도 당신에게는 변하지 않을 것이기 때문에 가치 있습니다."
규제가 일반적인 추세인 가운데, 이 체인점은 자체적인 정신을 보호할 수 있을까?
옛날 옛적에는 얼라이언스 체인이 퍼블릭 체인보다 더 인기가 있었는데, 그 이유는 당시의 규제 요구를 충족했기 때문입니다. 오늘날 얼라이언스의 쇠퇴는 단순히 이러한 수요를 충족하는 데 그치지, 실제 사용자의 요구를 충족하지 못하고 있음을 의미합니다. 규제 대상 사용자들이 사라졌으니, 규제 도구의 필요성은 어떻게 될까요?
산업 발전의 관점에서
효율적인 중앙화는 블록체인 발전에 필수적인 단계일까요? 탈중앙화의 궁극적인 목표가 사용자의 이익을 보호하는 것이라면, 과도기적 조치로서 중앙화를 용인할 수 있을까요?
온체인 거버넌스 맥락에서 "민주주의"라는 단어는 실제로 토큰 가중치를 갖습니다. 그렇다면 해커가 다량의 SUI를 보유하고 있거나 (혹은 DAO가 해킹당하여 해커가 투표권을 장악하고 있다면), 그는 "자신을 정화하기 위해 합법적으로 투표"할 수 있을까요?
궁극적으로 블록체인의 가치는 동결 가능 여부가 아니라, 어떤 그룹이 동결할 수 있는 능력이 있음에도 동결하지 않기로 선택하는지에 달려 있습니다.
체인의 미래는 기술적 구조에 의해 결정되는 것이 아니라, 체인이 보호하고자 선택하는 신념 체계에 의해 결정됩니다.
