암호화 세계의 고위험 지역: 크로스 체인 브릿지에는 어떤 일반적인 취약점이 있을까?

lunaray
2022-04-22 16:54:23
수집
크로스 체인 브리지 공격의 수가明显 증가하고 있으며, 도난당한 자금도 상당히 많아 해커들이 크로스 체인 브리지라는 먹잇감에 주목하고 있다.

원제목:《크로스 체인 브리지 취약점 요약

원저자:lunaray

편집:ChinaDeFi

블록체인과 체인 상 프로젝트의 성장과 함께 다중 체인 프로젝트에 대한 수요가 증가하고 있으며, 크로스 체인 브리지 서비스도 이에 따라 증가하고 있습니다. 비즈니스가 있는 곳에는 항상 보안 문제가 존재합니다. 크로스 체인은 사용자에게 편리함을 제공하는 동시에 해커에게도 편리함을 제공합니다. Poly Network가 공격을 받은 후, 크로스 체인 브리지의 보안 문제도 나타났습니다.

크로스 체인이란 무엇인가?

블록체인 브리지, 즉 크로스 체인은 두 개의 블록체인을 연결하여 사용자가 한 체인에서 다른 체인으로 암호화폐를 전송할 수 있도록 합니다.

크로스 체인은 두 개의 독립 플랫폼 간의 토큰 전송, 스마트 계약 및 데이터 교환 등의 다른 피드백과 지시를 통해 자금의 크로스 체인 작업을 구현합니다.

일반적인 크로스 체인 브리지의 작동 방식은 다음과 같습니다:

  • 사용자가 자산 A를 원래 체인의 저장 주소로 전송하고, 브리지 요금을 지불합니다;
  • 자산 A는 스마트 계약에서 무작위로 선택된 검증자 또는 신뢰할 수 있는 수탁자에 의해 잠금됩니다;
  • 목표 체인에서 동일한 수량의 자산 A1이 발행되고, 자산 A1이 목표 체인의 사용자 주소로 전송됩니다.

크로스 체인 브리지의 취약점

image

크로스 체인 브리지의 일반적인 취약점

ChainSwap 공격 사건:

2021년 7월, 크로스 체인 자산 브리지 프로젝트 ChainSwap이 공격을 받았습니다. 크로스 체인 브리지에서 20개 이상의 프로젝트가 공격을 받아 약 800만 달러의 자산을 잃었고, 10개 이상의 프로젝트가 99% 폭락했습니다.

이 공격은 주로 해당 프로토콜이 서명의 유효성을 엄격하게 검사하지 않았기 때문에 발생했습니다. 공격자는 자신이 생성한 서명을 사용하여 거래에 서명할 수 있었습니다.

Factory 계약

image

위 그림에서 수신 방법의 주요 기능은 사용자가 크로스 체인 후 자금을 목표 체인의 사용자 주소로 전송하는 것입니다. 이는 전송 체인의 서명을 검증해야 합니다. 현재 검증 대기 중인 서명 개수는 1입니다.

수신 방법의 논리와 ecrecover 및 _decreaseAuthQuota 방법이 서명을 엄격하게 검사하지 않기 때문에, 공격자는 자신이 생성한 서명을 사용했지만 후속 계약 논리는 매핑 값 서명 및 기타 계산을 엄격하게 판단하지 않았습니다. 이로 인해 공격자는 수신 방법을 성공적으로 실행하여 자신이 서명한 자금을 전송할 수 있었습니다.

Poly Network 공격 사건

2021년 8월, 크로스 체인 상호 운용 프로토콜 Poly Network가 갑자기 해커의 공격을 받았습니다. 해당 프로토콜을 사용하는 O3 Swap은 심각한 손실을 입었습니다. 이더리움, 바이낸스 스마트 체인, 폴리곤의 세 개 네트워크에서 자산이 거의 탈취당했습니다. 1시간 내에 각각 2.5억, 2.7억, 8500만 달러의 암호 자산이 도난당했으며, 총 손실은 6.1억 달러에 달했습니다.

이 공격은 주로 중계 체인 검증자의 공개 키가 교체된 결과로 발생했습니다. 즉, 공격자가 크로스 체인의 중간 검증자를 대신하여 공격자가 직접 제어하게 된 것입니다.

프로토콜 내부 관계:

  • 중계 체인 검증자의 공개 키는 EthCrossChainData 계약에 존재합니다;
  • EthCrossChainData 계약의 소유자는 EthCrossChainManager 계약입니다;
  • EthCrossChainData 계약의 putCurEpochConPubKeyBytes 방법은 중계 체인 검증자 역할을 수정할 수 있습니다.
  • EthCrossChainManager 계약:

image

위 그림에서 _executeCrossChainTx 방법은 전달된 매개변수에 대해 엄격한 제한을 두지 않아 공격자가 toContract를 전달하여 매개변수를 공격자가 제어하게 됩니다. 프로토콜의 내부 관계로 인해 공격자는 해시 충돌 후 putCurEpochConPubKeyBytes 방법과 동일한 방법 서명을 전달했습니다. 성공적으로 EthCrossChainData 계약의 putCurEpochConPubKeyBytes 방법을 호출하여 중계 체인 검증자의 공개 키를 직접 수정하여 제어 가능하게 만들고, 이후 검증자가 악의적인 자금 이동을 서명하여 대량의 자금을 획득했습니다.

Multichain (AnySwap) 공격 사건

2022년 1월, Multichain은 공식적으로 프로토콜의 크로스 체인 브리지에 보안 위험이 존재하며 일부 토큰이 해커의 공격을 받을 위험이 있다고 발표하고 사용자에게 신속하게 권한을 취소할 것을 촉구했습니다.

사건의 핵심 원인은: 프로토콜이 호출하는 기본 토큰 계약이 permit 방법을 구현하지 않았지만 fallback 함수가 포함되어 있어 permit 방법을 호출하는 계약이 정상적으로 실행됩니다.

왼쪽은 AnyswapV4Router 계약이고, 오른쪽은 WETH9 계약입니다.

image

위 그림의 AnySwapOutUnderlyingWithPermit 방법에서 처음 세 개의 매개변수는 호출자가 전달한 것입니다. 즉, 토큰 및 기타 매개변수는 공격자가 제어합니다. 매개변수가 제어 가능할 때, 공격자는 공격 계약을 배포하여 영향을 받는 토큰을 전송합니다. 계약 주소는 기본 토큰 매개변수로 설정됩니다.

핵심 문제는 WETH9에 permit 방법이 없지만 WETH9의 fallback 방법을 호출하여 충전 작업을 수행하기 때문에 잘못된 호출이 발생하지 않으며 (거래가 롤백되지 않음), 즉 사용자가 프로토콜에 권한을 부여할 때 공격자는 신속하게 사용자의 자금을 전송할 수 있습니다.

Qubit Bridge 공격 사건

2022년 1월, Qubit Finance 크로스 체인 브리지 이더리움 - 바이낸스가 해커의 공격을 받아 8000만 달러 이상을 잃었습니다.

핵심 문제: deposit 방법에서 자금 주소가 address(0)일 때 safeTransferFrom 오류가 발생하지 않아 deposit 기능이 정상적으로 실행됩니다.

QBridge 계약

image

위 그림에서, deposit은 정상적인 입금 방식입니다. 이 방법에서 IQBridgeHandler(handler).deposit을 호출할 때, 사용자가 전달한 resourceID 매핑 tokenAddress 주소가 0 주소일 경우, 후속 tokenAddress.safeTransferFrom(depositer, address(this), amount); 전송이 정상적으로 실행되어 방법과 이벤트가 정상적으로 작동하며, 호출자는 성공적으로 입금을 수행할 수 있습니다.

여기서 더 중요한 것은, 공식 tokenAddress의 ETH 0 주소는 공식에서 설정한 것입니다 (공식은 입금 기능이 무시된 폐기 기능이라고 선언했습니다).

Meter Bridge 공격 분석

2022년 2월, Meter.io 크로스 체인 프로토콜은 포장된 ERC20 토큰과 원주율 가스 토큰의 직접 상호작용을 차단하지 않아 약 430만 달러의 손실을 초래했습니다.

이 사건의 핵심 문제는: deposit 방법이 입금 시 WBNB의 입금 상태를 검증하지 않아 공격자가 판단 조건을 우회하여 입금하지 않고도 자금을 정상적으로 획득할 수 있게 되었습니다.

Bridge 계약

image

위 그림에서 deposit 및 depositETH 방법은 모두 입금 방법이지만, deposit 방법으로 입금할 때 해당 입금이 원주율 토큰인지 검증하지 않습니다. 공격자가 입금할 때 WBNB 주소를 전달합니다. 이 방법은 WBNB 입금을 검증하지 않으며, 이후 depositHandler.deposit 방법을 호출하여 판단 조건을 성공적으로 우회합니다. 마지막으로, 공격자는 이 취약점을 이용하여 대량의 자금을 성공적으로 획득했습니다.

Wormhole 공격 분석

2022년 2월, 이더리움과 솔라나 두 개의 블록체인 간의 중요한 브리지(Wormhole)가 해커의 공격을 받아 3.2억 달러 이상을 잃었습니다.

이 취약점의 핵심 원인은: verifysignatures가 호출하는 loadinstruction_at 방법이 지시문의 유효성을 검증하지 않아 공격자가 위조된 검증 서명을 통해 자금을 획득할 수 있게 되었습니다.

verify_signature.rs 인터페이스 계약

image

위 그림의 verifysignatures 방법은 크로스 체인 검증 과정에서 호출되는 서명 방법입니다. verifysignatures 방법이 loadinstructionat 방법을 호출하기 때문에, 프로토콜 업데이트 후 loadinstructionat 방법은 폐기된 방법이 되었습니다. 이 방법은 전달된 지시문에 대해 엄격한 검사를 하지 않기 때문에, 공격자는 제어 가능한 값을 전달한 후 이 서명 방식을 이용하여 자신의 크로스 체인 요청에 서명하여 대량의 자금을 획득할 수 있었습니다.

Li.Finance 공격 분석

2022년 3월, 이더리움에서 분산형 크로스 체인 프로토콜 Li.Finance가 공격을 받았습니다. 공격자는 37회 호출을 통해 여러 지갑에서 약 60만 달러의 자산(204 ETH)을 획득했습니다.

이 공격의 핵심 문제는 전달된 외부 데이터에 대해 엄격한 제한이 없어 공격자가 자신의 제어 가능한 호출 논리를 전달할 수 있게 되었습니다.

CBridgeFacet 계약

image

위 그림의 swapAndStartBridgeTokensViaCBridge 방법에서 전달된 _swapData 매개변수는 엄격한 제한이 없습니다. 동일한 LibSwap.swap 호출에서 이 값은 엄격한 제한을 받지 않습니다. 따라서 swap 방법에서 _swapData가 성공적으로 call 방법을 호출하여 악의적인 작업을 수행할 수 있습니다. 공격자는 이 취약점을 이용하여 여러 번 호출하여 자금을 획득했습니다.

Ronin Network 공격 분석

2022년 3월, Axie Infinity 사이드 체인 Ronin 검증자 노드와 Axie DAO 검증자 노드가 파괴되어 두 건의 거래에서 Ronin 브리지를 통해 173600 ETH와 2550만 달러의 USDC가 탈취되었습니다.

공격 원인:

Sky Mavis의 Ronin 체인은 현재 9개의 검증자로 구성되어 있습니다. 입금 사건이나 출금 사건을 식별하기 위해서는 9개의 검증자 중 5개의 서명이 필요합니다. 공격자는 4개의 Sky Mavis의 Ronin 검증자와 Axie DAO에서 운영하는 제3자 검증자를 제어했습니다. (2021년 11월부터 12월까지, Axie DAO는 Sky Mavis가 다양한 거래에 서명하도록 허용했으며, 사건이 중단된 후 화이트리스트 접근 권한을 철회하지 않아 공격자는 Sky Mavis 시스템에 접근할 수 있었고, Axie DAO 검증자로부터 gasless RPC를 사용하여 서명을 얻었습니다.)

요약 및 권장 사항

위의 크로스 체인 브리지 공격 사건을 통해 지난해부터 올해까지 여러 차례 크로스 체인 브리지 공격이 발생한 것을 알 수 있습니다. 크로스 체인 공격의 수가 눈에 띄게 증가하고 있으며, 도난당한 자금도 상당합니다. 해커들은 크로스 체인 브리지를 겨냥하고 있습니다. 요약하자면, 공격은 주로 크로스 체인 전과 서명에서 발생하며, 일반적으로 계약의 취약점이거나 공식의 소홀로 인해 발생한 도난 사건입니다. 점점 더 많은 크로스 체인 프로젝트와 프로젝트 계약의 안전성을 고려할 때, 다음과 같은 권장 사항을 제시합니다:

  • 프로젝트 출시 전에 계약 보안 감사 완료
  • 계약 호출 인터페이스는 엄격하게 적합성을 검사해야 함
  • 버전 업데이트 시 관련 인터페이스와 서명의 보안성을 재평가해야 함
  • 크로스 체인 서명자에 대해 엄격한 검토가 필요하여 서명이 악의적인 인물의 통제를 받지 않도록 해야 함
체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
체인캐처 혁신가들과 함께하는 Web3 세상 구축