
리뷰: MOBOX 해킹 분석
글: Doris
배경
2024년 3월 14일, 슬로우미스트(SlowMist) MistEye 보안 모니터링 시스템에 따르면 옵티미즘(Optimism) 체인 상의 탈중앙화 대출 프로토콜 MOBOX가 공격을 받아 약 75만 달러의 손실이 발생했다. 슬로우미스트 보안 팀은 이번 공격 사건을 분석하여 그 결과를 아래와 같이 공유했다.

(https://twitter.com/SlowMist_Team/status/1768167772230713410)
관련 정보
공격자 주소:
0x4e2c6096985e0b2825d06c16f1c8cdc559c1d6f8
0x96f004c81d2c7b907f92c45922d38ab870a53945
피해를 입은 컨트랙트 주소:
0xae7b6514af26bcb2332fea53b8dd57bc13a7838e
공격 트랜잭션:
0x4ec3061724ca9f0b8d400866dd83b92647ad8c943a1c0ae9ae6c9bd1ef789417
공격 핵심
이번 공격의 핵심은 두 가지이다. 첫째, 공격자는 컨트랙트 내 borrow() 함수의 결함을 이용해 매번 해당 함수를 호출할 때마다 추천인 주소에 보상을 분배받도록 했다. 보상은 이체되는 토큰 수량에 기반해 계산되므로, 공격자는 추천인에게 지급된 보상을 다시 공격 대상 컨트랙트로 되돌려 다음 차례의 대출 금액을 늘릴 수 있었다. 둘째, borrow() 함수를 호출할 때마다 풀 내 일정 부분의 MO 토큰이 소각되어 MO 토큰 가격이 지속적으로 상승하게 되었고, 결국 공격자는 반복적인 대출과 보상 중첩을 통해 수익을 얻었다.
트랜잭션 분석
전체 공격 과정을 보면, 먼저 취약한 borrow() 함수를 반복적으로 호출하고 바로 이어 redeem() 함수를 호출해 상환한 후, 추천인에게 할당된 토큰을 다시 공격 컨트랙트로 이체하는 방식으로 진행되었다.

borrow() 함수를 자세히 분석하면, 매번 함수 호출 시 풀 내 일부 MO 토큰이 소각되는 것을 확인할 수 있다.

그러나 대출되는 USDT의 수량은 풀 내 MO 토큰의 가격을 기준으로 산정된다. MO 토큰은 소각으로 인해 가격이 계속 상승했고, 결국 공격자는 극소량의 MO 토큰으로도 대량의 USDT를 대출받는 것이 가능해졌다.

또한 매번 대출 시 추천인 주소에 배당금 형태의 보상이 지급되며, 이 함수는 입력된 MO 토큰의 수량에 따라 보상량을 계산한다.

하지만 추천인 주소 역시 공격자(0x96f004c81d2c7b907f92c45922d38ab870a53945)가 통제하고 있으므로, 공격자는 대출 절차 완료 후 해당 보상을 다시 자신에게 돌려받아 다음 번 대출 규모 및 보상금을 증폭시킬 수 있었다.

위와 같은 반복 작업을 거쳐 공격자는 MO 토큰의 가격을 끌어올렸고, 최종적으로 극소량의 MO 토큰으로도 컨트랙트 내 대규모 USDT를 대출받아, 불균형한 풀에서 전량 USDT를 인출함으로써 수익을 실현하고 철수했다.

요약
이번 공격의 핵심은, 공격자가 borrow() 함수가 풀 내 일부 토큰을 소각하는 메커니즘을 활용해 자산을 반복적으로 대출하면서 풀 내 토큰 가격을 상승시키고, 동시에 추천인 보상을 획득한 후 이를 다시 회수하여 다음 차례의 대출 및 보상 규모를 증폭시키는 방식으로 가격 조작과 보상 중첩을 반복했다는 점이다. 슬로우미스트 보안 팀은 유사한 기능을 설계할 경우 록업 기간을 도입할 것을 권장하며, 대출 가격 모델 설계 시 다양한 요소를 고려해 동일한 사고가 재발하지 않도록 주의해야 한다고 조언했다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News












