작성자: Julien Urraca, Fabian Jahr, 0xb10c, CedArctic
출처: https://bitcoinmagazine.com/print/the-core-issue-your-node-vs-the-digital-wilderness

50년 전, 인터넷을 통한 첫 번째 메시지 전송이 성공적으로 이루어졌지만, P2P 네트워크는 항상 드문 사례였습니다. 비트코인이 개방형 화폐 시스템을 제공할 수 있는 능력은 바로 이러한 P2P 네트워크 아키텍처에 기반을 두고 있습니다. 동시에, 이 네트워킹 계층, 즉 피어 노드의 검색 및 연결은 비트코인의 공격에 가장 취약한 부분이기도 합니다. 문제가 발생하는 주요 지점은 두 가지입니다. 하나는 비트코인 자체의 P2P 프로토콜이고, 다른 하나는 비트코인 프로토콜의 기반이 되는 인터넷 프로토콜입니다. 이러한 관점에서 Bitcoin Core 두 가지 임무를 수행합니다. 첫째, 피어 노드가 악용할 수 있는 서비스 거부(DoS) 공격으로부터 보호하는 것이고, 둘째, 노드들이 인터넷이라는 광활하고 적대적인 환경에서 안전하게 통신할 수 있도록 보장하는 것입니다.
P2P
정부는 냅스터와 같은 중앙 집중식 네트워크를 차단하는 데 능숙하지만, 그누텔라나 토르와 같은 순수 P2P 네트워크는 자체적으로 운영될 수 있는 것으로 보인다.
— 사토시 나카모토, 2008년 11월 7일
비트코인의 P2P 프로토콜은 노드들이 거래, 블록, 그리고 다른 노드들에 대한 정보를 교환하는 방식을 정의합니다. 이러한 정보 교환은 모든 거래가 전파되고 합의가 검증되기 위한 필수 조건이며, 따라서 매우 중요합니다.
수년에 걸쳐 이 분야에서 여러 버그가 발견되었습니다. 예를 들어, 악의적인 SOCKS 서버 취약점은 2017년에 패치되고 공개되었습니다. 2020년에는 위험도가 높은 취약점이 보고되었습니다. 원격 피어 노드가 로컬 노드가 특정 IP 주소에 대한 연결을 차단하도록 허용하여 차단 목록이 기하급수적으로 증가하게 함으로써 노드에 대한 DoS 공격을 유발할 수 있는 취약점이었습니다. 이 취약점은 같은 해에 패치되었지만 2024년이 되어서야 공개되었습니다. 이러한 공격은 태그 이 쉽고, 피해 노드를 작동 불능 상태로 만들며, 공격 성공에 필요한 조건이 매우 적기 때문에 "고위험" 버그로 분류된 것은 당연합니다. 이러한 버그 때문에 Bitcoin Core 개발자들은 밤샘 작업을 해야 합니다. 따라서 소프트웨어를 유지 관리되는 버전으로 업그레이드할 것을 강력히 권장합니다(매우 오래된 Bitcoin Core 버전은 더 이상 활발한 유지 관리/업그레이드를 받지 않습니다).
우리가 "비트코인"이라고 부르는 이 분산 네트워크는 상대적으로 규모가 작습니다. 클리어넷 노드는 약 2만 개 정도이며, 토르 노드가 10만 개에 달한다고 가정하더라도 여전히 규모가 작고 모니터링이 용이합니다. 최근 다니엘라 브로조니와 나이요마는 노드가 클리어넷 포트와 토르 포트를 동시에 실행하는 경우, 해당 노드의 IPv4 네트워크 주소와 토르 네트워크 주소를 쉽게 연결할 수 있음을 입증했습니다.<sup> 4 </sup> 정보 기관과 블록체인 분석 업체들은 이미 이러한 방식으로 정보를 수집하고 있을 가능성이 높습니다. 노드의 네트워크 주소를 파악하면 어떤 노드가 어떤 거래를 먼저 게시했는지, 즉 각 거래의 발신 IP 주소를 쉽게 알아낼 수 있으며, 이 IP 주소를 이용하여 거래자 의 지리적 위치를 추적할 수 있습니다. 노드가 다운되거나 의도한 경로에서 벗어나는 것은 아니므로 이는 엄밀히 말하면 버그는 아니지만, IP 주소를 거래와 연결할 수 있는 방법을 제공한다는 점에서 취약점으로 간주될 수 있습니다.
이러한 수법을 어떻게 막을 수 있을지는 여전히 미해결 과제로 남아 있습니다.
월드 와이드 웹 사막
우리는 마치 도시를 건설하듯 컴퓨터를 만듭니다. 계획도 없이, 폐허를 남기고 싶지 않은 마음으로 벽돌 하나하나 쌓아 올리듯 말이죠.
— 엘렌 울먼 5
비트코인은 인터넷 상에서 작동하며, 분산형 탈 탈중앙화 시스템을 유지하는 능력은 인터넷 자체의 고유한 특성에 달려 있습니다. 그러나 안타깝게도 우리가 알고 있는 인터넷의 구조는 오늘날까지도 매우 취약하며, 다양한 공격이 여전히 발생하고 있습니다. 이러한 공격의 대다수는 실제 피해를 발생시키기 전까지는 감지되지 않으며, 오늘날 인터넷상에 만연한 감시 또한 문제입니다.
가장 잘 알려져 있고 실제로 우려되는 공격 기법은 "이클립스 공격"이라고 불리는데, 이는 악의적인 노드 그룹이 피해 노드를 완전히 포위하여 네트워크와 블록체인에 대한 독점적인 관점을 제공하는 공격입니다. 이 공격은 분산 시스템에 뿌리를 두고 있는데, 한 노드의 모든 피어를 제어하게 되면 해당 노드가 네트워크를 이해하는 방식까지 제어하게 되기 때문입니다. 에단 헤일먼과 그의 동료들은 USENIX 2015에서 초기 실용적인 이클립스 공격 중 하나를 시연했습니다.<sup> 6</sup> 2018년에는 에레버스 공격 논문에서 악의적인 자율 시스템(AS)을 통해 시작된 "은밀한" 이클립스 공격에 대해 설명했습니다. <sup>7 </sup>
이러한 공격은 주로 인터넷을 구성하는 네트워크들이 서로 통신하는 방식의 취약점, 예를 들어 자율 시스템 라우팅 토폴로지나 BGP(Border Gateway Protocol)라는 프로토콜을 악용합니다. BGP 프로토콜을 보호하기 위한 BGPsec, RPKI 등의 프로젝트가 개발 중이지만, 모두 잘 알려진 한계를 가지고 있어 인터넷 관리자들은 여전히 더욱 강력한 해결책을 간절히 바라고 있습니다. 그러한 해결책이 마련될 때까지 인터넷은 무법천지와 같은 상태로 남을 것입니다.
최근 체인코드 랩(Chaincode Labs)의 세다르크틱(cedarctic) 분석에 따르면 비트코인 노드는 단 4,551개의 자율 시스템에만 분산되어 있으며, 이는 인터넷을 구성하는 전체 네트워크 단위 중 극히 일부에 불과합니다. 분석가들은 이러한 노드가 속한 상위 자율 시스템에 무차별 대입 공격을 가하는 방식으로 이클립스(Eclipse) 공격을 실행할 수 있는 일련의 공격 방법을 설명했습니다. 익명 시스템 전반에 걸쳐 노드가 드문드문 분포되어 있고, 이러한 시스템들 간의 특정한 관계는 독특한 공격 인터페이스를 만들어냅니다. 이러한 공격에 대한 대응책은 존재하지만, 비트코인 사용자와 공격자 중 누가 먼저 이 공격 인터페이스를 파악할지는 불확실합니다.
자율 시스템 하나 이상을 침해해야 하는 공격은 자원, 협업, 그리고 기술을 필요로 합니다. 아직 비트코인 노드에 대한 공격 성공 사례는 보고되지 않았지만, 채굴기 , 지갑 소프트웨어 , 스왑 플랫폼 , 그리고 브리징 계약 에 대한 공격은 성공한 사례가 있습니다. 인터넷 자체를 고칠 수는 없지만, 이러한 적대적인 환경에서 노드들이 생존할 수 있도록 필요한 도구를 제공할 수는 있습니다.
사이버 무기
다음은 Bitcoin Core 네트워크 수준 공격으로부터 사용자를 보호하기 위해 개발하거나 통합한 몇 가지 기능입니다.
TOR(Onion Routing) 는 Bitcoin Core 에 통합된 최초의 개인정보 보호 오버레이 네트워크입니다. P2P 네트워크에서 무작위 홉을 생성하여 트래픽을 난독화합니다.
v2transport 13 은 피어 노드 간의 연결을 암호화하여 모니터링 및 검열 기관으로부터 트래픽 내용을 숨깁니다. 이는 수동적인 네트워크 관찰자가 다른 노드와의 통신을 엿보는 것을 방지하기 위한 것입니다.
I2P(Invisible Internet) 14 는 Bitcoin Core 의 선택적 기능으로, 연결에 추가적인 개인 정보 보호 암호화 계층을 제공합니다. 이는 Tor와 유사한 익명 네트워크로, 피어 노드를 사용하여 클라이언트와 서버 간의 트래픽을 난독화합니다.
ASmap 15 는 Bitcoin Core 의 또 다른 선택적 기능으로, 에레버스 공격(저자들이 작성한 논문에 요약되어 있으며 자율 시스템 기반의 모든 공격에 적용 가능)에 대한 완화 조치를 구현합니다. 비트코인의 P2P 메커니즘이 각 피어가 속한 자율 시스템을 인식하고 피어 다양성을 보장함으로써, 이클립스 공격은 훨씬 어려워집니다. 공격자는 여러 자율 시스템을 침해해야 하는데, 이는 탐지되지 않고 수행하기가 매우 어렵기 때문입니다. Bitcoin Core 버전 20.0부터 IP 네트워크와 해당 자율 시스템 간의 매핑(AS 맵)을 생성하는 기능을 지원하며, Kartograf 프로젝트를 통해 누구나 이러한 AS 맵을 쉽게 생성할 수 있습니다.
인터넷에는 여전히 많은 취약점이 존재하며, 우리가 할 수 있는 한 가지는 피어 노드의 활동을 관찰하고 악의적인 행위를 탐지하는 것입니다. 이것이 바로 0xb10c 16 이 시작한 " 피어 노드 관찰 프로젝트 (Peer Node Observer Project)"의 원래 목적입니다. 이 프로젝트는 eBPF 관찰 지점(운영 체제에서 실행되는 프로그램의 아주 미세한 동작까지 관찰하기 위한)을 기반으로 하는 완벽한 로깅 시스템을 제공하여 피어 노드를 포함한 노드의 활동을 관찰할 수 있도록 합니다. 또한, 사용자가 자신만의 로깅 시스템을 구축하는 데 필요한 모든 것을 제공합니다.
비트코인은 강해야 합니다
피어 노드와의 연결을 보호하고 메시지를 교환하는 능력은 비트코인이 작동하는 데 있어 핵심적인 요소입니다.
비트코인은 다차원적이고 적대적인 환경에 놓여 있으며, 인터넷 아키텍처 자체의 내재적 한계에서 비롯되는 수많은 위협에 직면해 있습니다. 비트코인이 생존하고 번성하기 위해서는 개발자와 사용자 모두 이러한 도전 과제들을 헤쳐나가는 방법을 배워야 합니다.
오픈 네트워크 의 대가는 경계를 늦출 수 없다는 것입니다.
각주
1. https://web.mit.edu/gtmarx/www/connect.html ↩
2. https://satoshi.nakamotoinstitute.org/emails/cryptography/4/ ↩
3. https://bitcoincore.org/en/2019/11/08/CVE-2017-18350/ ↩
4. https://bitcoincore.org/en/2024/07/03/disclose-unbounded-banlist/ ↩
5. https://delvingbitcoin.org/t/fingerprinting-nodes-via-addr-requests/1786/ ↩
6. https://en.wikiquote.org/wiki/Ellen_Ullman ↩
7. https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-heilman.pdf
8. https://ihchoi12.github.io/assets/tran2020stealthier.pdf ↩
9. https://delvingbitcoin.org/t/eclipsing-bitcoin-nodes-with-bgp-interception-attacks/1965
10. https://www.theregister.com/2014/08/07/bgp_bitcoin_mining_heist/ ↩
11. https://www.theverge.com/2018/4/24/17275982/myetherwallet-hack-bgp-dns-hijacking-stolen-ethereum ↩
12. https://medium.com/s2wblog/post-mortem-of-klayswap-incident-through-bgp-hijacking-en-3ed7e33de600 ↩
13. www.coinbase.com/blog/celer-bridge-incident-analysis ↩
14. https://bitcoinops.org/en/topics/v2-p2p-transport/ ↩
16. https://asmap.org ↩

