https://medium.com/@numencyberlabs/bsc-chain-cross-chain-bridge-hacking-analysis-24338f9a80
공격에 대한 간략한 설명
해커(주소: 0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec)는 크로스체인 브리지 메시지 유효성 검사 메커니즘의 기본 라이브러리 코드인 IAVL TREE의 취약점을 악용하여 악의적인 인출 메시지를 위조하여 크로스체인 브리지가 두 개의 개별 트랜잭션을 해커, 각각 100만 BNB 가치, 총 약 $600M USD.
공격을 억제하기 위한 CoinSec의 적시 대응으로 대부분의 자산을 절약할 수 있었고 그 결과 약 1억 달러만 손실을 입었습니다. 그럼에도 불구하고 이것은 대중과 BNBChain 모두에게 여전히 상당한 금액으로 간주됩니다.
거래 주소:
https://bscscan.com/tx/0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b
취약점 공격 방법론 분석
공격은 Binance Bridge가 BSC에 유동성 가치를 제공하는 BSC 체인에서 발생했습니다. 분석을 통해 우리는 공격의 핵심 구성요소가 다음의 라이브러리라는 것을 확인했습니다.IAVL 트리 원래 COMOS에서 구현하고 BSC Chain에서 사용하는 BSC L1에서. 이러한 종류의 익스플로잇은 크로스 체인 공격으로 알려져 있습니다.
IAVL 트리는 Binance Cross-chain 브리지로 전송된 메시지의 적법성을 확인하는 데 사용됩니다.
일반적으로 IAVL 트리는 해커가 위조한 메시지를 자동으로 거부합니다. 그러나 공격자는 이번에 IAVL 검증 프로세스의 취약점을 발견하여 IAVL 트리를 속여 임의 메시지를 수락하도록 허용했습니다. 이를 통해 해커는 조심스럽게 메시지를 구성하고 위조하여 교차 체인 브리지에서 2M BNB를 추출할 수 있었습니다.
IAVL 트리는 이름에서 알 수 있듯이 발명가인 Georgy Adelson-Velsky와 Evgenii Landis의 이름을 딴 자체 균형 이진 검색 트리입니다. 데이터 구조의 목적은 결정적 Merkle 루트 해시가 컴퓨터가 될 수 있도록 키-값 쌍(예: 계정 잔액 저장)에 대한 영구 스토리지를 제공하는 것이었습니다.
해커는 BSC 크로스체인 브릿지 컨트랙트에서 handlePackage 함수를 호출한 후 미리 컴파일된 컨트랙트를 호출하여 MerkleProof의 적법성을 검증했습니다.
사전 컴파일이란 무엇입니까?
사전 컴파일은 운영 체제에서 syscall과 비슷한 역할을 합니다. 운영 체제가 시스템 호출 번호(0x65와 유사)를 수락하면 해당 시스템 호출을 실행합니다. 일반적으로 컨트랙트 배포 시 컨트랙트 주소가 생성된 후 데드 0x65 를 직접 작성합니다. BSC L1이 이 주소를 찾으면 곧바로 MerkleProof 프로세스를 호출합니다. 즉, IAVLTree를 호출합니다.
간단히 말해서 공격
컨트랙트를 배포함으로써 해커는 BSC 크로스체인 브릿지 컨트랙트의 handlePackage 기능을 호출했습니다.
(https://bscscan.com/address/0x0000000000000000000000000000000000002000#code#L1082 )
증명 데이터를 위조하여 IAVL 트리 체크섬을 통과하여 크로스 체인 브리지가 2M BNB를 해커에게 전송하도록 했습니다.
마지막으로
Samczsun은 이 취약점의 특성에 대해 약간의 추측을 했지만 모든 세부 사항이 정확한지는 확인되지 않았습니다. 현재 해당 공격에 대한 분석도 진행 중이며, 향후 자세한 내용이 공개되는 대로 계속해서 추가 정보를 공개하겠습니다. 계속 관심을 갖고 공격에 대한 후속 분석을 위해 저희를 팔로우하시기 바랍니다.