시세 로딩 중...
로그인
뉴스›비트코인
비트코인

비트코인 앱, 심각한 수수료 누수 위험…2개 라이브러리 버그 원인 지목

미국 CryptoSlate2026년 10월 28일 14:300
비트코인 BTC 뉴스 - 비트코인 앱, 심각한 수수료 누수 위 | 용돈클럽
📝이 기사는 원문을 참조하여 AI가 한국어로 재작성했습니다

비트코인 생태계를 구성하는 핵심 라이브러리 중 하나인 'bitcoinjs-lib'에서 심각한 보안 취약점이 발견되었습니다. 해당 취약점은 비트코인 거래 시 발생하는 수수료를 잘못 계산하게 만들며, 이로 인해 사용자 자산이 의도치 않게 대규모로 유출될 수 있다는 분석이 나왔습니다. 개발자들은 즉각적인 업데이트와 점검을 촉구하고 나섰습니다.

**수수료 과소평가로 인한 잠재적 대규모 손실**

지난 10월 26일, bitcoinjs-lib는 두 가지 주요 버그에 대한 보안 권고를 발표했습니다. 이 버그들은 특히 부분 서명된 비트코인 거래(PSBT, Partially Signed Bitcoin Transaction) 형식에서 문제가 발생하며, 애플리케이션이 거래의 입력값 기록을 신뢰할 경우 채굴자 수수료를 과소평가하게 만들 수 있다고 설명했습니다. PSBT는 트랜잭션 정보와 서명을 여러 클라이언트 간에 전달하는 표준으로, BIP 174에 정의되어 있습니다. 서명, 서명 결합, 입력값 확정, 트랜잭션 추출 등은 개별적인 기능으로 분리되어 작동합니다.

이번에 발견된 취약점은 해당 라이브러리의 수수료 계산 또는 과다 수수료 방지 기능을 독립적으로 검증하지 않고 그대로 신뢰하는 애플리케이션에서 발생할 위험이 있습니다. 따라서 해당 라이브러리를 사용하는 개발자들은 사용하고 있는 의존성 버전을 검토하고, 가져온 PSBT를 어떻게 검증하는지 면밀히 점검해야 합니다.

**잘못된 서명이 어떻게 오해의 소지가 있는 수수료와 함께 전달되는가?**

비트코인 거래의 수수료는 입력값의 총합과 출력값의 총합의 차이로 결정됩니다. 따라서 입력값의 총합을 과소평가하게 되면, 계산된 수수료는 실제보다 훨씬 작게 보이게 됩니다. 첫 번째 취약점의 경우, 서명 과정과 수수료 계산 과정에서 동일한 입력값에 대해 서로 다른 값을 사용할 수 있다는 점이 문제입니다. 서명은 전체 이전 거래 내역을 사용하는 반면, 수수료 계산은 더 작은 값을 포함하는 상충되는 기록을 선호할 수 있습니다. 결과적으로, 취약한 소프트웨어는 실제 거래를 승인하면서도 잘못된 수수료를 평가하게 됩니다.

보안 권고에 따르면, bitcoinjs-lib 7.0.1 버전에서 실제 수수료는 900,000,000 사토시(satoshi)에 달했지만, 라이브러리는 이를 200 사토시로 보고했습니다. 놀랍게도 서명은 정상적으로 검증되었고, 추출 과정에서 기본 수수료율 경고도 발생하지 않았습니다. 이는 사용자나 개발자가 심각한 수수료 누수 위험에 노출될 수 있음을 시사합니다.

두 번째 취약점은 최종 확정된 입력값에 대해 입력값 기록이 모두 누락된 경우를 설명합니다. 수수료 계산기는 이러한 입력값을 0으로 간주하며, 이미 서명된 PSBT를 다른 당사자로부터 가져온 경우 추가적인 서명 작업 없이도 이 계산에 도달할 수 있습니다. 이 경우, 실제 수수료는 91,000 사토시였지만 보고된 수수료는 1,000 사토시였습니다. 최종 확정된 스크립트와 서명만으로는 누락된 입력값의 실제 가치를 파악할 수 없습니다.

**실질적인 손실 발생 조건과 영향 범위**

실질적인 자산 손실은 반드시 승인되고 유효한 거래가 네트워크에 의해 방송되고 수락될 때 발생합니다. 이 결함 자체는 새로운 서명을 생성하지 않으며, 초과된 가치는 궁극적으로 채굴자 수수료로 귀결됩니다. 즉, 이 버그가 악용되기 위해서는 공격자가 정상적인 거래를 생성하고, 해당 거래가 비트코인 네트워크에서 유효한 것으로 처리되어야 합니다. 하지만 수수료가 과소평가된 상태로 거래가 처리된다면, 사용자는 예상치 못한 엄청난 금액을 수수료로 지불하게 되는 결과를 맞이하게 됩니다.

영향을 받는 릴리스 버전은 다음과 같습니다. 상충되는 기록(conflicting record) 문제는 5.2.0부터 5.2.1, 6.0.0부터 6.1.8(6.1.0-rc.0 포함), 그리고 7.0.0-rc.0부터 7.0.3까지의 범위에 해당합니다. 입력값 기록 누락(missing record) 결함은 동일한 v6 및 v7 범위에 영향을 미치며, v5 라인에서는 5.1.0부터 5.2.1까지의 범위도 포함됩니다.

**개발자의 대응 방안 및 향후 전망**

이번 취약점에 대한 해결책으로 bitcoinjs-lib는 최신 버전(5.2.2, 6.1.9, 7.0.4)을 통해 입력값 기록의 일관성을 보장하고, 부분 서명된 거래 처리 시 수수료 계산의 정확성을 강화하는 업데이트를 배포했습니다. 라이브러리 개발자들은 해당 업데이트를 적용하고, 자신이 개발한 애플리케이션에서 PSBT 관련 로직을 재점검하도록 강력히 권고하고 있습니다. 특히, 외부에서 받은 PSBT 데이터를 처리할 때는 라이브러리의 계산 결과를 맹신하지 말고, 입력값의 총합을 독립적으로 검증하는 안전장치를 마련해야 합니다.

이와 같은 보안 취약점은 비트코인 생태계의 성장에 따라 복잡성이 증가하면서 필연적으로 발생할 수 있는 문제입니다. 그러나 이러한 취약점이 신속하게 발견되고 해결되는 과정은 비트코인 네트워크의 회복탄력성과 보안성을 더욱 강화하는 계기가 될 것입니다. 사용자들은 자신의 거래 소프트웨어가 최신 보안 패치를 적용하고 있는지 확인하는 것이 중요하며, 개발자들은 보안 코딩 관행을 더욱 철저히 준수해야 할 것입니다.

공유X페이스북