비트코인 앱 수수료 취약점 2건…수정 버전은 7.0.4
bitcoinjs-lib에서 PSBT 거래 수수료를 실제보다 낮게 계산할 수 있는 취약점 두 건이 공개됐다. 관리자는 문제를 수정한 버전과 최신 보안 업데이트를 안내했다.
토포AI로 이 기사 더 깊이 읽기
비트코인(BTC) 앱이 부분 서명 거래의 수수료를 실제보다 낮게 계산할 수 있는 취약점 두 건이 공개됐다. 이용자가 앱의 계산값을 믿고 거래를 승인하면 예상보다 큰 채굴 수수료가 붙을 수 있다.
bitcoinjs-lib 관리자는 10월 26일 공개한 두 보안 권고에서 취약점 모두를 심각도 ‘높음’으로 분류했다. 영향 범위는 이 라이브러리로 PSBT를 처리하면서 라이브러리의 수수료 계산이나 과도한 수수료 차단 기능에 의존하는 앱이다.
PSBT는 거래 정보와 서명을 여러 앱이나 서명 장치 사이에 전달하는 형식이다. BIP 174는 PSBT에 거래 입력이 지출할 이전 출력 정보를 담도록 규정하며, 서명자는 이 정보를 바탕으로 수수료를 계산해 이용자에게 보여줄 수 있다.
첫 번째 취약점은 거래 입력 하나에 서로 맞지 않는 두 종류의 이전 출력 기록이 함께 있을 때 발생한다. 서명 과정은 실제 이전 거래의 값을 사용하지만 수수료 계산은 다른 기록에 적힌 낮은 값을 사용할 수 있다.
관리자가 제시한 재현 사례에서는 실제 수수료 9억 사토시가 라이브러리에서 200 사토시로 계산됐다. 서명 검증은 통과했고 거래를 추출할 때 기본 수수료율 경고도 나오지 않았다. 이 수치는 취약점 재현 사례이며 이용자 피해액을 뜻하지 않는다.
두 번째 취약점은 이미 서명이 끝난 거래 입력에서 이전 출력값 기록이 모두 빠졌을 때 나타난다. 라이브러리가 해당 입력값을 0으로 집계하면 수수료를 실제보다 낮게 계산할 수 있다.
관리자의 예시에서는 실제 수수료 9만1000 사토시가 1000 사토시로 표시됐다. 두 사례 모두 수수료 표시와 차단 기능이 실제 거래값을 반영하지 못할 수 있음을 보여준다.
취약점 자체가 서명을 만들거나 승인 없이 비트코인을 옮기지는 않는다. 실제 손실이 발생하려면 유효한 거래가 승인된 뒤 네트워크에 전파돼 받아들여져야 한다. 수수료로 잡힌 초과분은 PSBT를 보낸 사람에게 자동으로 넘어가는 금액이 아니라 채굴자에게 지급된다.
두 취약점의 영향 버전은 v5에서 각각 다르다. 충돌하는 기록 문제는 5.2.0~5.2.1, 입력값 기록 누락 문제는 5.1.0~5.2.1에 해당한다. 두 문제 모두 v6의 6.0.0~6.1.8과 v7의 7.0.0-rc.0~7.0.3에도 영향을 준다.
각 취약점은 5.2.2, 6.1.9, 7.0.4에서 수정됐다. bitcoinjs-lib 관리자는 같은 날 다른 보안 문제를 포함한 권고 15건을 공개하고, 버전 계열별 최신 수정판으로 5.2.3, 6.1.10, 7.0.5를 안내했다.
관리자는 개발자에게 직접·간접 의존성의 버전을 점검하라고 요청했다. 업그레이드가 어려운 앱은 거래 입력마다 실제 이전 출력값을 독립적으로 확인하고, 값이 충돌하거나 누락된 입력을 거부해야 한다. 개별 지갑의 영향 여부와 실제 피해 발생 여부는 확인되지 않았다.

강이안 기자 




Comment 0
불러오는 중…