CertiK:Poly Network 천만 달러 손실 공격 사건 분석
저자: CertiK
2023년 7월 1일, 한 공격자가 Poly Network의 취약점을 이용하여 여러 체인에서 420억 달러의 자산을 추가 발행했습니다. 발행된 자산의 양이 방대하지만, 낮은 유동성과 일부 프로젝트 토큰의 동결로 인해 공격자는 5개의 외부 계좌 주소에서 1000만 달러 이상의 자산을 확보할 수 없었습니다.
이번 사건은 올해 발생한 첫 번째 크로스 체인 브릿지 공격 사건이며, Poly Network에 대한 두 번째 공격입니다. 작년 공격 사건의 총 손실액은 370억 달러에 달하며, 그 중 크로스 체인 브릿지 공격 손실이 35%를 차지합니다. 이번 사건은 역사상 가장 큰 금액이 관련된 취약점 공격 사건으로 보이지만, 해커의 실제 수익은 훨씬 낮습니다.
사건 요약
2023년 7월 1일, 베이징 시간 14:47, 한 악의적인 행위자가 여러 크로스 체인 브릿지 거래를 통해 Poly Network의 Lock Proxy 계약에서 공격자의 주소로 자산을 전송했습니다. 장부상으로는 공격자가 10개의 체인에서 420억 달러 이상의 자산을 획득한 것으로 보입니다.
이미지: Poly Network 공격자의 지갑 주소. 출처: Debank
하지만 이 숫자는 오해를 불러일으킬 수 있습니다. 예를 들어, 공격자는 Metis 블록체인에서 340억 달러 이상의 Poly-pegged BNB와 BUSD를 보유하고 있지만, 이 토큰들은 유동성이 부족하여 판매할 수 없습니다. 이후 Metis는 트윗을 통해 새로 발행된 BNB와 BUSD는 사용할 수 있는 유동성이 없으므로 가치가 없다고 확인했습니다.
마찬가지로, 대량의 잔여 토큰도 무가치해졌습니다. 이 사건과 공격자가 발행한 토큰에 대한 소식을 듣고 여러 프로젝트는 토큰의 가격 폭락과 덤핑을 방지하기 위해 즉시 유동성을 제거하는 조치를 취했습니다. 예를 들어, OpenOcean, StackOS, Revomon 및 NEST는 공격자가 판매하는 것을 방지하기 위해 프로젝트의 유동성을 취소했습니다.
Revomon 트위터
420억 달러라는 숫자가 이번 사건으로 인한 손실을 정확하게 반영하지는 않지만, CertiK는 최소 1000만 달러의 자산이 5개의 이더리움 지갑에 저장되어 있다고 확인했습니다.
크로스 체인 브릿지 취약점
2022년, 크로스 체인 브릿지의 보안 사건은 13억 달러의 경제적 손실을 초래했으며, 이 13억 달러는 단지 5건의 사건으로 인해 발생한 것입니다. 따라서 크로스 체인 브릿지 보안 취약점의 파괴력을 알 수 있습니다. 크로스 체인 브릿지를 보호하는 것은 어려운 일이며, 그들이 가진 막대한 가치와 다양한 공격 경로로 인해 이러한 인프라는 종종 악의적인 행위자들의 주요 목표가 됩니다. 크로스 체인 브릿지는 관리인, 발행자, 오라클 등 여러 부분으로 구성됩니다. 브릿지에 잠금된 자금의 양이 방대하기 때문에, 어떤 잘못된 구성, 취약점 또는 악의적인 이용도 큰 손실을 초래할 수 있습니다.
공격 프로세스
Poly Network는 "잠금"(Lock) 및 "해제"(Unlock) 기능을 사용하여 서로 다른 네트워크 간에 자산을 브릿지합니다. 사용자는 먼저 원천 체인에서 토큰을 "잠금"해야 목표 체인에서 "해제"할 수 있습니다.
다음 예시는 BSC에서 ETH로의 크로스 체인 전송을 기반으로 합니다.
① 공격자는 먼저 BSC 네트워크에서 Lock 함수를 호출하여 소량의 8PAY 토큰의 크로스 체인 전송을 시작합니다.
이미지: 공격자가 소량의 8PAY 토큰으로 크로스 체인 전송을 시작했습니다. 출처: Etherscan
이 거래에서 데이터는 "0x4a14feea0bdd3d07eb6fe305938878c0cadbfa16904214e0afadad1d93704761c8550f21a53de3468ba599e80300000000000000000000000000"로 지정되며, 시작 부분의 "0x4a" 네 바이트는 데이터 길이를 나타냅니다.
② 공격자는 EthCrossChainManager.verifyHeaderAndExecuteTx() 함수를 호출하여 해당 UnlockEvent "해제" 함수를 트리거했습니다. 시작 부분의 데이터 길이를 나타내는 4바이트에서 현재 거래 데이터가 변경되었음을 알 수 있습니다.
"0x14feea0bdd3d07eb6fe305938878c0cadbfa16904214e0afadad1d93704761c8550f21a53de3468ba59900e00fc80b54905e35ca0d000000000000000000000000000000000000000000"
이 거래에서 8pay 토큰의 수량이 크게 증가했습니다.
③ 공격자는 위의 단계를 반복했습니다. 여기에는 57종의 토큰이 포함되며, 11개의 서로 다른 블록체인에 분포되어 있습니다. 공격자는 이로 인해 약 420억 달러의 자산(장부 가치 기준)을 획득했습니다.
이미지: Poly Network 공격자가 이더리움에서 해제한 토큰. 출처: Etherscan
자산 추적
이더리움 네트워크에서 공격자는 일부 토큰을 ETH로 성공적으로 변환했습니다. 과정은 다음과 같습니다:
공격 기간 동안, 공격자는 1592 ETH(약 305만 달러)를 한 거래를 통해 전송했으며, 2240 ETH를 각각 3개의 EOA 외부 계좌로 전송했습니다. 또한 공격자는 약 301만 USDC와 265만 USDT를 확보하여 각각 1557 ETH와 1371 ETH로 교환했습니다.
공격자는 나머지 일부 토큰 자산을 새로운 EOA 주소로 전송하고 각 주소로 1 ETH를 전송했습니다. (비록 그들이 현재 이 토큰을 현금화하지는 않았습니다). 프로젝트 소유자들이 판매를 방지하기 위해 토큰에서 유동성을 제거했기 때문에 일부 토큰은 무가치해졌습니다. 현재까지 공격자는 이 사건에서 약 1000만 달러의 자금을 확보한 것으로 보입니다.
이미지: Poly Network 공격자가 자산과 수량 1의 ETH를 새로운 EOA 주소로 전송했습니다.
마무리하며
2022년, Web3.0 생태계는 크로스 체인 브릿지 공격의 파괴적인 영향을 경험했으며, Ronin Bridge, Wormhole, Nomad 등 프로젝트가 보안 사건의 영향을 받았습니다. Poly Network 사건의 초기 탐지 결과는 이것이 Web 생태계가 지금까지 겪은 최대 보안 사건이라는 것을 보여주지만, 새로 발행된 토큰이 유동성 지원이 부족하여 손실은 이 글을 작성할 때 약 1000만 달러로 통제되었습니다. 공격자가 Poly Network를 어떻게 이용했는지에 대한 정확한 합의는 아직 없습니다. 그러나 초기 징후는 체인 상의 기능이 정상적으로 작동하고 있어, 개인 키 유출이나 체인 외의 취약점으로 인한 것일 가능성이 높습니다.