
머리말
2022년 6월 8일 베이징 시간,Chuangyu 블록체인 보안 연구소 알기Chuangyu 블록체인 보안 연구소 알기"Public depositFromOtherContract"권한 제어 문제가 공격을 받아 손실에는 7,475 BNB가 포함되어 총 약 216W USD입니다.현재 DEX를 통해 70W USD로 교환된 ETH는 Celer를 통해 이더리움으로 크로스 체인되었습니다. 나머지 3,000 BNB는 공격자 주소에 있습니다.
Chuangyu 블록체인 보안 연구소 알기가능한 한 빨리 이 사건을 추적하고 분석하십시오.
기본 정보
기본 정보
공격받은 계약: 0x0288fba0bf19072d30490a0f3c81cd9b0634258a
공격자 주소: 0xB2C035eee03b821cBe78644E5dA8B8eaA711D2e5
tx:0xfffd3aca0f53715f4c76c4ff1417ec8e8d00928fe0dbc20c89d875a893c29d89
GymSinglePool 대리 계약: 0xa8987285e100a8b557f06a7889f79e0064b359f2
취약점 분석
취약점 분석
GymSinglePool 계약의 구현 과정에서 프로젝트 당사자는 0x0288fba0bf19072d30490a0f3c81cd9b0634258a#depositFromOtherContract 기능에 대한 권한 제어가 부족하여 공격자가 이 기능을 통해 내부 _autoDeposit 기능을 호출하여 소비 제로 서약을 달성할 수 있습니다.
사용자에게 공개되어야 하는 서약의 내부 기능은 다음 그림과 같이 토큰 승인을 구현하는 _deposit 기능입니다."해당 _autoDeposit 함수는 다음을 구현합니다."Pledge 즉, Pledge를 위해 Token을 전송할 필요가 없습니다. 동시에 기능은 사용자에게 직접 노출되며 기능 비교는 다음과 같습니다.
공격 과정
공격 과정
온체인 MEV 및 선제 로봇을 방지하기 위해 공격자는 컨트랙트를 단계별로 배치 및 실행하고 동시에 여러 번 배치/호출하여 GymNetwork 컨트랙트(0x3a0d9d7764FAE860A659eb96A500F1323b411e68)에서 GYMNET 토큰의 완전한 추출을 완료했습니다. 및 배포 호출 중 하나 예를 들면 다음과 같습니다."1. 컨트랙트 배포 후 depositFromOtherContract 호출"특권
0xfd4a2266 방법에 해당하는 서약:
내부 통화 세부 정보는 다음과 같습니다.
2. 0x30649e15를 호출하여 이전 권한 서약의 토큰 인출을 실현합니다.
3. 0x1d111d13 기능을 사용하여 획득한 GYM-토큰을 판매합니다."여러 번 반복"특권
서약-철회-매도 단계, 공격자는 마침내 7475 BNB를 얻었습니다.
공격자는 선행 실행을 억제하기 위해 서약 추가 단계와 출금 단계를 분리하여 두 단계 모두 핵심 작업이며 동시에 일부 단계를 추가하는 Gas Price를 의도적으로 15/20gwei로 높였으며 이는 공격자가 의도적으로 한 것입니다.
추적성
이번 공격의 원인은 프로젝트 당사자가 구현한 권한 기능 권한 제어가 부적절했기 때문인데, 공격이 발견된 지 1시간 만에 프로젝트 당사자는 GymSinglePool 대리 계약의 논리 계약을 여러 번 수정하고 권한 제어를 추가했습니다.
그리고 20분 후 논리 계약에 긴급 계정 폐기 기능을 추가합니다.
프로젝트 당사자의 Deployer 주소 분석의 경우, 추적에 따라 배포된 여러 GymSinglePool 계약은 이틀 전에 배포된 GymSinglePool 계약에 허점이 있을 뿐이며 4일 전 계약에는 이 기능이 없습니다.
공격자의 금전적 준비(From Tornado)는 약 6시간 전이었고, 공격자의 신원도 생각해 볼 만합니다.
요약하다
요약하다