피드로 돌아가기
Dev.toSecurity
원문 읽기
Resolv Labs의 USR 스테이블코인이 SERVICE_ROLE 키 탈취와 민팅 함수의 최대값 검증 부재로 $100K 담보에서 8천만 개 토큰을 무분별하게 발행해 $25M을 17분 내 탈취당함
The Resolv USR Exploit: How a Missing Max-Mint Check Let an Attacker Print $25M From $100K
AI 요약
Context
Resolv의 USR 스테이블코인 프로토콜은 2단계 민팅 아키텍처(requestSwap → completeSwap)를 사용했으나, 담보 입금액과 발행 토큰량 사이의 온체인 비율 검증이 없었습니다. 프로토콜은 $500M TVL을 보유했으나 3월 중순까지 75% 하락했습니다.
Technical Solution
- 민팅 함수의 무제한 권한 구조: SERVICE_ROLE EOA(단일 계정)가 서명하면 계약이 어떤 수량이든 검증 없이 USR 토큰 발행
- 부재한 온체인 불변식: 민팅 함수에
require(mintAmount <= depositAmount * MAX_MINT_RATIO)같은 담보 비율 검증 로직 없음 - 단일 점장애 인프라: AWS KMS의 SERVICE_ROLE 키 탈취로 공격자가 Resolv의 자체 민팅 키를 사용해 승인 트랜잭션 서명
- 부재한 보호 기제: 민팅당 최대 한도(SUPPLY_CAP), 시간 윈도우별 레이트 리밋(WINDOW_CAP), 타임락 메커니즘 없음
- 공격 실행: 공격자가 ~$100K-$200K USDC 입금으로 8천만 개 USR 발행(400-500배 과다 발행), Curve·KyberSwap·Velodrome에서 ~$23-$25M ETH로 환전
Impact
- 4백만 개 USR 발행으로 담보 대비 4백배 이상 과다 발행
- 17분 내 ~$25M ETH 탈취
- USR 가격 $1.00에서 $0.025로 급락(97.5% 하락)
- Morpho(Gauntlet) ~$7.5M 노출, Curve USR/USDC 유동성 소진
- TVL 75% 사전 하락(2월 ~$400M → 3월 중순 ~$100M)
Key Takeaway
스테이블코인 프로토콜의 민팅 함수는 핵심 보안 경계로서 단일 오프체인 가정(서명 키 미탈취)에 의존하면 안 되며, 온체인 불변식(담보 비율 검증, 공급량 상한, 레이트 리밋)과 다중 서명 요구사항, 타임락이 필수입니다. 계약 감사만으로는 부족하며 오프체인 컴포넌트와 키 관리 아키텍처 전체를 신뢰 경계 기준으로 재평가해야 합니다.
실천 포인트
스테이블코인이나 자산 발행 권한을 다루는 DeFi 프로토콜을 설계할 때, 민팅 함수에 (1) 입금액 대비 발행량의 최대 비율 검증, (2) 시간당 발행량 상한선, (3) 총 공급량 상한선을 컨트랙트에 하드코딩하고, (4) 민팅 권한을 단일 EOA 대신 2-of-3 이상 다중서명으로 변경하고, (5) 중요 매개변수 변경 시 타임락(1-7일)을 강제하면 단일 인프라 탈취가 발생해도 손해를 제한할 수 있습니다.