스마트 계약의 해석: Harmony의 교차 체인 브리지는 어떻게 1억 달러를 훔쳤습니까?
十四君
2022-07-11 10:11
本文约4195字,阅读全文需要约17分钟
2022년 6월 24일, 레이어 1 퍼블릭 체인 하모니(Harmony)가 개발한 이더리움과 하모니 사이의 자산 크로스체인 브리지인 호라이즌(Horizon)이 공격을 받아 약 1억 달러의 손실을 입었습니다. 정확히 무

추상적인

보조 제목

추상적인

2022년 6월 24일, 레이어 1 퍼블릭 체인 하모니(Harmony)가 개발한 이더리움과 하모니 사이의 자산 크로스체인 브리지인 호라이즌(Horizon)이 공격을 받아 약 1억 달러의 손실을 입었습니다.

  • 정확히 무슨 일이 일어나고 있습니까?

  • 해커 공격이 발생한 날은 "공증인의 개인 키를 도난당했다"고 결론 지을 수 있지만 VIP가 클릭하기 때문에 와서 채팅하는 것이 좋습니다. 걱정하지 마십시오. 몇 가지 하드- 핵심 소스 코드이지만 전체 기사는 모국어이며 이해하기 쉽습니다!

  • Horizon 계약 감사 보고서의 해석

도난 사유 재분석 및 요약

1. 크로스 체인 브리지의 기술 원리

크로스체인(Cross-chain)은 이름에서 알 수 있듯이 서로 다른 블록체인 간에 자산 정보를 어떻게 전송하느냐의 문제로 상호운용성(interoperability)이라고도 하며 현재 다양한 정의를 가진 50개 이상의 크로스체인 솔루션이 존재한다."iosg에서-

멀티체인 유동성을 모을 수 있는 크로스체인 브릿지 솔루션 목록

보조 제목

1.1 크로스체인 솔루션이란?

간단히 말해서 다른 체인에서 자산 가치를 일정하게 유지하려면 두 가지 주요 경로가 있습니다. "가격"에 의한 앵커링과 "물리학"에 의한 앵커링입니다.

언뜻 복잡해 보이지만 사실 가격별 앵커링은 다양한 퍼블릭 체인에 USDT와 같은 안정적인 통화이며, 미국 달러와 1:1로 앵커링되어 있기 때문에 크로스체인 자산의 일종이기도 합니다.

  • 모든 종류의 스테이블 코인 외에도 보다 직관적인 크로스체인 솔루션은 물리적 앵커링, 즉 유동성의 총량이 일정하며 많은 솔루션(공증인, 사이드체인, 릴레이체인, 해시락 등)이 있습니다. , 우리는 공증인 모델에 중점을 둡니다.

  • "공증인은 누구인가"에 따라 공증인 모델에는 세 가지 구분이 있습니다.

  • 거래소에서 보장: 예를 들어, Binance는 코인을 인출하고 모든 종류의 거래는 중앙화 거래소에서 수행되며 코인은 현금화됩니다.

유동성 풀 브리징 유형: bridge.connext, o3swap 등

컨트랙트 고정 캐스팅 방식 : 다양한 공식 브릿지 일반 솔루션 폴리곤/아비트럼/아벡스/셀러, 그리고 오늘의 주인공 하모니

위의 모든 것들은 거래소가 달아날까 두려워하거나 유동성이 고갈되거나 공증인의 개인 키를 도난당하는 등 각자의 장단점이 있습니다.현재 완벽하게 구현하는 크로스 체인 솔루션은 없습니다. 불가능한 삼각형.

이미지 설명

"o3swap 공식 웹사이트의 총 유동성 및 거래량"

보조 제목

1.2 Horizon Bridge의 교차 체인 원리

하모니에서 개발한 호라이즌 브리지는 꽤 표준적인 공증인 자물쇠 주조 유형입니다.

잠긴 캐스팅을 신뢰할 수 있는 이유는 무엇입니까?

블록체인 상의 컨트랙트는 불변이기 때문에 백도어가 없다면 일단 배치하더라도 보링에이프 관계자가 모든 권한을 주소 0으로 넘기듯이 그 운영에 영향을 미칠 방법이 없을 것이다. 소유권, 아니오 어떤 식으로든 새로운 원숭이를 추가로 발행할 수 있으며 전체 유동성이 잠깁니다.

  • 마찬가지로 퍼블릭 체인마다 컨트랙트가 다르지만 이더리움의 컨트랙트로 10 ETH를 락업하면 또 다른 퍼블릭 체인에서 동일한 신뢰할 수 있는 컨트랙트로 10 wETH가 풀릴 것입니다. wETH가 언제든지 이더리움으로 다시 전송되고 ETH로 교환될 수 있는 한 wETH는 ETH와 동등한 가치를 갖는 것으로 간주될 수 있습니다.

  • 따라서 핵심 작업은

  • Burn-and-Release: 체인 B는 패키징 토큰을 파괴합니다. + 체인 A는 동일한 양의 기본 토큰의 유동성을 잠금 해제합니다.

공증인: A-chain Lock 이벤트를 발견하고 B-chain Mint로 이동하여 앵커 토큰을 발행하고 대상 주소로 전송합니다.

공식 github에서 가져온 Horizon 브리지 프로세스의 개략도

이미지 설명

모래 언덕에서 수평선 체인 브리지 TVL 다이어그램

첫 번째 레벨 제목

2. Horizon Bridge 계약 감사 보고서의 해석

많은 Web3 프로젝트에서 사고가 100% 안전하지 않으면 기본적으로 0 값과 같기 때문에 컨트랙트의 보안성을 확인하기 위해 보통 다양한 공격 시나리오를 테스트 및 시뮬레이션하고, 계약의 보안을 보장하기 위한 체크리스트.

개발은 며칠 밖에 걸리지 않을 수 있지만 충분히 신뢰할 수 있도록 프로세스가 많고 비용이 많이 듭니다 (일반적인 견적은 시간 기준 10W에서 시작)

감사 보고서의 핵심 정보는 위험 이름, 취약점 설명, 위험 수준, 보안 권장 사항, 수리 상태 및 감사 결과 등입니다.

Horizon Bridge의 계약 감사 보고서는 설립된 감사 회사인 PeckShield에서 수행되었으며 5개의 취약점이 발견되었습니다.

2.1 저위험 및 중위험 포인트 1 - 호환성 부족

3줄의 코드에 버그가 있을 수 있다고 상상하기 어렵습니까?

사실 토큰을 잠그는 논리는 매우 간단합니다.즉, 사용자가 금액과 대상 주소를 설정하고 원천징수 권한을 승인한 후 계약은 USDT를 이 계약으로 전송하여 잠그고 잠긴 이벤트를 보냅니다. 체인 아래의 공증인은 자산이 잠겨 있음을 알 수 있습니다.

그러나 그것이 "디플레이션" 토큰이라면 어떨까요? safeTransferFrom 중에 금액이 줄어들면 어떻게 해야 하나요? 이로 인해 락업 금액이 B-체인의 해제 금액보다 낮아질 위험이 있습니다.[소스코드 해석] 당신이 구매한 NFT는 정확히 무엇인가요?

이전 기사를 읽을 수 있습니다.

[소스코드 해석] 당신이 구매한 NFT는 정확히 무엇인가요?

표준 프로토콜에서 가상 함수는 전송 전후에 논리를 추가하는 후크 방법으로 사용되며 일부 토큰은 _beforeTokenTransfer에서 트랜잭션 손실을 증가시켜 순환을 제어하고 디플레이션을 달성할 수 있습니다.

물론 하모니는 결국 수정과 최적화를 거쳐야 하고, 이체 전후 두 번 잔고를 읽는 방식을 이용해 실제 잠긴 금액을 계산한다.

그래도 이 코드, 3줄의 코드에 BUG 뿐만 아니라 2![소스코드 해석] 당신이 구매한 NFT는 정확히 무엇인가요?

[소스코드 해석] 당신이 구매한 NFT는 정확히 무엇인가요?

사실 안전한 Mint를 위해 표준 프로토콜은 주소 0으로의 Mint를 금지합니다. lockingToken 시 대상 주소 수신자가 주소 0으로 채워지면 B 체인의 캐스팅이 실패하여 이 계약에 잠기지만 교차 체인 효과는 없습니다. . 이 재무 계약은 적절한 전송 방법을 예약하지 않으며 영구적으로 잠깁니다.

보조 제목

2.3 고위험 지점

원래 절차에서 주조된 자산의 잠금 해제 및 릴리스는 지정된 공증인만 수행할 수 있습니다.

이것이 바로 이 트릭의 이유입니다.하모니는 결국 공증인을 다중 서명 지갑으로 변경했지만 3개로 변경했을 뿐이고 개인 키 2개를 도난당하면 폭주할 수 있습니다.

이미지 설명

Horizon Bridge에 대한 PeckShield의 감사 보고서

뭐라고 해야 할까요, 변경했다고 하더군요, 저는 항상 좀 형식적인 느낌이 듭니다. 해커가 자산을 훔쳐갔을 때도 하모니브릿지는 여전히 작동하고 있었고, 그의 프라이빗 키는 심지어 일반 텍스트로 저장되어 복사되었다는 것입니다. 해커에 의해

블록체인 브라우저 사용 가이드는 다음을 참조하세요.Etherscan을 볼 때 우리는 무엇을 보고 있습니까?

Etherscan을 볼 때 우리는 무엇을 보고 있습니까?

보조 제목

  • wallet1:0x0d043128146654C7683Fbf30ac98D7B2285DeD00

  • wallet2:0x9E91ae672E7f7330Fc6B9bAb9C259BD94Cd08715

  • wallet3:0x58f4baccb411acef70a5f6dd174af7854fc48fa9

3.1 주요 정보

  • MultiSigWallet:0x715cdda5e9ad30a0ced14940f9997ee611496de6

  • 공격자 지갑

  • 크로스 체인 브리지 관련 주소

  • ETH 볼트 주소: 0xF9Fb1c508Ff49F78b60d3A96dea99Fa5d7F3A8A6

ERC20 볼트 주소: 0x2dccdb493827e15a5dc8f8b72147e6c4a5620857

도난당한 공증 주소: 0x812d8622c6f3c45959439e7ede3c580da06f8f25

3.2 도난 프로세스 분석

13100 Ether를 훔치고 자세한 내용은 트랜잭션 링크를 참조하십시오(부록에 인용됨).

실행은 특정 트랜잭션 ID를 확인하는 것입니다(다중 서명 투표의 일부).

공증인의 확인 -> 확인을 기다리는 공증인의 수가 기준에 도달 -> 국고 자산을 잠금 해제하고 대상 주소로 전송

다중 서명 계약 계약 코드의 논리에서 이 함수가 notConfirmed 판단을 하므로 이전에 시스템에서 설정한 공증인 주소만 호출할 수 있음을 알 수 있습니다.

나중에 executeTransaction 메소드를 실행한 후 isConfirmed 메소드를 호출하여 판단을 하고 트랜잭션을 인증하는 관리자가 2명이 되면 내부적으로 EthManager 컨트랙트의 unlockEth 메소드를 호출하여 최종적으로 ETH를 공격자의 지갑으로 전송됩니다.

개인 키를 도용하는 것 외에는 이렇게 간단하고 간단한 계약에서 특별한 오류 가능성이 없다는 것이 지금까지 분명합니다.

그런데 크로스체인 브릿지의 ETH 금고 잔고를 보니 아직 94개의 Eth가 있고, ERC20 금고에는 아직 30만 달러의 각종 토큰이 남아있다.

4. 사고 요약

4.1 도둑은 어떻게 될까요?

하모니는 즉시 해커에게 자산을 반환하고 책임을 추궁하지 않겠다고 제안하면서 100만 달러를 제시했지만, 해커가 돌아오고 관계자가 이를 추격하지 않더라도 다른 소셜팀이 기소할 것이기 때문에 최선을 해커의 경로는 가능한 모든 작업을 수행하는 것입니다 자산 둔감화.

6월 29일 현재 공격자는 약 35,000 ETH(약 3,900만 달러)를 일반적인 코인 믹서인 Tornado Cash로 전송했지만, 블록체인은 공개 원장이며 모든 거래가 해킹될 수 있습니다. 100명에 대한 거래의 수이며 어떤 자금이 결국 누구의 손에 들어갈지 정확하게 결정할 수 없습니다.

4.2 더 안전한 방법은?

최적화를 위해 분산 호스팅 방법을 채택할 수 있으며 MPC(Multi-Party Computation) 공증 네트워크에 호스팅하고 일정 비율 이상의 노드가 동시에 악을 행하지 않도록 하여 보안을 확보합니다.

공증인이 부족하더라도 눈사태 다리가 채택한 SGX 신뢰 컴퓨팅 기술을 참조할 수 있습니다.

Avalanche Bridge: Intel SGX로 교차 체인 자산 보호

인용하다:

iosg-본질적으로 여전히 보안의 중요성에 무관심한 크로스 체인 브리지의 오픈 소스 코드로 작성된 실행 계획은 2년 전에 사용 가능한 체인 브리지를 구현했지만 오랫동안 더 이상 최적화되지 않았습니다.

인용하다:

멀티체인 유동성을 모을 수 있는 크로스체인 브릿지 솔루션 목록

Horizon Bridge 공식 GIT: https://github.com/harmony-one/ethhmy-bridge

https://etherscan.io/tx/0x27981c7289c372e601c9475e5b5466310be18ed10b59d1ac840145f6e7804c97

Horizon 체인 브리지 TVL 다이어그램: https://dune.com/queries/118245

https://docs.harmony.one/home/general/bridges/horizon-bridge/audit

트랜잭션 링크 훔치기:

https://medium.com/avalancheavax/avalanche-bridge-secure-cross-chain-asset-transfers-using-intel-sgx-b04f5a4c7ad1

十四君
作者文库