MO - 단일 기능의 이중 약점

이 기사는 기계로 번역되었습니다
원문 표시

MO라는 메인 토큰을 사용하여 OPTIMISTIC에서 실행 중인 프로젝트가 2024년 3월 14일에 악용되어 약 $413,000의 손실을 입었습니다. 악용된 계약에는 공격자가 대출 계약과 쌍 계약 모두에서 테더 USDT(USDT) 훔칠 수 있는 기능에 두 가지 약점이 있습니다.

개요

공격자: https://optimistic.etherscan.io/address/0x4e2c6096985e0b2825d06c16f1c8cdc559c1d6f8

취약한 계약:

https://optimistic.etherscan.io/address/0xae7b6514af26bcb2332fea53b8dd57bc13a7838e

거래 공격: https://optimistic.etherscan.io/tx/0x4ec3061724ca9f0b8d400866dd83b92647ad8c943a1c0ae9ae6c9bd1ef789417

Verichains를 읽어주셔서 감사합니다! 새로운 게시물을 받고 내 작업을 지원하려면 무료로 구독하세요.

익스플로잇 분석

공격 거래 이후 공격은 매우 간단했습니다. 루프를 활용하여 테더 USDT(USDT) 빌리고 즉시 상환하는 것이었습니다. 동일한 거래 내에서 이 프로세스를 여러 번 반복함으로써 공격자는 상당한 양의 테더 USDT(USDT) 빌릴 수 있었고 동시에 MO 토큰을 교환하여 쌍 내에서 더 많은 테더 USDT(USDT) 얻었습니다.

차용 기능을 조사합니다.

차용 기능을 활용할 때 사용자는 담보로 BorrowToken 금액을 예치해야 합니다. 빌릴 수 있는 SupplyToken의 수량은 담보 금액과 시장 가격에 따라 다릅니다. 또한 시장 가격을 높이기 위해 쌍 내의 빌린 토큰 금액도 소각됩니다(BURN 주소로 전송).

상환 기능을 살펴보세요:

상환 기능은 경과 시간을 기준으로 이자를 계산하지만 타임스탬프는 블록 증가할 때만 증가합니다. 결과적으로, 사용자가 단일 블록 내에서 잔액을 상환하는 경우 수수료가 발생하지 않습니다.

앞서 언급한 기능에서 도출된 논리를 고려하면 즉시 차용하고 상환하면 시장 가격이 상승하여 수수료가 면제되고 후속 거래에서 더 많은 테더 USDT(USDT) 빌릴 수 있다는 것이 분명합니다. 공격 과정 전반에 걸쳐 MO 토큰의 가격도 상승하므로 공격자는 스와핑을 통해 해당 쌍에서 상당한 양의 테더 USDT(USDT) 획득할 수 있습니다.

취약점의 근본 원인은 쌍 내에서 토큰을 소각하고 시장 가격 논리를 활용하는 데 있습니다.

교훈

차용 기능에는 주의를 기울여야두 가지 중요한 약점이 있습니다.

첫째, 쌍에서 외부 목적지로 토큰을 직접 전송하는 것은 극도로 위험한 행동을 나타냅니다. UniswapV2 쌍 내의 토큰 잔액은 K 상태를 계산하는 데 중요한 역할을 하며 토큰 가격에 직접적인 영향을 미칩니다. 결과적으로 유사한 동작을 보이는 모든 작업은 관리자 측이나 명확하게 검증된 기능으로 제한되어야 합니다.

둘째, 쌍의 잔고에서 계산된 가격에 의존하면 시스템이 가격 조작에 취약 해집니다. 쌍에 소각 토큰을 포함하지 않더라도 현재 계약은 여전히 ​​플래시론 공격에 취약합니다. 공격자는 플래시론 의 상당한 자산을 활용하여 대출 기능을 호출하기 전에 MO 토큰 가격을 부풀린 다음 MO를 원래 가격으로 줄일 수 있습니다. 차입 과정에서 가격이 부풀려져 공격자가 계약에서 상당량의 테더 USDT(USDT) 훔칠 수 있습니다.

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