闪电贷夺下两席治理权,X100被盗对行业有何启示?
- 핵심 관점: X100 프로젝트는 DAO 거버넌스 메커니즘에 심각한 결함이 있어, 해커가 플래시 론으로 자금을 빌려 거버넌스 의석을 탈취하고 악의적인 제안을 통해 금고 자산을 저가로 이전하여 하루 만에 약 485만 USDT의 손실을 초래했으며, X 토큰은 96% 이상 폭락하여 탈중앙화 거버넌스의 시스템적 보안 위험을 드러냈다.
- 핵심 요소:
- X100 금고는 3석의 "상원"이 관리하며, 거버넌스 권한 발효 대기 기간이 없고, 동일한 통제자가 다중 주소를 통해 의석을 탈취할 수 있으며, 제안 통과 후 즉시 실행된다.
- 해커는 약 194만 USDT의 플래시 론을 빌려 X 토큰을 매수하고, 단지 백만 분의 일 개 많은 동결 잔액으로 두 의석을 탈취한 뒤, 같은 거래에서 악의적인 제안을 통해 40만 개의 X를 약 35.68달러에 매도했다.
- 첫 번째 공격 약 24분 후, 두 번째 해커가 동일한 메커니즘을 이용해 다시 두 의석을 탈취하여 약 9.64만 USDT의 이익을 얻었다; 세 번째 공격자는 전자의 보조 계약을 빌려 약 55만 개의 X를 직접 전송했으며, 세 차례 공격 모두 30분 이내에 완료되었다.
- 올해 유사한 거버넌스 공격이 빈번하게 발생했다: Bonk DAO 약 2,050만 달러 손실, Term Finance 약 850만 달러 손실, Arkadiko 약 109만 달러 손실.
- 일부 미수 공격의 임계값은 매우 낮았다—Moonwell 공격자는 약 1,808달러, Olas 공격자는 약 135달러만 지출하여 제안 임계값에 도달했으며, 이는 공격자가 다수 표를 확보할 필요 없이 제안 자격만 얻으면 공격 기회를 창출할 수 있음을 보여준다.
原创 | Odaily 星球日报(@OdailyChina)
作者 | Asher(@Asher_0210)

10월 24일, 이더리움 DeFi 프로젝트 X100이 거버넌스 공격을 받아 약 485만 USDT가 탈취되었다. GMGN 데이터에 따르면, X 토큰 시가총액은 공격 전 약 7억 6,000만 달러에서 약 2,400만 달러로 폭락했으며, 하루 만에 96% 이상 하락했다.

원래 세 개의 '상원(Senate)' 의석이 공동 관리하던 금고를, 해커가 플래시론으로 빌린 자금으로 그중 두 석을 차지했다. 다수 의석을 확보한 후, 해커는 악의적인 제안을 제출하고 자신이 통제하는 의석으로 투표를 통과시켜 금고가 자신에게 자산을 이체하는 거래를 승인하도록 만들었다. 첫 번째 공격이 성공한 후, 다른 공격자들도 연이어 동일한 거버넌스 메커니즘을 악용해 프로젝트 자산을 계속 빼냈다.
아래에서 Odaily는 이 거버넌스 공격의 전 과정과 X100 사건 배후에 드러난 DAO 거버넌스 보안 위험을 정리한다.
194만 달러를 빌려, 해커는 어떻게 두 석의 '상원' 의석을 차지했나?
X100의 금고는 Senate라는 세 석의 '상원'이 관리하며, 구성원들은 투표를 통해 금고 토큰의 매각, 유동성 공급 등의 운영을 결정한다. 그중 두 석만 통제하면 제안을 통과시켜 금고 자산을 동원할 수 있다. 보유자는 프로젝트 토큰 X를 Freezer 컨트랙트에 예치하고 1년, 3년 또는 5년 동결을 선택한 후, 100 X의 등록비를 지불하면 선거에 참여할 수 있다. 세 의석은 후보 주소의 현재 동결 잔액에 따라 실시간으로 정렬되며, 상위 세 명이 거버넌스 권한을 획득한다.
이 메커니즘은 동일한 통제자가 여러 주소를 통해 의석을 얻는 것을 제한하지 않았고, 거버넌스 권한 발효 대기 기간도 설정하지 않았다. 공격자는 두 개의 통제된 주소의 동결 잔액이 동시에 상위 3위 안에 들게 하기만 하면 즉시 다수 의석을 확보할 수 있었고, 통과된 제안은 즉시 실행될 수 있어 의석 탈취와 자산 이체가 동일한 거래에서 완료될 수 있었다.
공격 발생 전, 두 번째 의석 주소는 약 19,000 X를 동결했다. 10월 24일 22시 11분, 해커는 Aave 플래시론을 통해 약 194만 USDT를 빌려 X를 구매하고 두 개의 보조 컨트랙트에 분배하여 각각 동결과 선거를 완료했다. 각 컨트랙트는 19,000.000001 X를 동결하여 원래 두 번째 의석보다 백만 분의 1 토큰만 더 많았지만, 동시에 두 번째와 세 번째 의석을 차지하며 원래 두 번째 의석을 거버넌스 명단에서 밀어냈다.
다수 의석을 확보한 후, 해커는 어떻게 금고 자산을 자신의 손에 들어오게 했나?
두 장의 찬성표로, 금고가 35.68달러에 40만 X를 매각하게 하다
두 의석을 차지한 후, 해커는 즉시 악의적인 제안을 제출하여 금고가 40만 X를 자신이 직접 만든 PancakeSwap V3 X/USDT 풀에 매도하도록 요구하고, 최저 수령 금액을 0으로 설정한 다음, 또 다른 통제된 컨트랙트를 통해 투표를 지지하게 하여 제안이 두 표로 통과되어 즉시 실행되도록 했다. GoPlus 분석에 따르면, X100은 거버넌스 제안이 거래 풀을 지정할 수 있도록 허용했지만 효과적인 최저 거래액 보호 장치가 없었다. 해커는 금고가 어디에 코인을 매도할지 결정할 수 있을 뿐만 아니라 거래 조건을 스스로 설정하고, 자신이 통제하는 다수 의석으로 거래를 승인할 수 있었다.
위 풀은 해커가 동일한 거래에서 생성했으며 약 100달러의 유동성만 주입했다. 금고가 40만 X를 그 안에 매도했을 때, 풀은 소량의 USDT만 지불할 수 있었고 최저 수령 금액이 0이어서 거래가 수익률이 너무 낮아 실패하지 않았다. 최종적으로, 금고는 40만 X를 넘겨주고 약 35.68달러만 돌려받았다. 해커는 이후 자체 생성한 풀의 유동성을 철회하여 그 안의 X를 회수하고, 일부 토큰을 기존 Uniswap V3 X/USDT 거래 풀에 매도하여 USDT로 교환했다. 플래시론 등의 비용을 상환한 후, 첫 번째 해커는 약 475만 USDT의 이익을 얻었다.
대출하여 코인 구매, 의석 탈취부터 금고의 저가 매도 승인, 현금화 및 상환까지 모두 동일한 거래에서 완료되었다. 금고가 넘겨준 토큰은 해커의 현금화 수단이 되었고, 실제 거래 풀의 USDT는 대출 상환에 사용되어 공격 수익으로 전환되었다.
후속 공격이 연이어 발생, 탈취 자금은 어디로 흘러갔나?
첫 번째 공격 발생 약 24분 후, 두 번째 해커가 플래시론을 통해 다시 두 개의 거버넌스 의석을 탈취하고, Freezer가 보유한 일부 Uniswap V3 유동성 포지션을 제거하며, 자체 생성한 거래 풀을 이용해 자산을 계속 빼내 약 9만 6,400 USDT를 획득했다. 약 5분 후, 세 번째 지갑은 두 번째 해커가 남긴 호출자 제한이 없는 보조 컨트랙트를 악용하여 직접 그 거버넌스 의석을 빌려 제안을 통과시키고 약 55만 X를 빼냈다. 처음 두 차례 공격으로 약 485만 USDT의 손실이 발생했고, 세 번째 공격으로 약 55만 X가 추가로 이체되었으며, 세 차례 공격은 30분 이내에 발생했다.
Bitquery 추적에 따르면, 첫 번째 해커는 공격 후 몇 분 이내에 주요 USDT 수익을 ETH로 교환한 후 다섯 개 지갑으로 분산시켰으며, 총 약 2,022.86 ETH에 달했다. 두 번째 해커는 USDT를 ETH로 교환하고 중계 주소를 거쳐 ChangeNOW로 이동시켰으며, 전체 이체 과정은 약 21분이 걸렸다.
거버넌스 권한이 일단 무너지자, 자산 이체는 첫 번째 해커의 단일 공격에서 여러 지갑이 연이어 참여하는 탈취로 빠르게 확대되었다. 후발 참여자들은 심지어 코인을 다시 구매하여 선거에 출마할 필요도 없이 기존 권한을 이용해 자산을 계속 빼낼 수 있었다.
거버넌스 공격 비용이 점점 낮아지는 온체인 세계
X100은 고립된 사례가 아니며, 거버넌스 공격이 반드시 해커가 사전에 막대한 자금을 투입해야 하는 것도 아니다. 공격자는 토큰을 구매하여 투표권을 얻을 수도 있고, 낮은 제안 임계값을 이용해 기회를 모색할 수도 있으며, 플래시론은 빌린 자금이 거버넌스 권력 탈취에 참여할 수 있게 해준다.
올해 들어, 유사한 거버넌스 공격이 여러 차례 대규모 손실을 초래했다. 7월, Bonk DAO 공격자는 약 409만 달러를 들여 공급량의 1.003%에 해당하는 토큰을 구매하여 거버넌스 승인 임계값을 겨우 넘긴 후, 악의적인 제안을 통해 약 2,050만 달러의 자산을 빼냈으며, 투표 종료 후 스테이킹한 토큰도 회수했다. 8월, Term Finance는 거버넌스 공격으로 약 850만 달러의 손실을 입었다. 수백만 달러를 들여 투표권을 구매해야 하더라도, 이 자금이 반드시 공격자가 최종적으로 부담하는 비용은 아닐 수 있다.
일부 미수 공격의 임계값은 심지어 수백 달러에 불과했다. 올해 3월, Moonwell 공격자는 약 1,808달러로 MFAM을 구매하고 자기 위임하여 악의적인 제안을 제출하고, 약 108만 달러의 사용자 자금이 관련된 일곱 개 대출 시장과 핵심 컨트랙트 관리 권한을 얻으려 했다. 9월, Olas 공격자는 약 135달러로 5,100 OLAS를 잠그어 제안 임계값을 초과했다. 두 공격 모두 차단되었지만, 공격자가 반드시 다수 의석을 확보해야 하는 것은 아니며 제안 자격만 얻어도 공격 기회를 창출할 수 있음을 보여준다.
10월 22일, Arkadiko도 거버넌스 공격을 받았다. 공격자는 충분한 수량의 DIKO를 구매하고 단독으로 악의적인 컨트랙트 도입 제안에 투표하여 통과시켰으며, 그동안 반대표는 없었고, 추정 손실은 약 109만 달러다.
거버넌스 권한은 빌릴 수 있고, 투표만 통과되면 자산을 빼낼 수 있다. 금고의 통제권이 이렇게 쉽게 넘어간다면, 이른바 탈중앙화 거버넌스는 과연 누구를 보호할 수 있는가?


