위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
분석: 전 과정에서 약 5억 6,600만 달러의 BNB가 도난당했습니다.
秦晓峰
Odaily资深作者
@QinXiaofeng888
2022-10-07 02:43
이 기사는 약 2416자로, 전체를 읽는 데 약 4분이 소요됩니다
CZ: 네트워크가 중단되었고 사용자 자금은 안전합니다.

오늘 아침 베이징 시간으로 BNB Chian 크로스 체인 브리지 BSC Token Hub가 공격을 받았습니다. 해커들은 교차 체인 브리지 취약점을 사용하여 두 부분으로 총 200만 BNB를 얻었으며 이는 미화 약 5억 6600만 달러에 해당합니다.(참고: BSC 토큰 허브는 BNB 비콘 체인(BEP2)과 BNB 체인(BEP20 또는 BSC) 사이의 교차 체인 브리지입니다.)

이 소식이 나오자마자 BNB 가격은 2시간 만에 5% 가까이 하락해 최저 278.7달러까지 떨어졌고 현재 가격은 284달러로 24시간 기준 4.24% 하락했다.

BNB 체인에 따르면 BSC에서 인출된 자금의 예비 추정치는 1억 달러에서 1억 1천만 달러에 이릅니다. 또한 Tether는 해커 주소를 처음으로 블랙리스트에 올렸습니다. "커뮤니티와 내부 및 외부 보안 파트너 덕분에 약 700만 달러가 동결되었습니다."

바이낸스 창업자인 CZ는 소셜미디어에 바이낸스가 모든 검증인에게 BSC 네트워크 중단을 요청했으며 사용자의 자금은 안전하다며 사용자에게 불편을 끼쳐 드린 점 사과드리며 이에 따라 추가 업데이트를 제공하겠다고 밝혔다.

보조 제목

samczsun 분석 기사는 다음과 같습니다.

(1) 5시간 전, 공격자는 바이낸스 브리지에서 200만 BNB(약 5억 6,600만 달러)를 훔쳤습니다. 나는 이 모든 일이 어떻게 일어났는지 밝히기 위해 다양한 당사자들과 긴밀히 협력해 왔습니다.

(2) 사건의 원인은 @zachxbt가 갑자기 나에게 공격자의 주소를 보낸 것이었다. 내가 클릭했을 때 수억 달러 상당의 계정을 보았는데, 폭주 프로젝트 러그가 있거나 대규모 해킹이 진행 중이었습니다.

(3) 처음에는 @VenusProtocol이 또 해킹당한 줄 알았다. 그러나 얼마 지나지 않아 공격자들이 금성에 2억 달러 이상을 예치했다고 "실제로" 확인했습니다. 그때 그 자금이 어디에서 왔는지 알아내야 했습니다.

(4) 대답은 공격자가 어떻게든 바이낸스 크로스체인 브리지를 설득하여 그들(해커)에게 1,000,000 BNB를 직접 두 번 보내도록 했다는 것입니다.

(5) Binance가 Web3 역사상 가장 큰 "선물 패키지"를 출시했거나 공격자가 심각한 취약점을 발견했습니다. 공격자의 거래를 합법적 인 인출과 비교하는 것으로 시작합니다. 첫 번째로 알아차린 것은 공격자는 항상 같은 높이인 110217401을 사용하는 반면 합법적 인 인출은 270822321과 같이 훨씬 더 높은 높이를 사용한다는 것입니다.

(6) 공격자의 증명이 적법한 출금 증명보다 현저히 짧다는 것도 알게 되었습니다. 이 두 가지 사실은 공격자가 이 특정 블록(110217401)에 대한 증거를 위조하는 방법을 찾았다는 것을 확신합니다. 이제 이러한 증명이 어떻게 작동하는지 알아내야 합니다.

(7) 바이낸스에는 IAVL 트리 검증을 위한 사전 컴파일된 특별 계약이 있습니다. IAVL 트리에 대해 아무것도 몰라도 걱정하지 마세요. 그 중 95%는 제가 모르기 때문입니다. 다행스럽게도 여러분과 저에게 필요한 것은 나머지 5%입니다.

(8) 기본적으로 IAVL 트리를 검증할 때 "작업" 목록을 지정합니다. 바이낸스 크로스체인 브리지는 일반적으로 "iavl:v" 작업과 "멀티스토어" 작업의 두 가지 작업이 필요합니다. 구현은 다음과 같습니다.

(9) 증명을 위조하기 위해서는 두 작업이 모두 성공해야 하며 고정된 값(지정된 블록의 해시: 110217401)을 반환하는 마지막 작업(멀티스토어)이 필요합니다.

(10) 구현을 살펴보면 루트 해시를 조작하는 것이 불가능하거나 최소한 매우 어렵다는 것을 알 수 있습니다. 이는 입력 값이 커밋 ID 중 하나와 같아야 함을 의미합니다.

(11) "multistore" 작업의 입력 값은 "iavl:v" 작업의 출력 값입니다. 이는 값 유효성 검사를 계속 통과하면서 여기에서 어떻게든 루트 변수를 제어하기를 원한다는 것을 의미합니다.

(12) 그러면 루트 해시를 계산하는 방법은 무엇입니까? COMPUTEHASH라는 함수에서 발생합니다. 매우 높은 수준에서 각 경로와 리프 노드를 재귀적으로 탐색하고 많은 해싱을 수행합니다.

https://github.com/cosmos/iavl/blob/de0740903a67b624d887f9055d4c60175dcfa758/proof_range.go#L237-L290

(13) 구현 세부 사항은 실제로 중요하지 않습니다. 중요한 것은 해시 함수가 작동하는 방식으로 인해 기본적으로 모든 (경로, nleaf) 쌍이 고유한 해시를 생성한다고 확실하게 말할 수 있다는 것입니다. 증거를 위조하려면 이것들이 동일하게 유지되어야 합니다.

(14) 합법적인 트랜잭션에서 증명이 배치되는 방식을 살펴보면 경로가 매우 길고 내부 노드가 없고 리프 노드가 하나뿐이며 이 리프 노드에는 악의적인 페이로드의 해시가 포함되어 있음을 알 수 있습니다! 이 리프 노드를 수정할 수 없으면 새 리프 노드를 추가해야 합니다.

(15) 물론 새 리프 노드를 추가하면 일치시킬 새 내부 노드도 추가해야 합니다.

(16) 이제 우리는 마지막 장애물에 직면해야 합니다. 실제로 COMPUTEHASH가 원하는 루트 해시를 반환하도록 하려면 어떻게 해야 합니까? 음, 결국에는 0이 아닌 오른쪽 해시를 포함하는 경로가 필요합니다. 일치 항목을 찾으면 중간 루트 해시와 일치한다고 주장합니다.

(17) 필요한 해시를 파악할 수 있도록 코드를 약간 계측해 보겠습니다. 그런 다음 남은 것은 코드를 결합하는 것입니다. 법적 증거를 가져와 다음과 같이 수정합니다.

1) 가짜 페이로드에 대한 새 리프 노드를 추가합니다.

2) 증명자를 만족시키기 위해 빈 내부 노드를 추가합니다.

3) 올바른 루트 해시로 일찍 종료하도록 리프 노드를 조정합니다.

https://gist.github.com/samczsun/8635f49fac0ec66a5a61080835cae3db…

(18) 이것이 공격자가 사용하는 정확한 방법이 아니라는 점은 주목할 가치가 있습니다. 그들의 증명 경로는 훨씬 짧고 정확히 어떻게 생성되었는지 잘 모르겠습니다. 그러나 익스플로잇의 나머지 부분은 동일하며 이를 처음부터 빌드하는 방법을 보여주는 것이 중요하다고 생각합니다.

(19) 요약하면 바이낸스 크로스체인 브리지가 공격자가 임의의 메시지를 위조할 수 있는 증거를 확인하는 방식에 버그가 있습니다. 다행히 이곳의 공격자들은 두 개의 메시지만 위조했지만 피해는 훨씬 더 심할 수 있었습니다.

BNB
Paradigm
Odaily 공식 커뮤니티에 가입하세요