탈중앙화 거래소 Bunni는 화요일 840만 달러의 손실을 초래한 해당 공격 에 대한 사후 보고서를 발표했습니다.
보고서 에 따르면, 이 공격은 Unichain의 weETH/ETH 거래쌍과 이더리움 메인넷의 USDC/USDT 거래쌍, 두 개의 풀에 영향을 미쳤습니다.
Bunni는 출금 시 유휴 잔액을 업데이트하는 스마트 컨트랙트의 반올림 방향에 문제가 있음을 공격의 근본 원인으로 지목했습니다.
보고서는 "이 공격의 핵심은 소액 출금으로 인한 잘못된 유동성 감소였습니다."라고 설명하며, "풀의 유휴 잔액 업데이트를 처리하는 [BunniHubLogic::withdraw()] 코드에서 이 오류가 발생했습니다." 라고
덧붙였습니다. Bunni는 공격자가 이 오류를 악용하여 풀 가격과 유동성을 조작하는 플래시 대출 공격을 감행했다고 덧붙였습니다.
먼저, 플래시 대출을 통해 300만 USDT를 차입하고 여러 차례 스왑을 수행하여 가격을 조작하여 사용 가능한 USDC를 28 wei로 줄였습니다. 공격자는 반올림 오류를 악용하여 44건의 소액 인출을 단행하여 USDC 잔액을 더욱 고갈시키고 풀의 전체 유동성을 불균형적으로 감소시켰습니다.
보고서에 따르면, 공격자는 마지막 단계에서 가격 틱을 부풀리기 위해 대규모 스왑을 실행한 후, 조작된 가격으로 역스왑을 실행했습니다.
Bunni는 "요약하자면, 관련된 모든 반올림 방향은 개별적으로는 안전했지만, 여러 작업이 관련되면 익스플로잇으로 이어졌습니다."라고 말하며, 취약점을 수정하기 위해 반올림 코드를 업데이트했다고 덧붙였습니다.
블록체인 보안 회사 Cyfrin의 포크 테스트 결과 안전성이 확인된 후, 해당 플랫폼은 모든 네트워크에서 인출을 재개했습니다. 그러나 입금, 스왑 및 기타 기능은 여전히 중단된 상태입니다.
플랫폼 측은 "Bunni의 보안을 다시 강화하기 위해 필요한 수정 사항을 아직 검토 중입니다."라고 밝혔습니다. "유휴 잔액 업데이트의 반올림 방향을 변경하면 현재 익스플로잇은 차단되지만, 이러한 변경으로 인해 새로운 공격 벡터가 발생할지는 불확실합니다."
Bunni 팀은 도난당한 자금을 두 개의 지갑에서 추적했지만, 자금이 암호화폐 믹서 Tornado Cash를 통해 유입되어 공격자를 식별할 수 없었다고 밝혔습니다. Bunni는 나머지 자금을 반환하는 조건으로 공격자에게 자금의 10%를 현상금으로 제시하는 한편, 사법 당국과 협력하고 중앙 거래소에 관련 계좌를 동결하도록 요청하고 있습니다.
Bunni는 향후 플랫폼을 완전히 복구하기 위해 테스트 프레임워크를 더욱 발전시킬 것이라고 밝혔습니다.