비트코인코어가 최근 버그에 대해 쉬쉬해야 했던 사정

등록 : 2018년 10월 5일 06:20 | 수정 : 2018년 10월 4일 23:53

이미지=Getty Images Bank

 

지난달 중순 비트코인에서 중요한 버그가 일어났다. 개발자들이 처음 발표했던 것보다 상황은 훨씬 심각했다는 정황이 속속 드러나고 있다.

버그 때문에 네트워크의 상당 부분의 가동이 정지될 수도 있었다는 사실이 알려지면서 비트코인 업계 전체가 충격에 빠지기도 했다. 이 사실만으로도 많은 이들이 충격을 받을 만했지만, 이어 비트코인 코어 개발자들이 버그에 관해 뒤이어 확인된 사실을 비롯해 꽤 많은 부분을 비밀에 부쳤던 것으로 드러났다.

보안 취약점을 분석한 공식 보고서(Common Vulnerabilities and Exposure, CVE)에 따르면 공격자는 이번 버그를 악용해 새로운 비트코인을 만들 수도 있었다. 비트코인은 전체 발행량이 처음부터 2,100만 개로 정해져 있는데, 이 한도를 무시하고 새로 비트코인을 마구 발행해 공급량을 늘려 기존의 비트코인 가치를 폭락시킬 수도 있던 것이다.

엄격하게 정해둔 발행량에 관한 원칙이 왜곡되고 무너졌다면 자칫 비트코인 가격이 전에 없이 요동치고 비트코인은 물론 암호화폐 전반에 대한 신뢰 자체가 곤두박질칠 수도 있는 상황이었다.

이렇게 감당하기 어려운 혼란을 일으킬 수 있다는 이유로 개발자들은 버그에 관한 세부사항을 비밀에 부치고 채굴자와 사용자들에게는 프로그램을 업그레이드하도록 권고하고 버그를 고칠 시간을 벌기로 했다. 비트코인 코어 개발자들이 작성한 CVE 보고서도 이 점을 인정했다.

“혼란을 최소화하며 신속히 업그레이드를 완료해 버그를 고치고자 곧바로 프로그램 일부를 수정한 뒤 외부에는 상대적으로 덜 심각한 서비스 거부 공격이 있었다는 사실만 알렸다. 동시에 채굴자와 비트코인 관련 업체들, 버그의 영향을 받은 시스템 운영자들에게 연락을 취해 버그에 관한 내용을 낱낱이 공개하지 말아 달라고 요청해 시스템을 업그레이드할 시간을 벌었다.”

일단은 개발자들의 의도대로 상황이 진행됐다. 비트코인 채굴에 투입되는 연산 능력에 비례해 나타나는 해시레이트(hash rate)의 절반 이상이 새로 수정한 프로그램으로 업그레이드를 신속히 마쳤다. 이는 버그를 이용한 공격으로 네트워크를 장악할 수 없게 됐다는 뜻이기도 하다. 개발자들은 또한, 이번 버그를 악용해 이뤄진 공격은 없었다고 덧붙였다.

 

누가 버그를 발견했나?

이런 심각한 버그를 찾아내는 것은 개발자에게는 아주 힘든 일이다.

처음으로 서비스 거부(denial-of-service) 버그를 비트코인 코어 프로그램과 비트코인 ABC의 상위 개발자에게 보고한 건 익명의 사용자였다. 비트코인 ABC는 비트코인캐시(BCH) 블록체인의 핵심 소프트웨어다. 대략 2시간 뒤 비트코인 시스템을 지원하는 회사인 체인코드(Chaincode)의 기술자와 비트코인 코어 개발자 매트 코랄로(Matt Corallo)가 이번 버그의 심각성, 즉 비트코인이 무제한 발행될 수도 있다는 사실을 알아차렸다.

문제의 심각성 때문에 개발자들은 우선 버그에 관한 세부 사항을 비밀에 부치기로 한다. 대신에 비트코인 채굴 풀인 슬러시 풀(Slush Pool)을 시작으로 채굴자들에게 시스템을 업그레이드하라고 적극적으로 권장했다. 그리고 풀 노드(full node)를 이용하는 비트코인 사용자들에게도 같은 내용을 권장했다.

비트코인 관련 레딧 게시판을 운영하는 데이모스(Theymos)가 포럼에 띄워놓은 공지에 개발자들의 메시지가 잘 담겨 있다.

“0.16.3 버전 외의 다른 비트코인 코어 버전은 실행시켜서는 안 된다. 지난 버전들은 네트워크에 존재해서도 안 된다. 만약 지난 버전을 실행시키고 있는 사람을 알면 그들에게 즉시 업그레이드하라고 알려줘야 한다.”

여기서 또 다른 문제가 나오는데, 바로 비트코인 체인이 갈라질 가능성이 있다는 점이다. 사용자들이 현재 비트코인 프로그램의 다른 버전을 실행하고 있으므로, 네트워크가 일시적으로 두 개로 분리되었다가 합쳐질 위험이 존재한다. 그렇게 되면 기존 소프트웨어를 사용하는 체인에 기록된 거래는 궁극적으로 지워질 수도 있다.

데이모스는 상황을 면밀히 지켜보고 있으며, 실제로 체인이 갈라져 거래 기록이 사라질 위험은 매우 낮다고 생각한다. 그러나 그는 사람들이 실제 비트코인 거래가 이뤄졌는지 확인할 때까지 좀 더 시간을 두고 기다리는 등 예방 조치를 계속해야 한다고 주장한다.

“앞으로 약 일주일간 검증된 횟수가 200번에 못 미치는 거래는 취소될 가능성이 없지 않다고 생각하고 주의해야 한다.”

 

가짜 비트코인?

여전히 일부 사용자는 버그가 이미 비트코인 코어 프로그램에서 악용됐을 가능성이 있다고 생각하고 있다. 이런 질문을 공개적으로 올린 사용자도 있었다.

“버그를 알아차리고 이를 악용해 이미 상당수의 가짜 비트코인이 시중에 나왔는지 확인할 방법이 과연 있을까?”

비트코인 코어의 핵심개발자인 피터 바일라(Pieter Wuille)는 프로그램 성능이 좋아서 비트코인 사용자라면 현재까지 의심스러운 행위를 감지해낼 수 있었을 거라고 설명했다. 처음으로 다운로드했을 때 풀 노드들은 비트코인의 전체 거래 내역을 다시 점검했었다. 새로운 프로그램 0.16.3 버전을 실행하고 있는 노드라면 문제점을 금방 발견할 수 있을 것이다.

그렇다고 해도 여전히 이 버그가 빨리 잡히지 않았다면 어떤 일이 일어났을지에 대한 궁금점은 아직도 남아있다.

데이모스는 “버그가 완전히 이용되었다고 하더라도 보관된 자금에 대한 이론적인 피해는 되돌릴 수 있었을 것”이라고 설명했다. 지난 2010년에 난데없이 비트코인 1,870억 개가 생겨나 이를 전량 폐기했을 때와 마찬가지로 버그를 악용해 찍어낸 비트코인은 거래 기록을 추적해 폐기할 수 있었으리라는 뜻이다.

비트코인 코어와 비트코인 코어의 코드를 사용하는 라이트코인 등 몇몇 코인들은 이미 버그 방지 패치를 적용했다. 하지만 여전히 패치를 내놓지 않아 이번과 같은 인플레이션 버그가 발생했을 때 취약한 상태로 남아있는 코인도 있다.

번역: 뉴스페퍼민트

각종 제보 및 보도자료는 contact@coindeskkorea.com 으로 보내주세요.