6억 1000만 달러 도난, 폴리네트워크와 O3스왑 해커 공격 현장
蓝贝壳学院
2021-08-13 08:33
本文约3155字,阅读全文需要约13分钟
6억 1000만 달러 도난, 폴리네트워크와 O3스왑 해커 공격 현장

이전 인기 스타 프로젝트인 O3는 모두가 기억해야 하지만 하루 전에 무너지고 O3Swap 풀이 도난당했습니다. 10, 교차 체인 프로토콜 Poly Network가 공격을 받아 Ethereum, BinanceChain 및 Polygon의 3개 체인에서 약 6억 달러가 도난당했습니다. 공격을 받은 두 플랫폼은 NEO 승인을 받은 동일한 기술 팀의 지원을 받기 때문에 절도 이유는 프로젝트 당사자가 계약에서 자체적으로 슈퍼 권한을 예약했으며 해커가 이 슈퍼 권한 백도어를 사용하여 모든 코인을 전송하기 때문입니다. 걸을 수 있는 수영장.

LBank Blue Shell Academy는 과학을 대중화하기 위해 여기에 있습니다.PolyNetwork는 한때 현재 시장에서 최고의 교차 체인 상호 운용성 프로토콜로 간주되었으며 진정으로 이기종 교차 체인을 달성합니다. 현재 지원되는 이기종 교차 체인 프로토콜에는 Bitcoin, Ethereum, NEO, Ontology, Elornd, Ziliqa, Binance Smart Chain, Switcheo, Huobi Ecological Chain 등이 포함됩니다.

이벤트 검토:

공격은 8월 10일 17시 55분에 처음 발생했으며 해커는 이더리움의 Poly Network 스마트 계약에서 9638만 USDC, 1032 WBTC 및 기타 자산을 연속적으로 전송했으며 총 가치는 2억 6000만 달러가 넘습니다. 18:08부터 해커는 BSC 프로젝트의 스마트 계약에서 8,760만 USDC, 26629 ETH 및 기타 자산을 전송했습니다.

이는 유명한 Mt.Gox 사건(744,408 BTC, 당시 총액 약 4억 달러), 2018년 코인체크 사건(당시 5억2300만 XEM)을 넘어선 암호화 역사상 최대 규모의 해킹 사건이다. 총 가치는 약 5억 3,400만 달러). 이번 사고의 구체적인 원인에 대해 산업보안기관 기술팀은 취약점의 원리와 기술적 내용을 추적하기 위해 실시간 모니터링을 진행해왔다.

분석 후 공격자는 계약을 통해 EthCrossChainData 계약에서 putCurEpochConPubKeyBytes 함수라고 하는 EthCrossChainManager 계약의 논리 결함을 이용하여 Keeper를 자신의 주소로 변경한 다음 해당 주소를 사용하여 토큰 출금 트랜잭션에 서명함으로써 많은 수의 토큰 세트가 철회됩니다.

해커는 어떻게 성공했는가?

공격자 주소:

BSC:

0x0D6e286A7cfD25E0c01fEe9756765D8033B32C71

ETH:

0xC8a65Fadf0e0dDAf421F28FEAb69Bf6E2E589963

Polygon:

공격받은 계약:

BSC:

A:

0x7ceA671DABFBa880aF6723bDdd6B9f4caA15C87B(EthCrossChainManager)

B:

0x2f7ac9436ba4B548f9582af91CA1Ef02cd2F1f03(LockProxy)

ETH:

C:

0x838bf9E95CB12Dd76a54C9f9D2E3082EAF928270(EthCrossChainManager)

D:

0x250e76987d838a75310c34bf422ea9f1AC4Cc906(LockProxy)

Polygon:

E:

0xABD7f7B89c5fD5D0AEf06165f8173b1b83d7D5c9(EthCrossChainManager)

F:

공격 트랜잭션:

BSC:

0x3eba3f1fb50c4cbe76e7cc4dcc14ac7544762a0e785cf22034f175f67c8d3be9

0x50105b6d07b4d738cd11b4b8ae16943bed09c7ce724dc8b171c74155dd496c25

0xd65025a2dd953f529815bd3c669ada635c6001b3cc50e042f9477c7db077b4c9

0xea37b320843f75a8a849fdf13cd357cb64761a848d48a516c3cac5bbd6caaad5

ETH:

0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581

Polygon:

0x1d260d040f67eb2f3e474418bf85cc50b70101ca2473109fa1bf1e54525a3e01

0xfbe66beaadf82cc51a8739f387415da1f638d0654a28a1532c6333feb2857790

BSC에서 공격자는 신중하게 구성된 데이터를 전달하여 먼저 EthCrossChainManager 계약의 verifyHeaderAndExecuteTx(0xd450e04c) 함수를 호출합니다. verifyHeaderAndExecuteTx 함수는 내부 함수인 _executeCrossChainTx를 호출하고 호출은 내부 함수에서 사용하기 때문에 공격자는 신중하게 구성된 데이터(다른 취약점을 통해 원래 Keeper가 서명한 데이터 획득)를 통해 호출의 매개 변수 _method를 제어하여 성공적으로 호출했습니다. Keeper를 자체 주소(0xa87fb85a93ca072cd4e5f0d4f178bc831df8a00b)로 변경하기 위한 EthCrossChainManager 계약으로 EthCrossChainData 계약의 putCurEpochConPubKeyBytes 함수. 이 단계는 향후 유효한 Keeper가 서명한 트랜잭션을 획득한 다음 계약에서 토큰을 인출하는 것입니다.

위의 호출 공격자가 구성한 _method는 실제로 putCurEpochConPubKeyBytes가 아닙니다. 호출 호출의 함수 이름만 사용자가 제어할 수 있고 매개변수의 수와 유형이 고정되기 때문입니다. 공격자는 putCurEpochConPubKeyBytes와 동일한 함수 서명으로 f1121318093 함수를 구성하여 EthCrossChainData 계약에서 putCurEpochConPubKeyBytes 함수에 대한 호출을 실현했습니다.

Keeper를 수정한 후 공격자는 임의의 트랜잭션에 서명할 수 있습니다. 공격자는 유효한 Keeper가 서명한 여러 트랜잭션을 통해 B 계약의 모든 ETH, BTCB, BUSD 및 USDC 토큰을 인출합니다(서명은 공격자가 자신의 주소로 수정함).

ETH와 Polygon은 BSC와 동일한 코드와 Keeper를 가지므로 공격자는 BSC에 대한 공격을 완료한 후 ETH와 Polygon에 이전에 구축한 데이터를 재생하고 ETH와 Polygon의 Keeper를 자신의 주소(0xa87fb85a93ca072cd4e5f0d4f178bc831df8a00b)로 수정합니다.

그런 다음 동일한 공격 방법을 사용하여 D 계약의 모든 ETH, USDC, WBTC, UNI, DAI, SHIB, WETH, FEI, USDT 및 renBTC와 F 계약의 모든 USDC를 빼냈습니다.

공격자는 101만 USDC를 Polygon에 반환했습니다. Ps: 지금 많은 사람들이 해커 주소로 코인을 보내달라고 메시지를 남기고 있습니다. 누군가 요청하면 13.5 eth를 받는다고 들었기 때문입니다.

우리가 주의해야 할 점은 무엇입니까?

이번 공격의 주된 원인은 계약 권한 관리 로직에 문제가 있다는 점인데, 사용자라면 누구나 verifyHeaderAndExecuteTx 함수를 호출해 트랜잭션을 실행할 수 있고, 내부에서 호출 시 함수 이름을 사용자가 조작할 수 있다. 데이터 예외 부분 함수를 신중하게 구성하여 호출합니다. 동시에 EthCrossChainManager 계약은 Keeper를 수정할 수 있는 권한을 가지고 있으며, 일반적으로 changeBookKeeper 함수를 통해 수정되지만 이번 공격에서는 공격자가 신중하게 구성된 데이터를 통해 verifyHeaderAndExecuteTx 함수의 호출을 통해 Keeper 주소를 성공적으로 수정했습니다. , 그리고 Keeper 주소는 거래가 서명되고 Defi 탄생 이후 가장 큰 손실을 입은 공격 이벤트가 생성됩니다.

LBank Blue Shell Academy는 호출을 사용할 때 개발자가 사용자가 매개 변수를 제어할 수 있다는 사실에 특별한 주의를 기울여야 하며 일부 특수 계약 및 기능은 비정상적인 호출로 인한 돌이킬 수 없는 손실을 방지하기 위해 권한을 엄격하게 제어해야 함을 모든 사람에게 상기시킵니다.

蓝贝壳学院
作者文库