비트코인의 네 번째 반감기가 완료되었고, 이 탈중앙화 시스템은 15년 동안 성공적으로 운영되어 왔지만, 2018년에 공개된 비트코인 코어 클라이언트 측 취약점은 비트코인 시스템의 안정성에 직접적인 위협이 되는 것으로 비트코인의 가장 큰 취약점 중 하나라고 할 수 있으며, 오늘은 2018년 9월 20일 공개된 취약점에 대해 소개해드리고자 합니다. 클라이언트 측 이중 플라워 취약점, CVE-2018-17144.
비트코인 코어란 무엇인가요?
사토시 나카모토가 시작한 비트코인 코어는 "정통" 비트코인 클라이언트로 간주되며, 현재 블록체인에서 이루어진 모든 거래를 검증하고 자금을 전송할 수 있는 기능으로 가장 많이 사용되고 있습니다.
CVE-2018-17144란 무엇인가요?
비트코인 코어 릴리스 0.14 - 0.16.2 버전에서는 프로그램 충돌과 이중화 문제(단일 비율 거래에 여러 번 내보낼 수 있는 입력이 포함되어 있어 무제한 증분 발행을 초래하고 비트코인 총 2100만 비트코인의 합의가 파괴될 수 있는 매우 심각한 취약점이 발견되었습니다. 총 2100만 비트코인은 나중에 공개 취약점에 의해 CVE-2018-17144로 기록되었습니다.
왜 이 취약점이 존재하는가?
이 취약점은 2018년에 발견되었지만, 2016년에 한 개발자가 비트코인 코어에 병합을 제안하면서 2016년에 그 토대가 마련되었습니다
거래 검사에서 중복 입력 검사를 제거하여 약 600마이크로초를 절약하길 원했고, 이후 검토자가 이 병합을 통과시켰는데, 이 시점에서 폭탄이 심어진 것입니다.
버전 0.14.x에서는 이 취약점이 클라이언트 코드에서 공식적으로 온라인 상태가 되었으며, 이 취약점을 최대한 활용하면 체인의 데이터에는 영향을 주지 않고 브로드캐스트를 수신하는 클라이언트에 충돌이 발생하고 다른 클라이언트는 공격을 시작한 노드의 브로드캐스트를 삭제할 수 있으며 이 공격을 실행하려면 공격자가 다음을 수행해야 합니다. 이 공격을 트리거하려면 공격자는 블록을 발견해야 하는데, 이는 매우 비용이 많이 들고 일부 클라이언트만 다운시킬 수 있으며 공격자에게 수익을 가져다주지는 않습니다.
2017년 9월에 출시된 버전 0.15가 되어서야 개발자들은 UTXO 데이터베이스의 구조를 최적화하여 중복 입력이 발생하는 경우에도 클라이언트가 계속 작동할 수 있도록 하여 이 취약점에 대한 이중 플라워의 가능성을 열어두었습니다.
이 취약점은 어떻게 발견되었나요?
0.15 버전 출시 후 2018년 9월 17일까지 1년 동안 아무도 이 취약점을 발견하지 못하다가, 한낮에 해변의 미니밴에 앉아 있던 BCH 개발자 어웨어맨이 BCH 코드베이스에서 이 코멘트를 발견했습니다
<>< p style="text-align: 왼쪽;">
중복 입력 확인 - 이 확인은 느리기 때문에 CheckBlock에서 건너뜁니다 style="text-align: left;">많은 사람들이 뭔가 잘못되었다고 감지하고 재시험 모드를 사용하여 중복 입력을 테스트한 결과 직접 메시지가 표시되었습니다
Wham! assert(), Aborted.
What! strong>
그는 이것이 악용되어 인플레이션과 체인 분할로 이어질 수 있다는 위험을 인식하고
비트코인ABC는 다음과 같은 경우 확인하지 않습니다. 블록을 처리할 때 중복 입력을 확인하지 않으며, 멤풀에 트랜잭션을 삽입할 때만 확인합니다.
이것은 중복된 트랜잭션으로 블록을 생성한 다음 컴팩트 블록 누락 트랜잭션 등을 통해 전송할 수 있으므로 위험합니다; 멤풀에 부딪혀 허공에서 돈이 생성될 수 있습니다.
/u/awemany
그 후 그는 즉시 비트코인에 취약점과 수정 사항을 보고했습니다. 비트코인 코어와 비트코인 ABC(BCH 개발팀)에 패치를 배포했습니다.
그는 제출 후 안도감을 느꼈다고 회고하면서 1,000억 달러(현재 1조 2천억 달러) 가치의 통화에 큰 영향을 미칠 수 있는 수백만 달러 규모의 취약점을 발견했으며, 실제로 산술을 빌려 BTC를 공매도할 수 있었다고 썼습니다. 하지만 그는 그러지 않고 취약점을 신고하기로 결정했습니다.
같은 날 21시 58분, 비트코인 ABC는 취약점을 수정하는 패치를 배포하고 광범위한 노드에 업그레이드를 촉구하는 메시지를 보냈으며 대부분의 노드가 업그레이드를 완료한 후 취약점을 완전히 공개했습니다.
그러나 이 취약점은 비트코인과 비트코인캐시뿐만 아니라 비트코인 코어 토렌트의 다양한 포크에도 영향을 미쳤고, 비트코인 코어 팀이 취약점을 병합했기 때문에 모두가 비트코인 코어 팀을 비난했습니다.
600마이크로초의 변화로 인해 실수로 체인에 이중화 취약점이 1년 동안 잠복해 있었는데, 이 취약점이 한번 악용되어 하드포크로 이어질 수 있다면 비트코인 가격이 지금 이 가격을 유지할 수 있을까요? 당시 이더리움의 하드포크가 또 다른 이더리움을 탄생시킨 것과 같은 이치 아닐까요?