[인사이트] 비트코인 코어, 피해 없지만 가볍지 않은 ‘그 문제’

최근 비트코인 네트워크에서 결함이 발견됐다. 지난달 17일 비트코인 코어 개발팀에 버그가 있다는  제보가 들어왔다. ‘비트코인 코어(bitcoin core)’는 블록을 생성하는 채굴자(miner, 관리자의 한 종류)들이 거래 내역을 올리기 전에 이를 검증하는 코드인데, 이 프로그램에 ‘검증 생략’ 코드가 삽입됐다는 내용이었다. 현재는 해당 버그를 수정한 새로운 비트코인 0.16.3 버전이 나온 상태다.

비트코인의 경우 버그로 인한 실제 피해는 없는 것으로 알려졌지만 이와 상황이 다른 곳도 있다. 지난 2일 코인데스크 보도에 따르면 피죤코인에서 ‘이중 지불’ 공격이 발생했다. 피죤코인은 일반에 공개된 비트코인의 코드를 차용한 블록체인 중 하나였다. 그래서 비트코인 네트워크에서 발견했던 버그가 피죤코인에 잔존해 있었고, 지난달 26일 해커는 이 결함을 악용해 약 2억 3500만 개의 피죤코인을 무단으로 찍어냈다. 피해 규모는 약 1700만 원에 달한다.

피죤코인은 비트코인 코드를 따라 올 3월에 등장했다. (image : bitcointalk)

해킹 이후 피죤코인의 전체 공급량이 증가하면서 코인 가격이 떨어졌다. 이에 피죤코인 개발진은 네트워크 관리자들에게 필요한 새로운 버전을 업데이트했다. 지난달 27일 해당 개발진은 깃허브를 통해 “비트코인 코드로부터 기인한 (피죤코인 내의) 이중 지불 공격을 해소하기 위해 당장 업그레이드를 하라”고 고지했다.

과거 비트코인도 피죤코인과 비슷한 피해를 입을 뻔한 사건이 있었다.

비트코인 위키에 따르면 2010년 8월, 1조 8443억 개의 비트코인을 찍어내는 트랜잭션들이 블록에 끼어들었다. 이 거래를 받아들이는 채굴자에게 0.01BTC를 보상으로 주겠다는 단서까지 걸렸다. 거래 내역을 검증하는 과정이 생략되는 오류를 이용한 ‘이중 지불 공격’이었다. 이번 비트코인 코어 문제와 유사하다.

운 좋게도 이 공격은 시도에 그쳤다. 결함이 발견된 지 5시간 만에 새로운 버전의 소프트웨어가 배포됐다. 관리자들(노드, node)도 해커가 만든 거래 내역을 거부하는 방향으로 합의를 이어갔다. 곧 합의에 따르는 관리자들의 데이터베이스(DB)가 합의에 불응하는 관리자들의 것을 넘어섰다. 당시 이중 지불 공격은 초반에 새어나간 0.5BTC를 제외하고 무효가 됐다.  

“74638번 블록이 좀 이상한 것 같아” (image: bitcointalk)

결국 이번 비트코인 코어의 결함은 단순 해프닝으로만 보기 어렵다. 비트코인을 본딴 다른 블록체인에서 이 결함으로 인해 피해를 입었고, 과거에도 해커가 비트코인 네트워크에서 비슷한 공격을 시도했기 때문이다.

그렇다면 현재 비트코인 생태계는 이러한 상황에 어떻게 대응하고 있을까. 비트코인 노드들의 현황을 보여주는 사이트인 코인댄스을 살펴보면 현재 비트코인 노드의 56%가 이중 지불로 이어질 수 있는 취약점에서 벗어나 있다. 비트코인 네트워크를 운영하는 9714개 노드 중 비트코인 코어를 쓰는 노드가 9243개이다.

이들이 해당 소프트웨어를 한꺼번에 바꿀 수는 없다. 블록체인은 여러 노드가 한 줄기의 거래 기록을 공유하는 분산원장 기술, 하나의 사령탑이 진두지휘하는 방식이 아닌 까닭이다. 그러나 이들은 비트코인 코어 개발팀에서 개정한 새로운 버전을 차차 받아들이고 있는 것으로 보인다.  

현재 노드 프로그램 개발팀과 채굴자 커뮤니티(마이닝풀, mining pool)는 긴밀하게 협력하고 있는  것으로 알려졌다. 예컨대 비트코인 코어에서 결함이 접수될 경우 개발팀에서 세계적인 규모의 마이닝풀인 슬러시에 긴급하게 상황을 공유하는 방식이다.

카이스트 전산학부 김용대 교수는 “취약점은 평판과 연결된다”며 “취약점 분석을 견디는 블록체인이 안전해지고, 성공하게 될 것”이라고 진단했다.