오리너구리 공격, 잘못된 코드 순서 악용, 감사인 주장

면책 조항: 기사는 Omniscia가 MasterPlatypusV4 계약 버전을 감사하지 않았다는 것을 반영하도록 업데이트되었습니다. 대신 회사는 1년 21월 5일부터 2021월 XNUMX일까지 MasterPlatypusVXNUMX 계약 버전을 감사했습니다.

8만 달러 규모의 오리너구리 플래시론 공격은 순서가 잘못된 코드 때문에 가능했고, 따라 Platypus 감사인 Omniscia의 사후 보고서에. 감사 회사는 문제가 있는 코드가 감사한 버전에 존재하지 않는다고 주장합니다.

보고서에 따르면 Platypus MasterPlatypusV4 계약은 "emergencyWithdraw 메커니즘에 치명적인 오해를 포함"하여 "스테이킹 포지션과 관련된 LP 토큰을 업데이트하기 전에 지급 능력 확인"을 수행하도록 했습니다.

이 보고서는 EmergencyWithdraw 기능에 대한 코드가 공격을 방지하는 데 필요한 모든 요소를 ​​포함하고 있지만 이러한 요소는 단순히 잘못된 순서로 작성되었다고 강조했습니다.

"이 문제는 MasterPlatypusV4::emergencyWithdraw 문을 재정렬하고 사용자의 금액 입력이 0으로 설정된 후 지불 능력 검사를 수행하여 공격이 발생하지 않도록 방지함으로써 방지할 수 있었습니다."

Omniscia는 1년 21월 5일부터 2021월 XNUMX일까지 MasterPlatypusVXNUMX 계약 버전을 감사했습니다. 그러나 이 버전에는 "외부 platypusTreasure 시스템과의 통합 지점이 포함되지 않았으므로" 잘못 정렬된 코드 줄이 포함되지 않았습니다.

악용된 코드는 Omniscia의 감사 시점에 존재하지 않았다는 점에 유의해야 합니다. Omniscia의 관점은 개발자가 감사가 이루어진 후 특정 시점에 새 버전의 계약을 배포했음을 의미합니다.

관련 : Raydium, 해킹 세부 사항 발표 및 피해자 보상 제안

감사인은 Avalanche C-Chain 주소 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7의 계약 구현이 악용. 이 계약의 582~584행은 PlatypusTreasure 계약에서 "isSolvent"라는 함수를 호출하는 것으로 보이며, 599~601행은 사용자의 금액, 요소 및 rewardDebt를 XNUMX으로 설정하는 것으로 보입니다. 그러나 이러한 양은 "isSolvent" 함수가 이미 호출된 후에는 XNUMX으로 설정됩니다.

오리너구리 팀 확인 된 16월 XNUMX일 공격자가 "USP 지불 능력 확인 메커니즘의 결함"을 악용했다고 밝혔지만 팀은 초기에 자세한 내용을 제공하지 않았습니다. 감사관의 이 새로운 보고서는 공격자가 익스플로잇을 달성할 수 있었던 방법에 대해 더 많은 정보를 제공합니다.

오리너구리 팀은 16월 XNUMX일에 공격이 발생했다. 해커에게 연락하여 버그 포상금과 교환하여 자금을 돌려받으려고 시도했습니다. 공격자 중고 대출 익스플로잇을 수행하는 데 사용되는 전략과 유사합니다. 해동 금융 익스플로잇 25년 2022월 XNUMX일.