SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

이 공격은 수학 오버플로우 취약점의 위력을 보여줍니다.

저자: Victory & Lisa

배경

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

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

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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

관련 정보

공격 거래 중 하나:

https://suiscan.xyz/mainnet/tx/DVMG3B2kocLEnVMDuQzTYRgjwuuFSfciawPvXXheB3x

공격자 주소:

0xe28b50cef1d633ea43d3296a3f6b67ff0312a5f1a99f0af753c85b8b5de8ff06

공격받은 풀의 주소:

0x871d8a227114f375170f149f7e9d45be822dd003eba225e83c05ac80828596bc

관련 토큰:

하수이/SUI

공격 분석

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

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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개만 수집했습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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

시스템은 이렇게 엄청난 양의 유동성을 추가하는 데 얼마나 많은 haSUI가 필요한지 계산합니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

  • 오류 마스크: 0xffffffffffffffff << 192 = 매우 큰 값(약 2^256-2^192)
  • 거의 모든 입력은 이 마스크보다 작아서 오버플로 감지를 우회합니다.
  • 실제 문제: n >= 2^192일 때 n << 64는 u256 범위를 초과하여 잘립니다.

공격자는 중간 가치 유동성 * sqrt_price_diff = 6277101735386680763835789423207666908085499738337898853712를 구성합니다.

  • 오류 마스크 미만, 오버플로 감지 우회
  • 그러나 64비트 왼쪽 이동 후에는 u256의 최대값을 초과하게 되어 초과된 부분이 잘리게 됩니다.
  • 최종 계산 결과는 1보다 작지만, 반올림했기 때문에 몫은 1과 같습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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

  • 첫 번째 인출: 10,024,321.28 haSUI 획득
  • 2차 제거: haSUI 1개 획득
  • 3차 출금: 10,024,321.28 haSUI

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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 함수는 다음과 같습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

수리 지침:

  • 잘못된 마스크 0xffffffffffffffff << 192를 올바른 임계값 1 << 192로 수정했습니다.
  • n > mask에서 n >= mask로 판단 조건을 수정합니다.
  • 64비트의 좌측 이동으로 인해 오버플로가 발생할 수 있는 경우 오버플로 플래그가 올바르게 감지되어 반환되는지 확인하십시오.

MistTrack 분석

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

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

공격자는 이틀 전에 가스 요금을 준비했고, 공격 전에도 시도했지만 실패한 것으로 나타났습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

공격자는 이익을 얻은 후 자금의 일부를 다음 사람에게 이체합니다.

USDC, SOL, suiETH는 Sui Bridge, Circle, Wormhole, Mayan 등의 크로스 체인 브리지를 통해 EVM 주소 0x89012a55cd6b88e407c9d4ae9b3425f55924919b에 크로스 체인으로 연결됩니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

그중 5.2341 WBNB가 BSC 주소 0x89012a55cd6b88e407c9d4ae9b3425f55924919b에 크로스 체인으로 연결되었습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

다음으로 공격자는 값을 추가합니다.

Suilend에 1,000만 달러의 자산이 입금되었습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

공격자는 또한 24,022,896 SUI를 새로운 주소 0xcd8962dad278d8b50fa0f9eb0186bfa4cbdecc6d59377214c88d0286a0ac9562로 전송했지만 아직 전송하지는 않았습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

다행히도 Cetus에 따르면 SUI 재단과 다른 생태계 구성원의 협력으로 SUI에서 도난당한 1억 6,200만 달러의 자금이 성공적으로 동결되었습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

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

다음으로, 체인상 자금세탁 방지 및 추적 도구인 MistTrack을 사용하여 크로스체인 자금을 수신하는 EVM의 주소 0x89012a55cd6b88e407c9d4ae9b3425f55924919b를 분석합니다.

이 주소는 BSC에서 5.2319 BNB를 받았지만 아직 이체되지 않았습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

해당 주소에는 이더리움에서 3,000 USDT, 4,088만 USDC, 1,771 SOL, 8,130.4 ETH가 입금되었습니다.

그 중 USDT, USDC, SOL은 CoW Swap, ParaSwap 등을 통해 ETH로 교환됩니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

다음으로, 해당 주소는 20,000 ETH를 0x0251536bfcf144b88e1afa8fe60184ffdb4caf16 주소로 전송했지만 아직 전송되지 않았습니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

이 주소의 현재 Ethereum 잔액은 3,244 ETH입니다.

SlowMist: Cetus가 2억 3천만 달러에 도난당했습니다. 공격 방법과 자금 이체를 분석합니다.

MistTrack은 위에 언급된 주소를 악성 주소 데이터베이스에 추가했습니다. 동시에, 우리는 주소 잔액을 계속 모니터링할 것입니다.

요약하다

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

공유하기:

작성자: 慢雾科技

이 글은 PANews 입주 칼럼니스트의 관점으로, PANews의 입장을 대표하지 않으며 법적 책임을 지지 않습니다.

글 및 관점은 투자 조언을 구성하지 않습니다

이미지 출처: 慢雾科技 침해가 있는 경우 저자에게 삭제를 요청하세요.

PANews 공식 계정을 팔로우하고 함께 상승장과 하락장을 헤쳐나가세요
추천 읽기
20분 전
38분 전
1시간 전
2시간 전
3시간 전
3시간 전

인기 기사

업계 뉴스
시장 핫스팟
엄선된 읽을거리

엄선 특집

App内阅读