Truebit Protocol, 2644만 달러 규모의 계약 취약점 분석
- 핵심 요점: Truebit Protocol이 정수 오버플로우 취약점으로 인해 해커의 공격을 받았습니다.
- 핵심 요소:
- 약 2644만 달러 상당의 ETH 손실.
- 취약점은 구버전 Solidity 계산 로직 결함에서 비롯됨.
- 공격자가 거대한 수치를 입력하여 오버플로우를 유발.
- 시장 영향: 오래된 DeFi 프로토콜의 긴급한 보안 감사 필요성을 경고.
- 시의성 표시: 단기적 영향.
2026년 1월 8일, Truebit Protocol 프로토콜이 해킹을 당해 8,535.36 ETH(약 2,644만 달러)의 손실을 입었으며, Truebit Protocol 공식 측은 다음 날 새벽에 이를 확인하는 글을 발표했습니다. ExVul 보안 팀은 이번 공격 사건에 대한 상세한 취약점 분석을 진행했으며, 분석 결과는 다음과 같습니다:
공격 과정
공격자 주소:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
공격 트랜잭션 해시:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
공격자는 getPurchasePrice→0xa0296215→0xc471b10b 트랜잭션을 4번 순환 호출하여 공격을 완료했으며, 첫 번째 순환을 예로 분석합니다.
1. 공격자는 먼저 getPurchasePrice(240442509453545333947284131) 함수를 호출하여 0을 반환받습니다.

2. 공격자가 0xa0296215(c6e3ae8e2cbab1298abaa3) 함수를 호출하며, 동시에 msg.value는 0입니다. 마지막으로 240442509453545333947284131개의 TRU를 성공적으로 발행합니다.

3. 공격자가 0xc471b10b(c6e3ae8e2cbab1298abaa3) 함수를 호출합니다. 마지막으로 240442509453545333947284131개의 TRU를 소각하고 5105.06개의 ETH를 획득합니다.
공격 논리 분석
위의 공격 과정을 통해 getPurchasePrice 함수와 0xa0296215 함수의 논리에 문제가 있음을 명확히 발견할 수 있습니다. 아래에서 심층 분석을 시작합니다(계약이 오픈소스가 아니므로 아래 코드는 모두 디컴파일된 코드입니다).


두 함수의 공통점을 비교해 보면, 0x1446 함수는 지정된 수량의 TRU를 구매하는 데 필요한 ETH를 얻는 데 사용됩니다. 분명히 0x1446 함수의 논리에 문제가 있어 ETH 계산이 잘못되었습니다. 아래에서 0x1446 함수 내부의 논리를 상세히 분석합니다.

0x1446 함수의 논리를 관찰하면, 최종 계산 결과 v13 == 0이므로 위의 계산 논리에 문제가 발생했음이 분명합니다. 알아야 할 점은 0x18ef 기능이 _SafeMul과 동일하므로, 문제는 네이티브 덧셈 v12 + v9(계약 버전은 ^0.6.10 이므로 오버플로우 검사 없음)를 사용하는 데 있습니다.
v12와 v9는 각각 다음을 나타냅니다:

위 분석을 통해, 공격자의 공격 아이디어는 엄청나게 큰 _amountIn을 입력하여 v12 + v9가 오버플로우되어 매우 작은 값이 되게 하고, 최종적으로 (v12 + v9) / v6 == 0이 되게 하는 것입니다.
요약
Truebit Protocol의 이번 공격 사건의 근본 원인은 그들의 토큰 구매 가격 계산 논리에 심각한 정수 오버플로우 취약점이 존재했기 때문입니다. 계약이 Solidity ^0.6.10 버전을 사용하고 있으며 핵심 산술 연산에 대한 안전 검사를 수행하지 않았기 때문에, 결국 8,535.36 ETH의 중대한 손실을 초래했습니다. 현재 새 버전의 Solidity 자체는 오버플로우 취약점을 완화시켰습니다. 이번 공격 사건은 해커가 AI를 활용하여 이미 출시된 오래된 DeFi 프로토콜을 자동으로 스캔하여 발견한 취약점(최근의 Balancer 및 yETH 공격 포함)을 악용한 것으로 보입니다. 우리는 이러한 AI를 이용한 오래된 DeFi 프로토콜 공격 사건이 최근 점점 더 많아질 것으로 생각하므로, 프로젝트 측이 계약 코드에 대해 새로운 보안 감사를 수행하고, 취약점을 발견하면 계약을 최대한 빨리 업그레이드하거나 자산을 이전하며, 체인 상 모니터링을 잘 수행하여 이상을 적시에 발견하고 손실을 최소화하는 것이 좋습니다.


