PANews는 4월 22일 Web3 보안 회사 GoPlus가 X 플랫폼에서 4월 16일에 이더리움 기반의 DeFi 프로젝트 R0AR(@th3r0ar)이 계약 백도어로 인해 약 78만 달러 상당의 도난을 당했다고 밝혔다고 보도했습니다. 프로젝트 당사자는 오늘 사고 보고서를 발표했습니다(보고서에는 자금은 회수되었지만 주소와 거래 해시는 아직 공개되지 않았다고 나와 있습니다). 이는 전형적인 계약 뒷문 사건입니다. 사용자는 백도어 계약(0xBD2Cd7)을 예방하고 계약과 상호 작용하지 않도록 주의하시기 바랍니다.

해당 계약(R0ARStaking)은 배포될 당시 백도어가 존재했으며, 악성 주소(0x8149f)에는 처음부터 인출을 위해 많은 양의 $1R0R이 내장되어 있었습니다. 악성 주소는 먼저 소규모 deposit()와 harvest()를 수행한 후 악성 EmergencyWithdraw()를 실행할 준비를 했습니다. 계약의 코드 로직에 따르면(아래 그림 참조), rewardAmount>r0arTokenBalance(계약 잔액)이기 때문에 rewardAmount가 계약의 토큰 잔액에 할당되고, 이후 계약의 모든 토큰이 악성 주소(0x8149f)로 전송됩니다. 마찬가지로 LP 토큰 계약의 모든 lpToken도 악성 주소로 전송됩니다. 마지막으로 userInfo.amount를 0으로 설정합니다. 계약서의 userInfo는 매핑 구조이고, 해당 주소는 userInfo의 키(uid 및 msg.sender)를 해시하여 계산된 동적 주소입니다. 계약이 배포되기 전에 악성 주소를 사용하여 백도어가 계산되었을 것으로 추론할 수 있습니다.