블록체인 해킹의 모든 것: 분산 네트워크를 노리는 공격
핵심 인사이트
이 글에서는 블록체인 네트워크가 공격받는 다양한 방식과 주요 위협을 다뤄요. 블록체인은 중앙화된 데이터베이스보다 더 안전하지만, 51% 공격, 이중 지불, 시빌 공격, 셀피시 마이닝, 스마트 컨트랙트 취약점, 개인 키 탈취 등 여러 위험에 여전히 노출돼 있어요. 실제 사례를 통해 특히 소규모 프로젝트에서 발생한 막대한 금전적 피해를 설명하고, 보안이 발전할수록 해킹 수법도 정교해지기 때문에 지속적인 경계와 혁신이 블록체인 안전에 필수적임을 강조해요.
블록체인은 데이터베이스로 작동하는 분산 원장으로, 중앙화된 데이터베이스보다 정보 저장과 거래에 훨씬 신뢰할 수 있는 솔루션이에요. 하지만 이런 블록체인도 해킹의 위험에서 완전히 자유롭지 않아요. 실제로 해킹 시도가 자주 일어나고 있으며, 분산 네트워크를 노리는 공격은 주로 합의 메커니즘의 허점을 이용하거나 블록체인 해시레이트를 장악해 데이터를 조작하고 암호화폐를 탈취하는 데 집중돼요.
이번 글에서는 블록체인에 대한 주요 공격 방식과 대표적인 위협 요소를 살펴볼게요.
51% 공격
51% 공격은 블록체인에서 가장 큰 위협 중 하나예요. 주로 작업증명(PoW) 합의 알고리즘을 사용하는 네트워크에 적용돼요.
공격의 원리
핵심은 네트워크 전체 컴퓨팅 파워, 즉 해시레이트의 50% 이상을 장악하는 거예요. 이는 마치 회사의 지분 과반을 가진 것과 비슷해요. 해시레이트를 51% 이상 확보하면 블록체인의 컴퓨팅 파워를 통제할 수 있게 돼요.
공격자가 채굴 파워의 절반 이상을 장악하면, 거래 순서를 바꾸거나 거래 승인을 무효화할 수 있고, 다른 채굴자의 채굴도 방해할 수 있어요. 즉, 네트워크에 혼란을 일으키고 장애를 유발할 수 있죠. 또, 이중 지불(double-spending)처럼 눈에 잘 띄지 않는 문제도 일으킬 수 있어요.
이렇게 큰 파워를 얻으려면 대량의 채굴 장비를 임대하거나, 직접 채굴풀을 만들거나, 다른 채굴자를 속이거나, 악성코드로 채굴 봇넷을 운영하는 등 다양한 방법이 있어요.
실제로 가능한가요?
하지만 비트코인처럼 노드 수가 많고 채굴 장비와 전기료가 많이 드는 대형 블록체인을 공격하는 건 사실상 불가능에 가까워요. 노력 대비 이득도 적죠. 반면, 소규모 프로젝트는 이런 위협에서 자유롭지 않아요.
실제로 ZenCash(ZEN), Litecoin Cash(LCC), MonaCoin(MONA), Verge(XVG), Bitcoin Gold(BTG) 등 여러 네트워크가 51% 공격을 당한 사례가 있어요.
실제 사례
51% 공격이 성공하면, 공격자는 프로토콜의 모든 취약점을 노릴 수 있어요. 하지만 대부분은 이중 지불을 노려요.
2018년 ZenCash(ZEN) 네트워크에서 발생한 51% 공격으로 공격자는 약 55만 달러를 빼앗았어요. 13,000 ZEN과 6,600 ZEN 상당의 두 거래가 이중 지불됐고, 공격은 110블록, 약 4시간 동안 이어졌어요. 네트워크가 입은 피해는 약 3만 달러로, 탈취된 코인에 비해 적은 편이었어요.
또 다른 예로, 2020년 Ethereum Classic(ETC)은 NiceHash에서 컴퓨팅 파워를 임대한 해커에게 세 차례 공격을 당했어요. 7~8월 사이 ETC 해시레이트가 급감하자, 해커는 네트워크 전체의 51%가 넘는 GPU 해시레이트를 임대해 100만 개가 넘는 ETC(당시 약 900만 달러 상당)를 이중 지불했어요.
해시레이트 임대 비용만 수십만 달러에 달해 실제 이득은 정확히 알 수 없지만, 이와 유사한 사례는 꽤 많아요.
이중 지불
이중 지불(double-spending) 문제는 블록체인과 암호화폐가 등장하기 훨씬 전부터 존재했어요.
즉, 어떤 자산을 교환할 때 거래가 즉시 완료되지 않고 나중에 약속만 하는 경우, 시간이 지나면 실제로 그 자산이 없을 위험이 항상 존재해요.
예를 들어, 한 자산에 대해 두 명 또는 세 명에게 각각 지급을 약속하는 문서를 줄 수 있는데, 실제로는 한 번만 존재하는 자산이죠. 이게 바로 이중 지불이에요. 블록체인에서도 원리는 같아요.
이중 지불이 일어나는 방식
공격자가 동일한 코인을 두 번 이상 쓰는 것이 이중 지불이에요. 예를 들어, 1 BTC를 가진 사용자가 동시에 여러 명에게 보내고, 그 대가로 무언가를 받아요. 실제로는 한 명만 1 BTC를 받게 되죠.
네트워크가 정상적으로 작동하면, 한 거래만 다수 노드의 승인을 받아 처리돼요. 대부분의 블록체인은 이런 공격을 막기 위한 보안 장치를 갖추고 있지만, 완전히 안전하다고 볼 수는 없어요.
이중 지불 기회를 얻는 방법은 여러 가지가 있는데, 51% 공격도 그 중 하나예요. 해시레이트의 절반 이상을 장악하면, 공격자는 독립적으로 새로운 블록을 만들어 수정하거나, 일부 거래를 거부하고 필요한 거래만 승인할 수 있어요.

이 예시에서는 공격자가 메인 체인을 포크(분기)시켜, 거짓 거래를 승인하는 동시에 다섯 건의 정상 거래가 처리됐어요.
이 시간 동안 공격자는 암호화폐 거래소로 코인을 보내고, 1~5회의 블록체인 확인이 필요한 거래를 완료한 후 다른 암호화폐나 법정화폐로 교환할 수 있어요.
이후 '공격의 창'이 닫히면 거짓 블록들은 폐기되지만, 공격자 입장에서는 거래소에 올려 판매한 코인도, 원래 블록체인상의 코인도 모두 남아 있게 돼요. 즉, 실제로는 '가짜' 암호화폐를 판 셈이죠.
피니(Finney) 공격
피니 공격은 비트코인의 첫 수신자이자 블록체인에서 이중 지불 가능성을 처음 제기한 Hal Finney의 이름에서 따왔어요.
피니 공격은 상대방이 미확인 거래를 받아들일 때 발생할 수 있는 이중 지불의 한 형태예요.
공격자는 자신의 주소 'A'에서 또 다른 자신의 주소 'B'로 거래를 포함한 블록을 생성하지만, 이를 즉시 네트워크에 공개하지 않아요. 그 다음, 주소 'A'에서 다른 사용자의 주소 'C'로 또 다른 거래를 실행해요. 만약 상대방이 네트워크 확인 없이 거래를 받아들이면, 공격자는 이전 블록을 방송해 첫 거래를 승인받아요. 이로 인해 'A'에서 'C'로의 거래는 무효가 되고, 공격자는 이중 이득을 얻게 돼요.
레이스(Race) 공격
이 공격은 두 거래가 경쟁하는 구조예요. 공격자가 동일한 주소의 코인을 여러 기기에서 동시에 두 명에게 보내고, 두 명 모두 상품이나 암호화폐를 보내지만, 나중에 처리된 거래는 무효가 돼요.
이 공격은 판매자가 미확인 거래를 받아들일 때만 가능해요. 이런 '레이스' 공격에 당하지 않으려면, 최소 한 번 이상의 거래 확인을 기다리면 돼요.
시빌(Sybil) 공격
시빌 공격은 Flora Rheta Schreiber의 소설 'Sybil'의 주인공에서 이름을 따왔어요. 해커가 자신이 통제하는 노드로 네트워크를 채운 뒤, 피해자 노드를 '포위'해 모든 거래를 통제하는 방식이에요.
취약점 노리기
비트코인 같은 대형 네트워크에서는 노드가 무작위로 상대 노드를 선택해 거래를 확인하므로, 이런 공격이 거의 불가능해요.
그래서 시빌 공격은 주로 신규 암호화폐 프로젝트를 노려요. 네트워크에 처음 연결된 노드는 신뢰할 수 있는 노드의 IP를 모를 수 있고, 이때 공격자 노드가 자신의 주소를 알려주면 네트워크를 장악할 수 있어요.
이렇게 되면 해커는 다음과 같은 일을 할 수 있어요:
- 사용자의 거래를 차단해 메인 블록체인과 단절시키기
- 어떤 블록에 연결할지 결정(주로 이중 지불이 일어나는 블록)
- 사용자의 모든 거래 추적하기
즉, 공격자가 통제하는 노드가 다른 노드에게 잘못된 데이터를 승인하게 만들 수 있어요.
셀피시 마이닝(이기적 채굴)
PoW 기반 블록체인에는 정직하지 않은 채굴자가 악용할 수 있는 취약점이 있어요. 바로 여러 블록을 동시에 승인할 수 있다는 점이에요.
포크 문제
두 블록이 동시에 생성되어 이전 블록에 연결되면, 블록체인은 두 개의 체인으로 분기돼요. 포크가 발생하면 블록체인 구조가 복잡해지고 거래 속도가 느려지기 때문에, 채굴자는 블록을 확인한 즉시 데이터를 다른 노드에 방송해 충돌을 막아야 해요.
하지만 셀피시 마이너(이기적 채굴자)는 이런 정보를 숨기고, '정직한' 노드들은 계속 새로운 블록을 생성하며 네트워크의 포크 길이를 늘려요.
실제 시나리오
예를 들어, 셀피시 마이너가 블록 2,001을 채굴했지만 네트워크에 방송하지 않았다고 해볼게요. 나머지 노드들은 2,000번 블록부터 새로운 블록을 채굴하기 시작해요. 이로 인해 2,000번 블록이 두 개(정직한 채굴자와 공격자 각자)가 생기고, 각 블록에 2,001번 블록이 연결돼요.
공격자는 계속해서 자신의 체인에 블록을 추가해 체인을 더 길게 만들고, 이후 자신이 채굴한 2,001번 블록 정보를 네트워크에 공개해요. 네트워크는 이 체인이 먼저 발견된 것으로 인식해 셀피시 체인을 유효하다고 판단하고, 그 기간에 정직한 노드가 추가한 블록들은 모두 폐기돼요. 결국 정직한 채굴자는 보상을 받지 못하고, 노력도 헛수고가 돼요.
라우팅 공격
이 공격은 블록체인 자체의 보안 문제라기보다, 인터넷 서비스 제공업체(ISP)의 연결 프로토콜 취약점을 노려요.
해커가 프로토콜에 접근하면 잘못된 경로 정보를 퍼뜨릴 수 있는데, 이 과정에서 이중 지불 공격이 가능해요. 새로운 블록의 전달을 지연시키면 네트워크에 보이지 않게 되고, 그 사이 암호화폐를 두 번 사용할 수 있는 '공격의 창'이 열려요.
스마트 컨트랙트 취약점 악용
스마트 컨트랙트는 사람이 코딩하기 때문에, 실수나 허점이 생길 수밖에 없어요.
코드 오류의 대가
스마트 컨트랙트에는 다양한 취약점이 존재해요. 복잡한 문제일 수도 있고, 단순 오타일 수도 있어요. 어떤 실수든 수백만 달러의 손실로 이어질 수 있어요.
2023년 6월 30일 Web3 보안 기업 Beosin의 보고서에 따르면, 2023년 상반기 사기·해킹·피싱 등으로 분실된 암호화폐 규모는 6억 5,600만 달러에 달했어요. 이 중 56%가 스마트 컨트랙트 취약점으로 인한 피해였어요.
스마트 컨트랙트 자체의 허점뿐 아니라, 작성에 사용된 언어의 취약점도 블록체인 해킹의 원인이 될 수 있어요. 2023년 7월 30일에는 Curve Finance의 네 개 유동성 풀이, 스마트 컨트랙트 언어인 Vyper의 취약점 때문에 해킹당했어요. Curve Finance는 AMM(자동화된 시장조성자) 기술을 사용하는 탈중앙화 거래소이자 DeFi의 주요 스테이블코인 유동성 허브예요. 총 6천만 달러가 탈취됐고, 이 중 2천만 달러는 화이트햇 해커가 회수해 돌려줬어요. 가장 큰 피해는 메인 CRV/ETH 풀이 해킹당해 약 4천만 달러의 유동성이 모두 빠져나간 거였어요.
DDoS 및 타임 딜레이션 공격
DDoS 공격은 암호화폐를 탈취하려는 목적이 아니라, 프로젝트를 방해하거나 신생 스타트업의 신뢰도를 떨어뜨리기 위해 시도돼요. 네트워크에 대량의 쓸모없는 '더스트' 트랜잭션을 보내 시스템을 느리게 만들고, 데이터 전송·블록체인 업데이트·신규 블록 생성까지 모두 지연시켜요.
개인 키 공격
블록체인에서 공개 채널의 데이터 전송 기밀성을 위해 비대칭 암호화 기술, 즉 개인 키와 공개 키를 사용해요. 이 두 키는 수학적 알고리즘으로 연결돼 있어요. 사용자의 공개 키를 알면 메시지를 암호화해 보낼 수 있고, 수신자는 개인 키로 복호화할 수 있어요. 반대로 개인 키로부터 공개 키를 알아내는 건 가능하지만, 공개 키만으로 개인 키를 역산하는 건 불가능해요.
개인 키는 사용자의 모든 암호화폐 자산에 대한 완전한 접근 권한을 제공하기 때문에, 공격자들이 노리는 핵심 목표예요.
취약점과 보호 방법
개인 키와 연결된 암호화폐에 접근하는 가장 쉬운 방법은 시드 문구를 훔치는 거예요. 종이에 적힌 니모닉 코드를 훔치거나, 사회공학이나 피싱 공격 등 다양한 방식이 있어요.
개인 키와 암호화폐 자산을 안전하게 보호하려면 Tangem Wallet에 보관하는 방법이 있어요. Tangem 암호화폐 지갑은 시드 문구를 사용하지 않기 때문에, 시드 문구 자체가 탈취될 위험이 없어요. 개인 키는 두 장 또는 세 장의 카드(메인 카드와 백업 카드) 칩에서 생성·저장되고, 외부로 추출할 수 없어요.
결론
현재 블록체인은 위에서 소개한 다양한 공격뿐 아니라, 네트워크별 코드 오류, 암호화 방식 문제 등 여러 위협에 직면해 있어요. 해커들은 스마트 컨트랙트 코드의 취약점, 블록체인 자체의 약점, 암호화폐 거래소까지 끊임없이 허점을 찾고 노리고 있어요.
가상 위협
아직까지는 이론에 불과하지만, 다음과 같은 공격 방식도 존재해요:
- 채굴풀 간의 '카니발리즘'(풀 파괴를 통한 블록체인 운영 방해)
- P + 엡실론(P + epsilon) 공격: Vitalik Buterin이 PoW 네트워크에서 가장 우려되는 문제로 꼽은 것으로, 블록체인 변경을 지지하도록 네트워크 참가자에게 뇌물을 주는 방식이에요.
- 타임재킹(Timejacking): 거래 타임스탬프를 조작하려는 시도
현재로서는 해커들이 이런 공격에 큰 관심을 보이지 않고 있어요.
앞으로의 전망
결국 모든 위협에 대한 유일한 해법은 분산 네트워크의 보안 메커니즘을 지속적으로 개선하는 거예요. 하지만 경험상, 보안 수준이 높아질수록 채굴자와 해커들의 공격 방식도 더 정교해지고 있어요. 이 싸움은 끝이 없을 거예요. 전통 금융에서도 ATM 해킹, 신용카드 도난, 은행 강도 등 다양한 사고가 발생하듯, 100% 완벽한 보안은 존재하지 않아요.