누군가가 20만 개를 거의 1억 개에 거래한 후, 디파이 스테이블코인이 또다시 공격을 받았습니다.

이 기사는 기계로 번역되었습니다
원문 표시
DeFi 프로젝트 팀은 자신들이 제어하는 ​​모듈 반드시 안전하다고 가정해서는 안 됩니다.

글쓴이: 에릭, 포사이트 뉴스

오늘 베이징 시간 오전 10시 21분경, 델타 중립 전략을 사용하여 스테이블코인 USR을 발행하는 Resolv Labs가 해킹당했습니다. 0x04A2로 시작하는 주소에서 10만 USDC를 사용하여 Resolv Labs 프로토콜을 통해 5천만 USR을 민트.

해당 사건이 알려지자 USR 가격은 즉시 약 0.25달러까지 하락했다가, 현재(작성 시점) 약 0.80달러까지 회복했습니다. RESOLV 토큰 가격 또한 한때 거의 10% 가까이 하락했습니다.

해커들은 같은 수법으로 10만 USDC를 이용해 3천만 USR을 민트. USR의 페그가 크게 약화되자 거래자 신속하게 움직였고, USR, wstUSR 및 기타 담보를 지원하던 Morpho의 많은 대출 시장이 거의 완전히 고갈되었습니다. BNB 체인의 Lista DAO 또한 신규 대출 신청을 중단했습니다.

영향을 받는 것은 이러한 대출 프로토콜만이 아닙니다. Resolv Labs 프로토콜 또한 사용자가 RLP 토큰을 민트 수 있도록 허용하는데, 이 토큰은 가격 변동성이 크고 수익률이 높지만, 프로토콜로 인해 발생하는 손실에 대한 책임도 사용자에게 전가합니다. 현재 약 3천만 개의 RLP 토큰이 유통되고 있으며, Stream Finance가 1천3백만 개 이상을 보유하고 있어 순 리스크 노출액은 약 1천7백만 달러에 달합니다.

맞습니다. 과거 xUSD 사태로 큰 타격을 입었던 스트림 파이낸스가 또다시 위기에 처할 수도 있습니다.

이 글을 쓰는 시점에서 해커는 USR을 USDC와 USDT로 변환하고 이더 계속 매입하여 이미 1만 개 이상의 코인을 구매했습니다. 20만 개의 USDC를 사용하여 해커는 2천만 달러 이상의 자산을 빼돌렸으며, 베어장 (Bear Market) 에서 "100배 수익률 코인"을 찾아냈습니다.

이번에도 "엄격함의 부족"으로 인한 허점이 악용되었습니다.

작년 10월 11일의 급락으로 인해 델타 중립 전략을 사용하는 많은 스테이블코인이 ADL(자동 레버리지 축소)로 인해 담보 손실을 입었습니다. 알트코인을 자산으로 사용하는 일부 프로젝트는 훨씬 더 큰 손실을 입거나 자금을 가지고 도망치기도 했습니다( "xUSD 이후 USDX 풀도 고갈된 것 같다" 참조).

이번 공격을 받은 Resolv Labs 역시 USR을 발행하는 데 유사한 방식을 사용했습니다. 이 프로젝트는 2025년 4월 Cyber.Fund와 Maven11이 주도하고 Coinbase Ventures가 참여한 1천만 달러 규모의 시드 투자를 유치했다고 발표했으며, 5월 말과 6월 초에 자체 토큰인 융자 출시했습니다.

하지만 Resolv Labs가 공격받은 이유는 극심한 시장 상황 때문이 아니라 USR 민트 메커니즘이 "충분히 엄격하지 않았기" 때문이었습니다.

아직까지 어떤 보안 회사나 공식 기관도 이번 해킹 사건의 원인을 분석하지 않았습니다. DeFi 커뮤니티 회원인 YAM의 예비 ​​분석에 따르면, 이번 공격은 프로토콜 백엔드에서 민트 계약에 매개변수를 제공하는 데 사용되는 SERVICE_ROLE 함수를 해커들이 장악하면서 발생했을 가능성이 높습니다.

Grok의 분석에 따르면, 사용자가 USR을 민트 때 온체인 요청을 시작하고 다음과 같은 매개변수를 포함하여 계약의 requestMint 함수를 호출합니다.

_depositTokenAddress: 토큰이 예치되는 주소;

_금액: 저장할 금액;

_minMintAmount: 수령 예상 최소 USR 금액(미끄러짐 방지 기준점).

이후 사용자는 USDC 또는 USDT를 계약에 예치합니다. 프로젝트의 백엔드 SERVICE_ROLE은 요청을 모니터링하고, Python 오라클 사용하여 예치된 자산의 가치를 확인한 다음, completeMint 또는 completeSwap 함수를 호출하여 실제로 민트 USR의 양을 결정합니다.

문제는 민트 계약이 SERVICE_ROLE에서 제공하는 _mintAmount를 완전히 신뢰한다는 사실에 있습니다. 즉, 해당 수치가 Python에 의해 오프체인에서 검증되었다고 가정하는 것입니다. 따라서 상한선을 설정하거나 온체인 오라클 통해 검증하지 않고 mint(_mintAmount)를 직접 실행합니다.

이를 바탕으로 YAM은 해커가 프로젝트 팀이 관리해야 했던 SERVICE_ROLE을 탈취(내부 오라클 오류, 내부자 소행 또는 키 도난으로 인한 것일 수 있음)하여 민트 중에 _mintAmount를 5천만으로 직접 설정함으로써 10만 USDC로 5천만 USR을 민트 하는 공격을 성공시켰다고 의심합니다.

결론적으로 그록은 레졸브가 프로토콜 설계 시 사용자 민트 요청을 수신하는 데 사용되는 주소(또는 컨트랙트)가 해커에 의해 제어될 가능성을 고려하지 않았다고 지적합니다. USR 민트 요청이 최종적으로 USR을 민트 컨트랙트에 제출될 때, 최대 민트 이 설정되지 않았고, 민트 컨트랙트는 2차 검증을 위해 온체인 오라클 사용하지 않았습니다. 대신, SERVICE_ROLE에서 제공하는 모든 매개변수를 직접 신뢰했습니다.

예방 조치 또한 불충분했습니다.

YAM은 해킹 원인에 대한 추측 외에도 프로젝트 팀이 위기 상황에 대처할 준비가 부족했다고 지적했습니다.

YAM은 X에서 Resolv Labs가 최초 해킹 발생 후 3시간 만에 프로토콜을 중단했으며, 그중 약 1시간은 다중 서명 거래에 필요한 4개의 서명을 수집하는 데 소요되었다고 밝혔습니다. YAM은 긴급 중단에는 단 하나의 서명만 필요해야 하며, 이러한 권한은 가능한 한 팀 구성원이나 신뢰할 수 있는 외부 운영자에게 부여되어야 한다고 생각합니다. 이는 온체인 이상 징후에 대한 인식을 높이고, 신속한 중단 가능성을 개선하며, 다양한 시간대를 효과적으로 커버할 수 있을 것입니다.

단 하나의 서명만으로 프로토콜을 일시 중단하자는 제안은 다소 급진적이지만, 서로 다른 시간대에 걸쳐 여러 서명을 요구한다면 긴급 상황에서 상당한 지연을 초래할 수 있습니다. 이번 사건을 통해 얻은 교훈은 온체인 동작을 지속적으로 모니터링하는 신뢰할 수 있는 제3자를 도입하거나, 긴급 일시 중단 권한이 있는 모니터링 도구를 사용하는 것입니다.

탈중앙화 금융(DeFi) 프로토콜에 대한 해커 공격은 오랫동안 계약 취약점에 국한되어 왔습니다. 하지만 레졸브 랩(Resolv Labs) 사태는 프로젝트 팀들에게 경종을 울립니다. 프로토콜 보안과 관련하여, 프로토콜의 어떤 부분도 신뢰할 수 없다는 전제하에, 매개변수와 관련된 모든 연결 고리는 최소 두 번의 검증을 거쳐야 하며, 심지어 프로젝트 팀이 운영하는 백엔드 시스템조차도 예외가 아니라는 것입니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
87
즐겨찾기에 추가
18
코멘트