---
title: 크로스 체인 브릿지 해킹 - Solana
tags: security
description:
---
<style>
html, body, .ui-content {
background-color: #333;
color: #ddd;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
color: #ddd;
}
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff69;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #fff;
}
.markdown-body img {
background-color: transparent;
}
.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
color: white;
border-left: 2px solid white;
}
.expand-toggle:hover,
.expand-toggle:focus,
.back-to-top:hover,
.back-to-top:focus,
.go-to-bottom:hover,
.go-to-bottom:focus {
color: white;
}
.ui-toc-dropdown {
background-color: #333;
}
.ui-toc-label.btn {
background-color: #191919;
color: white;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: white;
border-left: 1px solid white;
}
.markdown-body blockquote {
color: #bcbcbc;
}
.markdown-body table tr {
background-color: #5f5f5f;
}
.markdown-body table tr:nth-child(2n) {
background-color: #4f4f4f;
}
.markdown-body code,
.markdown-body tt {
color: #eee;
background-color: rgba(230, 230, 230, 0.36);
}
a,
.open-files-container li.selected a {
color: #5EB7E0;
}
</style>
### 크로스 체인 브릿지 해킹 - Solana
브릿지란? [1][2]
---
- 브릿지란 서로 다른 네트워크 간 토큰 전송을 용이하게 하기 위한 솔루션이다. 예를 들어, 이더리움 네트워크 상에서 비트코인은 사용하는 것은 기술적으로 불가능하다. 하지만, 비트코인 네트워크에 BTC 를 lock 해놓고, 이더리움 상에 wrapped 비트코인 (대용물) 을 발행하는 것은 가능하다. 그렇게 되면 이더리움 상에서 비트코인을 사용하는 것과 같은 효과를 얻을 수 있기 때문에 브릿지는 블록체인의 확장성을 증가시키고, 유동성을 높이는데 유용하게 쓰일 수 있다.
- 참고로, 가장 큰 브릿지를 알아보는 방법은 TVL (Total Value Locked) 을 통해서 볼 수 있는데, Dune Analytics 에 따르면 아발란체 브릿지가 이더리움 브릿지 중에서는 가장 크고, 그 다음은 폴리곤과 팬텀이라고 한다.
브릿지의 사용과 보안
---
- 브릿지의 사용할 때는 훨씬 더 높은 수준의 보안 위험성이 존재한다. 보안의 취약점은 주로 브릿지의 검증자에서 나온다. 브릿지 또한 여러 노드가 구성되어 한쪽 블록체인의 암호화폐를 lock 하고 다른 쪽 블록체인의 암호화폐를 mint 하는 과정을 검증하는데, 각각의 블록체인이 갖고 있는 검증 노드 수보다는 적을 수 있기 때문에 보안의 취약성은 존재한다.
- 특히, 비탈릭 부테린이 제기한 Layer1 네트워크 간 브릿지의 위험성을 강조한 바가 있다. Layer1 과 Layer2 네트워크 간 브릿지의 보안 위험성은 그보다는 덜한 편이라고 한다.
- https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/?s=09
- https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/
솔라나-이더리움 브릿지, 웜홀 해킹 사건 [3][4]
---
- 이 사건은 대표적인 Layer1 네트워크 간 브릿지의 보안 위험성을 보여주는 사건이다. 일반적으로 솔라나에서 이더리움을 사용하기 위해서는 실제 이더리움을 lock 하고 wrapped 이더리움을 솔라나 네트워크에 발행을 해야한다. 하지만, 이 사건에서는 실제로 80k 의 이더리움이 lock 되지 않았지만 그에 상응하는 Wrapped 이더리움이 솔라나 네트워크에서 발행되었다. 웜홀 검증자들이 정상적으로 검증한 것이라서 더 충격이었다.
- 어떻게 하면 이런 비정상적인 행위에 검증자들이 동의를 했을까? 브릿지의 검증자 (guardians) 들이 동작하는 방식은 다음과 같다.
- 1. 검증자들이 각자 signature 를 생성한다.
- 2. 이들의 Signature 를 모아서 Signature set 을 만든다
- 3. 이 때, 검증자들의 유효성을 점검하는데, 유효한 검증자의 signature 만 받는다 4) 승인이 되면 wrapped 이더리움을 정상적으로 발행한다.
- 문제는 소스코드의 버그에 있었는데 3) 검증자들의 유효성 검증을 위해서 사용한 함수 (verify_signatures) 가 실제로는 검증하지 않았던 것이다. Verify_signatures 함수는 input data 에서 온 instruction 을 뱉어내는 load_instruction_at 함수를 사용했는데, 이 함수는 input 이 sysvar program account 인지 확인하지 않았다.
- 따라서, 해커는 fake instruction sysvar account 를 fake data 를 갖고 수행했고, (signature 들이 이전 valid trasnfered token 에서 spoof 되었다) 그 결과 signuature_set 전부가 true 로 표시되었고, 모든 signature 가 valid 하다고 잘못 판단한 것이다.
- 위의 버그때문에 post_vaa 함수를 정상적으로 수행할 수 있었고, (위의 verify_signature 를 정상적으로 통과했으므로) 결국 wrapped ETH 를 정상적으로 발행할 수 있었다.
참고자료
---
[1] https://www.coindesk.com/learn/what-are-blockchain-bridges-and-how-do-they-work/
[2] https://ethereum.org/en/bridges/
[3] https://research.kudelskisecurity.com/2022/02/03/quick-analysis-of-the-wormhole-attack/
[4] https://twitter.com/kelvinfichter/status/1489041221947375616