블록체인 해킹의 모든 것: 탈중앙화 네트워크를 노리는 공격
핵심 인사이트
이 글에서는 블록체인 네트워크가 공격받는 다양한 방식을 살펴봐요. 블록체인은 중앙화된 데이터베이스보다 더 안전하지만, 51% 공격, 이중 지불, 시빌 공격, 이기적 채굴, 스마트 컨트랙트 취약점, 개인 키 탈취 등 다양한 위협에 여전히 노출돼 있어요. 실제 사례를 통해 이런 공격이 특히 소규모 프로젝트에 막대한 금전적 피해를 줄 수 있음을 보여줍니다. 보안이 발전할수록 공격도 정교해지기 때문에, 블록체인 안전을 위해 지속적인 경계와 혁신이 필수적이에요.
블록체인은 분산 원장으로서 정보를 저장하고 거래를 처리하는 데 있어 중앙화된 데이터베이스보다 훨씬 신뢰할 수 있는 솔루션이에요. 하지만 해킹 시도가 빈번하게 일어나며, 완전히 안전하진 않아요. 탈중앙화 네트워크에 대한 공격은 합의 메커니즘의 허점을 노리거나 블록체인의 해시레이트를 장악하는 데 집중돼요. 이로 인해 악의적인 공격자가 레지스트리의 데이터를 바꾸고, 혼란을 일으키거나 암호화폐를 탈취할 수 있어요.
이번 글에서는 블록체인이 어떤 방식으로 공격받는지, 그리고 대표적인 위협에는 무엇이 있는지 알아볼게요.
51% 공격
51% 공격은 블록체인에 가해질 수 있는 가장 대표적인 위협이에요. 주로 작업증명(PoW) 합의 알고리즘을 사용하는 네트워크에서 발생할 수 있어요.
공격의 원리
핵심은 네트워크 전체 연산력(해시레이트)의 50%를 넘게 장악하는 거예요. 이는 마치 회사의 지분 과반을 가진 것과 비슷해서, 네트워크의 주요 결정을 마음대로 할 수 있게 돼요. 해시레이트의 51% 이상을 통제하면 블록체인의 연산력을 사실상 지배하는 셈이죠.
공격자가 채굴 연산력의 절반 이상을 갖게 되면, 거래 순서를 바꾸거나 거래 승인을 무효화할 수 있고, 다른 채굴자의 채굴을 방해할 수도 있어요. 즉, 네트워크에 혼란을 일으키고 장애를 유발할 수 있죠. 또 눈에 띄지 않게 동일 암호화폐를 여러 번 쓰는 이중 지불(Double Spending)도 가능합니다.
이렇게 막대한 연산력을 확보하는 방법에는 대규모 채굴 장비를 임대하거나, 채굴 풀을 직접 만들거나 장악하는 방식이 있어요. 또는 다른 채굴자를 속이거나, 악성코드를 이용해 불법적으로 채굴 봇넷을 운영하는 방법도 있죠.
실제로 가능한가요?
하지만 비트코인처럼 노드 수가 많고 채굴 장비와 전기 요금이 많이 드는 대형 블록체인에서는 51% 공격이 거의 불가능하며, 시도할 가치도 크지 않아요. 반면 소규모 프로젝트는 이런 위협에서 자유롭지 못해요.
실제로 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) 네트워크가 3차례 공격을 받은 일이 있어요. 공격자는 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의 동명 소설 주인공에서 이름을 따왔어요. 공격자는 자신이 통제하는 노드로 네트워크를 채우고, 피해자 노드를 '포위'해 모든 거래를 조작하려 해요.
취약점 노리기
비트코인처럼 대형 네트워크에서는 노드가 무작위로 상대 노드를 선택해 거래를 검증하기 때문에, 시빌 공격이 거의 불가능해요.
그래서 시빌 공격은 주로 신규 암호화폐 프로젝트를 노려요. 네트워크에 연결하는 노드는 신뢰할 수 있는 노드의 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의 4개 유동성 풀은 스마트 컨트랙트 언어인 Vyper의 취약점으로 인해 해킹당했어요. Curve Finance는 자동화된 시장조성자(AMM) 기술을 사용하는 탈중앙화 거래소이자 DeFi의 주요 스테이블코인 유동성 허브예요. 총 6,000만 달러가 탈취됐고, 이 중 2,000만 달러는 화이트햇 해커가 회수해 돌려줬어요. 가장 큰 피해는 CRV/ETH 메인 풀 해킹으로, 약 4,000만 달러의 유동성이 모두 빠져나갔어요.
DDoS 및 시간 지연 공격
DDoS 공격은 암호화폐를 훔치려는 목적이 아니라, 프로젝트를 방해하거나 신뢰를 떨어뜨리기 위해 이뤄져요. 네트워크에 대량의 쓸모없는 '더스트' 거래를 보내 데이터 전송, 블록체인 업데이트, 새 블록 생성 등을 느리게 만들죠.
개인 키 공격
블록체인에서 공개 채널로 데이터를 안전하게 주고받으려면 비대칭 암호화 기술, 즉 개인 키와 공개 키를 활용한 암호화가 사용돼요. 이 두 키는 수학적으로 연결돼 있어요. 공개 키만 알면 그 사람에게 암호화된 메시지를 보내고, 상대방은 개인 키로 복호화할 수 있어요. 반대로, 개인 키로 공개 키를 알아낼 수 있지만, 공개 키만으로는 개인 키를 알 수 없어요.
개인 키는 사용자의 모든 암호화폐 자산에 접근할 수 있게 해주기 때문에, 공격자들이 노리는 핵심 목표예요.
취약점과 보호 방법
개인 키와 연결된 암호화폐를 탈취하는 가장 쉬운 방법은 시드 구문을 훔치는 거예요. 종이에 적힌 니모닉 코드를 빼앗거나, 사회공학이나 피싱 공격 등 다양한 방식이 쓰일 수 있어요.
개인 키와 암호화폐 자산을 안전하게 지키려면 Tangem Wallet에 저장하는 방법이 있어요. Tangem 암호화폐 지갑은 시드 구문을 사용하지 않기 때문에, 종이 유출 등으로 탈취될 위험이 없어요. 개인 키는 2~3장의 카드(메인 카드와 백업 카드) 칩에서 생성·저장되고, 외부로 추출할 수 없습니다.
맺음말
현재 블록체인은 위에서 소개한 다양한 공격뿐 아니라, 네트워크별로 코드 오류, 암호화 방식 문제 등 여러 위협에 노출돼 있어요. 해커들은 스마트 컨트랙트 코드의 취약점, 블록체인 기술 자체의 약점, 암호화폐 거래소 등을 끊임없이 노리고 있어요.
가상의 위협
아직 현실화되진 않았지만, 이론적으로 가능한 공격도 있어요.
- 채굴 풀 간의 '카니발리즘'(풀 파괴를 통한 블록체인 운영 방해)
- P + 엡실론 공격: 비탈릭 부테린이 지적한 PoW 네트워크의 대표적 문제로, 블록체인 변경을 지지하도록 다른 참여자에게 뇌물을 주는 방식이에요.
- 타임재킹(Timejacking): 거래 타임스탬프를 조작하려는 시도
현재로선 해커들이 이런 전략에는 큰 관심을 보이지 않고 있어요.
앞으로의 전망
이 모든 위협에 대한 유일한 해법은 탈중앙화 네트워크의 보안 메커니즘을 끊임없이 발전시키는 거예요. 하지만 경험상, 보안 수준이 높아질수록 채굴자와 해커들의 공격 방식도 점점 정교해지고 있어요. 이 싸움은 끝이 없을 거예요. 전통 금융에서도 ATM 해킹, 카드 도난, 은행 강도 등 100% 안전이란 건 없으니까요.