2023. 6. 14. 11:14ㆍBlockchain/Security
※ 원글 작성 : 22년 5월 31일
올해 3월, Axie infinity의 기반 블록체인 Ronin network가 해킹을 당했다. 해킹 타겟은 Ronin의 bridge였으며, 이로 인해 SPoF의 취약점으로 블록체인의 bridge(or relayer)가 다시 한번 부각되었다. Axie 및 다른 사례들을 통해 bridge가 어떻게 블록체인 플랫폼의 보안 취약점이 되었는지 확인해본다.
Ronin network
Sky Mavis의 Axie infinity Ronin network가 22년 3월 23일 해킹을 당해 173,600 ETH와 25.5million USDC를 탈취당해 당시 가격으로 $568 million이 해커의 손에 들어갔다. 우리나라 돈으로 약 70억원이 넘는 금액이다. Ronin network는 ethereum의 사이드체인으로 ethereum과 양방향 페깅을 통해 자산을 교환한다. 이때 부모체인의 ethereum과 자식체인의 ronin을 연결하고, 자산 교환에 사용되는 component가 bridge였다. 체인 간의 bridge는 다른 프로토콜보다 더 많은 interaction과 contract approval가 필요하고 트랜잭션을 실행하는 validator/node의 신원을 알 수 없기 때문에 해킹에 취약하다.
또한 ronin은 PoS를 사용하는데 PoS 기반의 체인들은 validator의 수에 따라 trade off가 발생하여 적절한 노드 수를 지정하는 것이 중요하다. 적은 수의 노드를 운영하면 블록 생성 등이 더 빨라 TPS의 증가가 일어나지만 PoS를 구성하는 대다수의 노드가 해킹되면 보안 위협이 쉽게 발생 할 수 있다. 해킹 당시 ronin은 9개의 validator만 운영하였고, 입금/출금 등 자산 이동에 대한 confirm은 5개의 validator 서명만 필요하다.
Ronin network 해킹의 경우 해커가 5개의 validator 키를 탈취하여 악의적 블록을 생성하였다. 더군다나 validator 9개 중 4개를 Sky Mavis가 운영을 하여, 결국 한 곳만 해킹 당하게 되면 4개의 개인키를 탈취할 수 있어 결국 단일취약점이 되었다(나머지 하나는 Axie DAO(타사)의 개인키 탈취). 해커는 ronin bridge의 gas가 없는 RPC 노드를 통해 backdoor를 찾았으며 이를 이용해 Sky Mavis의 개인키와 Axie DAO validator의 키를 탈취할 수 있었다.
개인키와 서명을 탈취한 뒤에는 해커의 지갑주소(0x098B716B8Aaf21512996dC57EB0615e2383E2f96
)로 ETH와 USDC를 이체하여 상당량의 암호화폐를 빼내었다.
현재도 ronin bridge 웹사이트는 아래 그림과 같이 닫혀 있으며, validator 승인 수를 5에서 8로 늘리는 등 수정 조치를 취하고 있는 것으로 확인된다.
Solana wormhole
2022년 2월 2일에 Wormhole token bridge가 해킹되어 120,000개의 wETH(Wrapped ETH)가 헤커의 손에 들어갔다. 당시 가격으로 3억 2천만 달러가 넘는 금액이다.
Wormhole bridge를 통한 해킹은 앞선 ronin network의 경우와는 조금 다른데, bridge 자체의 로직 오류로 인해 발생되었다. Solnana wormhole의 instruction_sysvar
계정에 트랜잭션과 관련된 모든 명령이 포함되어 있고 sysvar
프로그램으로 signature_set
을 얻을 수 있다. 서명을 검증하는 verify_signature
기능이 load_instruction_ad
함수를 사용했는데 이 함수의 문제가 입력된 sysvar
프로그램 계정이 실제 sysvar
계정인지 확인하지 않는 문제가 있었다.
Wormhole 내에서 sysvar
계정의 validation을 검증하지 않았기 때문에 가짜 데이터로 sysvar
계정을 생성해 서명을 spoofing 하여 유효한 것으로 만들었다. signature_set
의 모든 서명은 TRUE로 표시되었으며 해커는 이를 통해 유효한 VAA(Validator Action Approval)을 가지고 있어서 자신의 계정으로 120,000wETH를 발행했다.
Qubit Finance
Qutib Finance는 DeFi를 운영하는 플랫폼이다. Qubit Finance의 QBridge 프로토콜을 악용하여 206,809개의 BNB(Binance)를 훔쳐, 약 8천만 달러의 손실을 주었다. Qubit에 ETH를 예치하면 Qubit xETH(Xplosive ETH)를 발행하고, 이 qxETH는 BNB 토큰과 swap을 할 수 있는데 이때 QBridge를 사용한다.
해커는 QBridge contract 내의 화이트리스팅 등 여러 보안 단계를 우회할 수 있는 smart contract 로직의 오류를 찾아내었다. 이를 통해 0ETH를 입급하여 xETH를 무제한으로 발행할 수 있었다. 해커가 transaction에 ETH를 첨부하지 않고 QBridge contract에서 depostit()
함수를 호출할 수 있었고, BSC(Binance Smart Chain)에서 bridge에 ETH가 입급된 양 만큼 qxETH를 발행하는 기능으로 무제한으로 돈을 찍어 내었다.
Conclusion
3가지의 bridge를 통한 공격에 대해 확인해 보았는데, 방식의 차이가 존재한다. Ronin network는 bridge를 통한 backdoor로 key 관리를 부실하게 한 인프라의 보안 취약성으로 인해 발생되었고, wormhole이나 QBridge는 코드 상의 취약점으로 인해 발생되었다.
Blockchain 간 자산 교환을 지원하는 bridge는 cross-chain 연결 시 swap(lock-unlock/mint-burn)을 수행하며, 네이티브 코인의 swap 시 SPoF의 취약성을 이용해 해킹이 발생되었다.
Polygon의 경우도 마찬가지로 Layer2 자체 블록체인인 Bor와 Layer1 ethereum을 연결하는 bridge 기능이 존재한다. 이를 "Heimdall"이라는 체인을 이용하여 분산형태로 bridge를 설계하였다. 아마 이것의 목적도 bridge가 SPoF에 취약하다는 점을 알고 있었기 때문에 선택한 방식인 것으로 예상하고 있다. Polygon의 경우 Overview를 통해 전체적인 시스템 아키텍처 및 동작 방식을 확인해 보겠다.
위 사건들로 블록체인 플랫폼은
- Validator의 다양화(Consensus 시 중앙집중 방지)
- 충분한 validator node 수
- 기본적인 플랫폼 보안 확보(키관리 등)
- Smart contract 로직 보안
- SPoF 보안 대책
- 필요 서명자 비율 증가
- 다중 서명을 오프체인 배포
- 여러 플랫폼 간의 협력, 감사, 버그바운티(Axie)
과 같은 부분을 충분히 고려해야 한다는 것을 확인시켜 주었다.
블록체인의 확장성 한계, 성능 한계를 개선하기 위한 여러 노력들이 오히려 블록체인 플랫폼의 취약점이 되고 있다. 다시 한번 비트코인이 새삼 대단하다는 것을 느끼며, 성능 뿐만 아니라 보안 측면에서도 많은 노력과 고민이 필요할 것이다.
참고
https://blog.merklescience.com/hacktrack/hack-track-analysis-of-ronin-network-exploit-merkle-science
https://thedefiant.io/hackers-target-blockchain-bridges/
https://research.kudelskisecurity.com/2022/02/03/quick-analysis-of-the-wormhole-attack/
https://thedefiant.io/hackers-target-blockchain-bridges/
'Blockchain > Security' 카테고리의 다른 글
Smart contract 보안 전략 (0) | 2023.06.14 |
---|