2025년 5월 22일, Sui 블록체인의 최대 집중 유동성 DEX인 Cetus Protocol이 치명적인 익스플로잇 공격을 받아 여러 풀에서 유동성이 탈취되었으며, 피해 규모는 약 2억 2,300만 달러로 추산됩니다. 이 사건은 2025년 최대 DeFi 해킹 사례로, 스마트 컨트랙트 보안, 특히 고정소수점 산술 연산과 관련된 치명적인 취약점을 부각시켰습니다.
이번 익스플로잇은 커스텀 오버플로우 방지 함수인 checked_shlw()의 결함에서 비롯되었습니다. 잘못된 상수와 비교 로직으로 인해 이 함수는 고정소수점 u256 수학에서 사용되는 왼쪽 시프트 연산을 수행하기 전에 안전하지 않은 조건을 감지하지 못했습니다. 이 허점으로 인해 특정 유동성에 필요한 토큰 입력량을 계산하는 등의 델타 계산 과정에서 **최상위 비트의 무결성 없는 절삭(silent truncation)**이 발생했습니다. 공격자는 유동성 크기, 틱/가격 범위 설정 등의 매개변수를 정밀하게 조작하여 프로토콜이 필요 예치금을 사실상 토큰 1단위로 계산하도록 유도하는 동시에, 자신의 포지션에 엄청난 양의 유동성을 기록시켰습니다. 이렇게 부풀려진 포지션이 온체인에 기록되자, 공격자는 유동성을 제거하고 실제 보유 자산을 인출하여 풀을 사실상 고갈시켰습니다.
집중 유동성과 고정소수점 수학 이해하기
Cetus Protocol은 집중 유동성 마켓 메이커(CLMM) 방식을 채택하고 있습니다. 이는 유동성 공급자(LP)가 선택한 가격 범위(틱 구간) 내에서만 자산을 공급하는 정교한 방식입니다. 유동성을 균일하게 분배하는 전통적인 AMM과 달리, CLMM은 LP가 특정 하한·상한 구간 사이에 자본을 집중할 수 있도록 합니다. 이 설계는 자본 효율성을 크게 향상시키지만, 다음 두 가지 요소 간의 변환에 정밀한 고정소수점 수학에 대한 강한 의존성을 수반합니다:
- 포지션에 기록되는 유동성 수량
- 예치하거나 인출할 수 있는 실제 토큰 수량
사용자가 유동성을 추가할 때, 프로토콜은 현재 가격과 선택한 범위를 기반으로 토큰 델타(필요한 기초 토큰 수량)를 계산합니다. 반대로 유동성을 제거할 때는 역산을 통해 해당 포지션이 인출할 수 있는 자산 수량을 결정합니다.
Cetus 사건의 핵심 취약점은 바로 이 복잡한 관계를 악용했습니다. "예치해야 할 금액" 계산이 너무 작게 조작될 수 있고, 동시에 포지션에는 대규모 유동성이 기록된다면, 공격자는 나중에 해당 유동성을 제거하여 풀에서 실제 보유 자산을 인출할 수 있습니다. 이는 복잡한 수학적 연산을 포함하는 DeFi 프로토콜에서 흔히 나타나는 공격 벡터를 잘 보여줍니다.
u256 시프트의 치명적 취약점
이 대규모 DeFi 해킹의 근본 원인은 고정소수점 u256 산술 연산(일반적으로 2^64 스케일링 팩터를 적용하기 위한 << 64)에서 왼쪽 시프트를 안전하게 수행하도록 설계된 헬퍼 함수의 버그였습니다. Sui와 같은 Move 기반 시스템에서는 모든 연산에 오버플로우 검사가 일관되게 적용되지 않기 때문에, 비트 시프트에 대한 수동 안전장치가 매우 중요합니다.
Cetus는 u256 값을 왼쪽으로 64비트 시프트했을 때 256비트 경계를 초과하는지 검증하는 오버플로우 방지 헬퍼 함수 checked_shlw()를 구현했습니다. 그러나 잘못된 상수와 비교 로직으로 인해, 이 중요한 검사가 거부되어야 할 특정 큰 입력값에 대해 우회될 수 있었습니다.
구체적으로, 두 가격(sqrt_price_0과 sqrt_price_1) 사이의 유동성 공급에 필요한 기초 토큰(Token A) 수량을 계산하는 get_delta_a 함수는 checked_shlw()를 호출합니다. 여기서 checked_shlw()의 목적은 Token A 계산 시 분자가 시프트될 때 오버플로우가 발생하지 않도록 보장하는 것입니다.
결함은 checked_shlw()의 오버플로우 검사에 있었는데, 이 검사는 0xffffffffffffffff << 192(즉, 2^256 - 2^192에 해당)라는 마스크를 사용했습니다. 이 마스크는 올바른 임계값보다 현저히 큰 값입니다. 그 결과, 2^192보다 크지만 이 잘못된 마스크보다 작은 입력값은, 왼쪽 시프트 시 실제로 u256 범위를 초과함에도 불구하고 검사를 통과할 수 있었습니다. 이어지는 왼쪽 시프트 연산은 무결성 없는 절삭을 일으켜 부정확하고 훨씬 작은 값을 산출했습니다.
아래 그림은 취약한 구현과 패치된 버전 간의 차이를 보여줍니다. 올바른 경계값은 훨씬 큰 0xffffffffffffffff << 192가 아니라 1 << 192이어야 했습니다. 공격자는 이 결함 있는 검사를 교묘하게 악용하여, 1 wei의 Token A와 같은 최소한의 금액만 예치하면서 비정상적으로 많은 양의 LP 토큰을 발행했습니다.

Cetus DeFi 해킹 해부
공격자는 여러 풀에 동일한 기법을 적용했지만, 근본적인 공격 흐름은 일관되게 유지되었습니다. 이 정교한 블록체인 보안 침해에 관련된 단계를 이해하기 위해 특정 트랜잭션을 분석해 보겠습니다.
1. 플래시론을 이용한 풀 가격 조작
공격은 공격자가 플래시론을 활용하여 10,024,321.28 haSUI를 신속하게 획득하는 것으로 시작되었습니다. 이후 5,765,124.79 SUI를 스왑 아웃하여 의도적으로 풀 가격을 18,956,530,795,606,879,104에서 18,425,720,184,762,886으로 하락시켰습니다. 이 전략적인 가격 이동은 매우 중요했는데, 집중 유동성 설계에 내재된 "단일 사이드/거의 단일 토큰" 유동성 특성을 활용하여 한 토큰만 최소한으로 필요한 CLMM 포지션을 열 수 있었기 때문입니다.

2. "거의 무료" 예치로 유동성 추가
다음으로, 공격자는 매우 좁은 틱 범위(예: 300000–300200)를 선택하고 목표 유동성을 정밀하게 조정했습니다. CLMM 시스템에서 토큰 델타 계산은 범위 경계에서의 제곱근 가격에 크게 의존하며, 좁은 범위는 특정 중간 값이 작은 변화에 매우 민감하게 반응하도록 만들 수 있습니다.
이 매개변수들을 정밀하게 조정함으로써, 공격자는 내부 곱셈이 u256 중간 값을 생성하도록 유도했습니다. 이 값은 왼쪽 시프트 시 오버플로우가 발생했어야 했지만, 결함 있는 checked_shlw() 검사를 성공적으로 통과했습니다. 안전하지 않은 시프트로 인한 절삭의 직접적인 결과로, 프로토콜은 필요한 Token A 수량을 사실상 1단위로 계산했으며, 동시에 **엄청난 양의 유동성(즉, 10,365,647,984,364,446,732,462,244,378,333,008)**으로 포지션을 발행하고 기록했습니다.

3. 유동성 제거로 실제 보유 자산 추출
부풀려진 유동성을 보유한 것처럼 온체인에 기록된 포지션을 이용하여, 공격자는 마치 포지션이 정상적으로 자금이 조달된 것처럼 유동성을 제거하고 자산을 인출했습니다. 이 핵심 단계에서 풀의 실제 보유 자산이 체계적으로 탈취되어 2억 2,300만 달러라는 막대한 손실이 발생했습니다.
4. 여러 풀에 걸쳐 반복
익스플로잇 기법을 성공적으로 검증한 후, 공격자는 여러 풀에 걸쳐 동일한 흐름을 반복하여 총 손실을 빠르게 키워나갔고, 역대 최대 규모의 DeFi 해킹 중 하나를 실행했습니다.
Web3 최고의 보안 감사 기관
출시 전 설계, 코드, 비즈니스 로직을 검증하세요
주요 교훈 및 블록체인 보안 시사점
Cetus 사건은 복잡한 DeFi 프로토콜에서 블록체인 보안의 복잡한 도전 과제를 다시 한번 상기시켜 줍니다. 근본 원인은 고정소수점 수학 경로에서의 u256 왼쪽 시프트를 둘러싼 결함 있는 오버플로우 검사였습니다. 이로 인해 오버플로우된 시프트가 상위 비트를 무결성 없이 절삭하여, 필요 예치금이 거의 0에 가깝게 보이면서도 LP 포지션에는 막대한 유동성이 기록되어 결국 보유 자산 탈취가 가능해졌습니다.
스마트 컨트랙트 보안을 위한 교훈:
- 산술 연산의 엄밀성: 고정소수점 산술에서 시프트, 스케일링 팩터, 반올림, 경계 조건을 다룰 때 각별히 엄격하게 접근해야 합니다. 이 부분들은 치명적인 취약점의 흔한 발생 원인입니다.
- 검증된 기본 요소 활용: 임시방편적인 헬퍼 함수 개발보다 검증된 안전 수학 기본 요소나 공식화된 불변식 사용을 우선시해야 합니다. 커스텀 헬퍼가 반드시 필요하다면, 상수와 임계값을 극도로 신중하게 검증해야 합니다.
- 포괄적인 테스트: 최댓값, 경계 틱, 적대적 매개변수 조합을 포괄하는 광범위한 엣지 케이스 및 속성 기반 테스트를 구현해야 합니다. 이 선제적인 접근 방식은 배포 전에 미묘한 결함을 발견하는 데 도움이 됩니다.
- 지속적인 모니터링: 철저한 감사가 이루어지더라도, 실시간 모니터링 솔루션은 필수적입니다. BlockSec의 Phalcon Security와 같은 도구는 의심스러운 온체인 활동과 진행 중인 잠재적 익스플로잇을 감지하여 중요한 최후의 방어선을 제공합니다.
Cetus 사건은 정교한 DeFi 해킹으로부터 보호하기 위해 꼼꼼한 코드 검토, 고급 테스트 방법론, 지속적인 온체인 모니터링을 결합한 다층적 블록체인 보안 접근 방식의 중요성을 강조합니다.
참고 자료
BlockSec 소개
BlockSec은 풀스택 블록체인 보안 및 암호화폐 컴플라이언스 제공업체입니다. BlockSec은 고객이 코드 감사(스마트 컨트랙트, 블록체인 및 지갑 포함)를 수행하고, 실시간으로 공격을 차단하며, 사건을 분석하고, 불법 자금을 추적하고, 프로토콜 및 플랫폼의 전체 수명 주기에 걸쳐 AML/CFT 의무를 이행할 수 있도록 돕는 제품과 서비스를 개발합니다.
BlockSec은 권위 있는 학술 컨퍼런스에서 다수의 블록체인 보안 논문을 발표하고, DeFi 애플리케이션의 여러 제로데이 공격을 보고했으며, 다수의 해킹을 차단하여 2,000만 달러 이상을 구조하고, 수십억 달러 규모의 암호화폐를 보호해 왔습니다.
- 공식 웹사이트: https://blocksec.com/
- 공식 트위터 계정: https://twitter.com/BlockSecTeam



