홈
AI AI
속보
심층
이벤트
Pro
더보기
자금 조달 정보
특집
온체인 생태계
용어
팟캐스트
데이터
OPRR
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
XRP
$2.25
2.07%
DOGE
$0.325
2.23%
USDC
$0.999
3.05%

SlowMist: Cetus 도난 분석, 1개 토큰이 2억 3천만 달러 레버리지

이 글을 읽으려면 17 분
이것은 매우 정교한 수학적 공격입니다. 공격자는 정밀한 계산을 통해 특정 매개변수를 선택하고 checked_shlw 함수의 결함을 악용하여 1토큰의 비용으로 수십억 달러 상당의 유동성을 얻었습니다.
원제목: "SlowMist: Cetus에서 발생한 2억 3천만 달러 도난 사건 분석"
원저자: Victory, Lisa, SlowMist Technology


배경


5월 22일, 커뮤니티 뉴스에 따르면 SUI 생태계의 유동성 공급자인 Cetus가 공격을 받았다는 의심을 받았으며, 유동성 풀의 깊이가 크게 감소했고, Cetus의 여러 토큰 거래 쌍이 하락했습니다. 추정된 손실액은 2억 3천만 달러를 넘습니다. 이후 Cetus는 다음과 같은 공지를 발표했습니다. "프로토콜에서 사고가 감지되었습니다. 안전상의 이유로 스마트 계약이 일시적으로 중단되었습니다. 현재 담당 팀이 사고를 조사 중입니다. 곧 추가 조사 결과를 발표할 예정입니다."


사건 발생 후 SlowMist 보안팀이 분석에 개입하여 보안 경고를 발령했습니다. 공격 방법과 자금 이체에 대한 자세한 분석은 다음과 같습니다.


(https://x.com/CetusProtocol/status/1925515662346404024)


관련 정보


공격 트랜잭션 중 하나:https://suiscan.xyz/mainnet/tx/DVMG3B2kocLEnVMDuQzTYRgjwuuFSfciawPvXXheB3x



공격 분석


이 사건의 핵심은 공격자가 오버플로를 유발하는 매개변수를 신중하게 구성했지만 감지를 우회하고 궁극적으로 매우 적은 양의 토큰을 사용하여 막대한 양의 유동 자산을 교환했다는 것입니다. 구체적인 단계에 대한 분석은 다음과 같습니다.


(공격 시퀀스 다이어그램)


1. 공격자는 플래시 대출을 통해 10,024,321.28 haSUI를 먼저 빌렸고, 이로 인해 풀 가격이 18,956,530,795,606,879,104에서 18,425,720,184762886으로 폭락하여 가격이 99.90% 하락했습니다.



2. 공격자는 유동성 포지션을 개설하기 위해 매우 좁은 가격 범위를 신중하게 선택했습니다.


틱 하한: 300000(가격: 60,257,519,765,924,248,467,716,150)

틱 상한: 300200(가격: 60,863,087,478,126,617,965,993,239)

가격 범위 폭: 단 1.00496621%


3. 이제 공격의 핵심이 등장합니다. 공격자는 10,365,647,984,364,446,732,462,244,378,333,008 단위의 막대한 유동성을 추가한다고 주장하지만, 시스템은 허점으로 인해 토큰 A를 1개만 수집했습니다.



공격자가 1개의 토큰으로 막대한 유동성을 교환할 수 있었던 이유를 분석해 보겠습니다. 핵심적인 이유는 get_delta_a 함수의 checked_shlw에 오버플로 감지 우회 취약점이 있기 때문입니다. 공격자는 이를 악용하여 실제로 얼마나 많은 haSUI를 추가해야 하는지에 대한 시스템 계산에 심각한 편차를 일으켰습니다. 오버플로가 감지되지 않았기 때문에 시스템은 필요한 haSUI의 양을 잘못 판단했고, 그 결과 공격자는 적은 수의 토큰만으로 많은 유동자산을 환매할 수 있었고, 결국 공격이 성공했습니다.


시스템이 이렇게 엄청난 유동성을 추가하는 데 얼마나 많은 haSUI가 필요한지 계산할 때:



여기서 핵심은 checked_shlw 함수의 구현에 심각한 결함이 있다는 것입니다. 실제로 0xffffffffffffffff <<192보다 작은 모든 입력 값은 오버플로 검사를 우회합니다. 하지만 이 값을 64비트 왼쪽으로 이동시키면 결과는 u256의 표현 범위를 넘어서게 되고, 상위 데이터가 잘려나가게 되어 이론적인 값보다 훨씬 작은 결과가 나오게 됩니다. 이로 인해 시스템은 후속 계산에 필요한 haSUI의 양을 과소평가하게 됩니다.



· 잘못된 마스크: 0xffffffffffffffff << 192 = 매우 큰 숫자(약 2^256-2^192)

· 거의 모든 입력은 이 마스크보다 작아서 오버플로 감지를 우회합니다.

· 실제 문제: n>= 2^192일 때, n<<64는 u256 범위를 초과하여 잘립니다.


공격자의 중간값 유동성 * sqrt_price_diff = 6277101735386680763835789423207666908085499738337898853712:


· 오류 마스크보다 작아서 오버플로 감지를 우회합니다.

· 그러나 64비트 왼쪽으로 이동하면 u256의 최대값을 초과하여 초과 부분이 잘립니다.

· 최종 계산 결과는 약 1보다 작지만 반올림했기 때문에 몫은 1과 같습니다.



4. 마지막으로 공격자는 유동성을 제거하고 막대한 토큰 수입을 얻었습니다.


· 첫 번째 제거: 10,024,321.28 haSUI

· 두 번째 제거: 1 haSUI

· 세 번째 제거: 10,024,321.28 haSUI



5. 공격자는 플래시론을 반환하고 약 10,024,321.28 haSUI와 5,765,124.79 SUI의 순수익을 냈으며, 공격이 완료되었습니다.


프로젝트 측의 수리 작업


공격 이후, Cetus는 수리 패치를 출시했습니다. 구체적인 수리 코드는 https://github.com/CetusProtocol/integer-mate/pull/7/files#diff-c04eb6ebebbabb80342cd953bc63925e1c1cdc7ae1fb572f4aad240288a69409에서 확인하세요.


수리된 checked_shlw 함수는 다음과 같습니다.



수리 지침: 잘못된 마스크 0xffffffffffffffff <<를 수정했습니다. 192에서 올바른 임계값 1 << 192 n> 의 판단 조건을 수정하였습니다. 마스크에서 n>= 마스크로 64비트의 왼쪽 이동으로 인해 오버플로가 발생할 수 있는 경우 오버플로 플래그를 올바르게 감지하여 반환할 수 있도록 합니다.


MistTrack 분석


분석에 따르면 공격자 0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06은 SUI, vSUI, USDC 및 기타 자산을 포함하여 약 2억 3천만 달러의 수익을 냈습니다.



공격자가 이틀 전에 가스비를 준비한 후 공격 전에 시도했지만 실패한 것으로 확인되었습니다.



공격자는 수익을 낸 후 USDC, SOL, suiETH 등의 자금 일부를 Sui Bridge, Circle, Wormhole, Mayan 등의 크로스 체인 브리지를 통해 EVM 주소 0x89012a55cd6b88e407c9d4ae9b3425f55924919b로 이체했습니다.



그 중 5.2341 WBNB가 BSC 주소로 이체되었습니다. 0x89012a55cd6b88e407c9d4ae9b3425f55924919b: 그런 다음 공격자는 Suilend에 1,000만 달러 상당의 자산을 입금했습니다. 공격자는 또한 24,022,896 SUI를 새로운 주소 0xcd8962dad278d8b50fa0f9eb0186bfa4cbdecc6d59377214c88d0286a0ac9562로 이체했는데, 아직 이체되지 않았습니다. 다행히 Cetus에 따르면 SUI 재단과 다른 생태계 구성원과의 협력을 통해 SUI에서 도난당한 1억 6,200만 달러의 자금이 성공적으로 동결되었습니다.


(https://x.com/CetusProtocol/status/1925567348586815622)


다음으로, 우리는 온체인 자금세탁 방지 및 추적 도구인 MistTrack을 사용하여 크로스체인 자금을 수신하는 EVM의 주소 0x89012a55cd6b88e407c9d4ae9b3425f55924919b를 분석합니다. 이 주소는 BSC에서 5.2319 BNB를 받았고 아직 전송되지 않았습니다: 이 주소는 Ethereum에서 3,000 USDT, 4,088만 USDC, 1,771 SOL, 8,130.4 ETH를 받았습니다. 이 중 USDT, USDC, SOL은 coW Swap, ParaSwap 등을 통해 ETH로 교환되었습니다: 그런 다음 해당 주소는 아직 전송되지 않은 주소 0x0251536bfcf144b88e1afa8fe60184ffdb4caf16으로 20,000 ETH를 전송했습니다: 이 주소의 현재 Ethereum 잔액은 3,244 ETH입니다: MistTrack은 위에 언급된 주소를 악성 주소 라이브러리에 추가했습니다. 동시에, 우리는 주소 잔액을 계속 모니터링할 것입니다.


요약


이 공격은 수학 오버플로 취약점의 위력을 보여줍니다. 공격자는 정밀한 계산을 통해 특정 매개변수를 선택하고 checked_shlw 함수의 결함을 악용하여 1개 토큰의 비용으로 수십억 달러 상당의 유동성을 확보했습니다. 이것은 매우 정교한 수학적 공격입니다. SlowMist 보안팀은 개발자가 스마트 계약 개발 시 모든 수학 함수의 경계 조건을 엄격하게 검증할 것을 권장합니다.


원본 링크


BlockBeats 공식 커뮤니티에 참여하세요:

Telegram 구독 그룹:https://t.me/theblockbeats

Telegram 토론 그룹:https://t.me/BlockBeats_App

Twitter 공식 계정:https://twitter.com/BlockBeatsAsia

举报 오류 신고/제보
문고 선택
새 문고 추가
취소
완료
새 문고 추가
자신만 보기
공개
저장
오류 신고/제보
제출