피드로 돌아가기
The Resolv USR Exploit: How a Missing Max-Mint Check Let an Attacker Print $25M From $100K
Dev.toDev.to
Security

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

ohmygod2026년 3월 26일12intermediate

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일)을 강제하면 단일 인프라 탈취가 발생해도 손해를 제한할 수 있습니다.

원문 읽기