, 2025년 9월 15일
“비트코인의 암호화 재앙: secp256k1에 대한 명시적 및 암묵적 키 유출과 심각한 공격으로 네트워크 전체가 위협받고 있다.” 개인 키 유출은 비트코인 생태계에서 가장 위험한 암호화 취약점 중 하나입니다. 그 결과는 치명적입니다. 공격자는 즉시 자금에 대한 완전한 통제권을 확보하고, 거래에 서명하고, 코인을 훔치고, 네트워크 공격을 통해 네트워크 전체를 해킹할 수 있습니다.
- “치명적인 키 노출: 논스 재사용, 서명 변조 가능성 및 비트코인 보안에 대한 파괴적인 공격”
- “암호화폐에 대한 근본적인 위협: 비트코인 전체 해킹의 원인으로서 개인 키 유출 및 트위스트 공격”
- “secp256k1 취약점: 은밀한 키 유출, 논스 리플레이, 그리고 비트코인 생태계의 신뢰 붕괴”
- “글로벌 블록체인 취약성: 개인 키 유출이 비트코인의 완전한 보안 상실로 이어지는 방식”
- 트위스트 공격 및 논스 재사용: secp256k1 구현의 심각한 취약점이 비트코인의 완전한 파괴를 어떻게 위협하는가
- “개인 키의 치명적인 노출: secp256k1 타원 곡선 프레임워크에 대한 공격과 비트코인 보안의 붕괴”
- “글로벌 블록체인 위협: 비트코인 생태계의 키 생성 및 저장 취약점을 이용한 심각한 해킹 공격”
비트코인 보안에 미치는 영향
치명적인 개인 키 유출 취약점이 네트워크 보안의 근간을 뒤흔들고 있습니다.
- 직접적인 절도 : 키 소유자는 어떤 주소로든 유효한 거래에 자유롭게 서명할 수 있으며, 이로 인한 손실은 종종 돌이킬 수 없습니다. publications.cispa+1
- 개인 지갑 공격 : 개인 지갑 및 거래소 지갑을 해킹하는 데 사용되며, 해킹 후 자금은 복구할 수 없이 사라집니다. pikabu
- 네트워크에 대한 신뢰 약화 : 대규모 보안 침해는 공황, 신뢰 상실 및 자본 유출을 초래합니다. publications.cispa
- 포렌식의 어려움 : 블록체인에도 일반 사용자와 동일한 규칙이 적용되므로 공격자를 식별하는 것이 거의 불가능합니다. publications.cispa
공격 유형 및 과학적 명칭
이 공격에는 과학적인 명칭이 있습니다.
- 명시적 키 유출 : 공개 소스, 파일, Pastebin, GitHub 등에 개인 키를 저장, 게시 또는 실수로 공개하는 행위. publications.cispa
- 암묵적 키 유출 : 암호화 기본 요소의 오용: ECDSA nonce 재사용 또는 “서명 변조” 취약점. cryptodeep+1
- ECDSA 논스 재사용 공격 : 서명에 반복되는 논스 요소를 이용하여 서명 쌍을 분석함으로써 개인 키를 계산할 수 있는 강력한 공격입니다. semanticscholar+1
- 비트 플리핑 공격 : wallet.dat 파일을 암호화할 때 CBC 모드의 취약한 구현을 사용하여 비밀번호 복구 및 키 탈취를 유발합니다. bits+1
- 디지털 서명 위조 공격: 프로토콜의 취약점을 이용하여 공격자가 유효하지만 가짜 서명을 생성할 수 있도록 합니다 .
- 서명 변조 가능성: 서명 검증 구현상의 버그로, 서명의 유효성을 훼손하지 않고도 서명을 수정할 수 있습니다. cryptodeeptech+1
CVE – 공식 취약점 번호
나열된 공격 중 일부는 CVE 시스템에 공식 번호가 부여되어 있습니다.
- CVE-2025-29774 — SIGHASH_SINGLE 버그를 이용한 디지털 서명 위조 공격 취약점, 다중 서명 비트코인 지갑을 위협합니다 .
- CVE-2013-4480 및 CVE-2012-2459 는 키 오용 및 ECDSA 기본 요소와 관련된 CVE의 예입니다. habr+1
- 평문 키 유출이나 논스 재사용을 통한 공격의 경우 직접적인 CVE 번호가 없을 수 있지만, 관련 문헌에서는 논스 재사용/ECDSA 키 유출을 통한 공격을 언급하고 있습니다. semanticscholar+1
과학 용어
과학 논문에서 공격을 다음과 같이 부릅니다.
- 명시적/암시적 키 누출
- ECDSA Nonce-reuse 공격
- CBC 모드에 대한 비트 플립 공격
- 서명 변조 취약점
- 디지털 서명 위조
결론
개인 키 유출은 비트코인 암호화폐에 있어 근본적인 위험입니다. 이는 타원 곡선 암호화의 모든 장점을 즉시 무효화하여 공격자가 피해자의 자금을 장악할 수 있게 합니다. 과학적으로 이러한 공격은 “키 유출”, “논스 재사용”, “서명 변조” 또는 “디지털 서명 위조” 등으로 분류되며, CVE 시스템에는 CVE-2025-29774와 같은 다양한 유형이 공식적으로 등록되어 있습니다 .
이 코드에서는 암호화 취약점(예: 개인 키 유출)이 어떤 줄에서도 발견되지 않습니다 . 현재 모듈은 종속성을 가져오고 내보낼 뿐, 키 관련 연산이나 암호화 로직을 구현하지 않습니다. 이와 유사한 유형의 취약점은 개인 키가 잘못 생성, 저장, 전송 또는 내보내질 때 발생하며, 이는 구현 모듈 자체의 소스 코드(예: `<module>` ecc_lib, crypto`<module>` 등)에서만 발견되고 내보내는 파일에서는 발견되지 않습니다. stackoverflow+3
암호화 취약점: 어디를 살펴봐야 할까요?
- 이러한 기능은 키를 사용하는 함수 내에서 구현됩니다. 예를 들어 다음과 같습니다.
- 흔히 저지르는 실수:
실제 취약점의 예시
초기 BitcoinJS 지갑의 심각한 취약점은 JSBN/Math.random 모듈(내보내기 파일이 아님)에서 개인 키를 생성할 때 사용되는 취약한 의사난수 생성기(PRNG) 때문에 발생했습니다. 예를 들어 다음과 같은 모듈에서: htx+1
js:// Псевдокод — уязвимость только если используется:
const privateKey = Math.random().toString(36).substr(2); // Неправильное получение случайного ключа
당신의 대사:
js:const crypto = require('./crypto');
exports.crypto = crypto;
이 코드는 비밀 정보를 처리하지 않고 단순히 모듈을 가져오고 내보내기만 하기 때문에 취약합니다. (nodejs)

표 및 분석
| 선 | 위협 | 논평 |
|---|---|---|
| 수입 | 아니요 | 열쇠를 직접 사용하는 작업은 없습니다. |
| 수출 | 아니요 | 개인 데이터 내보내기 금지 |
| 모듈 기능 | 아니요 | 모듈 내부의 코드 분석이 필요합니다. |
보정
한 연구 논문은 암호화 취약점, 특히 개인 키 유출의 원인을 설명하고, 민감한 데이터를 보호하기 위한 안전한 코드 예시를 포함하여 이를 방지하기 위한 모범 사례를 제시합니다. habr+2
암호화 취약점의 출현
소프트웨어 시스템의 암호화 취약점은 다음과 같은 이유로 발생합니다.
- 약한 난수 생성기 사용 : 개인 키 생성 시 엔트로피가 부족하면 공격자가 무차별 대입 공격이나 예측 가능한 출력 시퀀스 분석을 통해 키 를 쉽게 추측할 수 있습니다.
- 개인 키를 암호화하지 않고 저장 및 전송하는 것은 보안 위험을 초래합니다 . 민감한 데이터를 로그 파일이나 보호되지 않은 파일에 기록하거나 애플리케이션의 전역 범위로 내보내는 행위는 보안 침해로 이어질 수 있습니다.
- 불충분한 접근 제어 : 격리된 저장소와 접근 권한 확인이 부족하면 개인 데이터에 대한 무단 읽기 또는 수정으로 이어질 수 있습니다. xygeni
- 암호화 기본 요소의 잘못된 구현 : 알고리즘 자체의 오류(예: 암호화 모드 및 패딩 방식의 잘못된 사용)는 새로운 공격 경로를 열어줍니다 .
현재 공격
실제로는 다음과 같은 공격이 발생합니다.
- API 키가 유출되었거나 실수로 공개 저장소에 게시되었습니다. tproger
- 메시지 처리 오류로 인한 CBC 모드 블록 암호 및 “오라클 패딩” 취약점에 대한 공격. habr
- 암호화되지 않은 JSON 객체를 통해 개인 키를 내보내는 등 취약한 비밀 저장소를 공격합니다 .
예방하는 가장 안전한 방법
일반적인 권장 사항
- 개인 키와 비밀 키를 생성할 때는 항상 암호학적으로 강력한 난수 생성기를 사용 하십시오
crypto.randomBytes(예 : Node.js). - 비밀 정보는 특수 보안 저장소(예: HashiCorp Vault, AWS Secrets Manager, 접근 권한이 제한된 환경 변수, 서비스 전용 권한이 있는 파일)에만 저장하십시오 .
- 키의 범위를 제한하고, 전역 변수를 사용하지 않으며, 비밀 데이터를 내보내거나 로깅하지 마십시오. (xygeni)
- 정기적인 보안 감사를 수행하고 , 자동 유출 모니터링 도구(GitGuardian 등)를 사용하며, 이를 CI/CD에 통합하십시오 .
- 최소 권한 접근 제어(RBAC, MFA, 접근 정책 설정)를 사용하십시오. xygeni
개인 키를 안전하게 저장하고 관리하는 구현 예시
취약한(위험한) 조각
자바스크립트:// Плохая практика! Ключ генерируется с Math.random и хранится небезопасно.
const privateKey = Math.random().toString(36).slice(2); // Некриптографическая случайность
fs.writeFileSync("./privateKey.txt", privateKey); // Хранение в обычном файле
console.log("Private key:", privateKey); // Вывод в консоль/лог
문제점: 취약한 생성기, 암호화되지 않은 저장소, 로그 유출. tproger
안전한 선택
자바스크립트:const crypto = require('crypto');
// 1. Получаем криптографически стойкий приватный ключ.
// Пример для secp256k1: 32 байта случайных данных.
const privateKey = crypto.randomBytes(32).toString('hex');
// 2. Храним ключ в изолированном защищённом vault или через системный менеджер секретов.
// Для иллюстрации — безопасное хранение в переменной окружения.
process.env.PRIVATE_KEY = privateKey; // Только для внутреннего использования
// 3. НЕЛЬЗЯ писать ключ ни в лог, ни в консоль!
console.log("Приватный ключ успешно создан и сохранён безопасно.");
장점: 강력한 무작위성, 파일/로그에 명시적인 키 입력 없음, 가시성 제한적. xygeni+1
장기적인 보안 솔루션
- 비밀 정보 가 소스 코드나 공개 저장소로 유출되는 것을 방지하기 위해 개발 및 배포 과정에 비밀 정보 감사 및 스캔 도구 (예: GitGuardian, TruffleHog) 를 통합하십시오 .
- 개발자를 대상으로 비밀 키 및 암호화 기술의 기본 사항에 대한 교육 과 정기적인 보안 교육을 실시합니다 . (xygeni)
- 검증된 라이브러리만 사용하고, 종속성을 적시에 업데이트합니다(Snyk, npm audit). notissimus
- 인프라 상태 모니터링 설정, 손상된 키 및 토큰의 자동 폐기 연결. tproger
결론
암호화 취약점은 비밀 데이터의 생성, 저장 및 접근 제어 구현상의 결함에서 비롯됩니다. 현대적인 접근 방식은 강력한 생성기 사용, 안전한 저장소 구축, 자동 감사 및 모니터링, 비밀 정보 노출 제한, 그리고 정기적인 직원 교육을 요구합니다. 이러한 포괄적인 전략만이 현대적인 공격으로부터 지속적인 보호를 제공하고 개인 키 유출을 방지할 수 있습니다. habr+2
본 연구 논문의 최종 결론은 다음과 같습니다.
개인 키 유출 및 트위스트 공격, 논스 재사용 공격과 같은 심각한 취약점은 타원 곡선 secp256k1에 대한 근본적인 위험을 초래합니다. 이러한 공격은 블록체인 기술의 핵심 장점인 암호학적 강도를 무너뜨려 공격자가 피해자의 자금을 즉시 완전히 장악할 수 있도록 합니다. 키 유출은 돌이킬 수 없는 재정적 손실, 비트코인에 대한 신뢰 상실, 그리고 새로운 범죄 수법과 대규모 지갑 공격의 물결을 야기합니다. 과학적 분석에 따르면 이러한 취약점을 제거하기 위해서는 매우 강력한 키 생성, 안전한 저장, 코드 감사, 그리고 암호 시스템 수명 주기의 모든 단계에서 보안 수준을 지속적으로 개선하는 것을 포함하는 포괄적인 접근 방식이 필요합니다. 과학계, 개발자, 그리고 사용자의 노력이 결집될 때만이 비트코인의 미래를 지키고 이러한 공격의 파괴적인 결과를 막을 수 있습니다. cyberleninka+3

성공적인 복구 시연: 22,48976361 BTC 지갑
사례 연구 개요 및 검증
크립토딥테크(CryptoDeepTech) 연구팀은 22,489,76361 BTC (복구 당시 약 2,827,525.52달러) 가 들어 있는 비트코인 지갑에 접근하여 해당 취약점의 실질적인 영향을 성공적으로 입증했습니다 . 목표 지갑 주소는 16jLdtAxgXVwcG93MyPcNALXMCv3D6dyDB 로 , 비트코인 블록체인 상에서 공개적으로 확인 가능한 주소이며 거래 내역과 잔액이 확인되었습니다.
이번 시연은 취약점의 존재와 공격 방법론의 효과성을 실증적으로 검증하는 역할을 했습니다.

복구 과정에는 지갑의 개인 키를 재구성하기 위해 취약점을 체계적으로 적용하는 작업이 포함되었습니다. 취약점의 매개변수를 분석하고 축소된 검색 공간 내에서 잠재적인 키 후보를 체계적으로 테스트한 결과, 팀은 지갑 가져오기 형식(WIF)에서 유효한 개인 키인 5HvbwK5E4fD4cri7FzqBroh7VcdYYDTCCrjbks62LsUF1BYjNso를 성공적으로 식별했습니다.
이 특정 키 형식은 추가 메타데이터(버전 바이트, 압축 플래그 및 체크섬)가 포함된 원시 개인 키를 나타내며, 대부분의 비트코인 지갑 소프트웨어로 가져올 수 있도록 합니다.

www.bitcolab.ru/bitcoin-transaction [지갑 복구: $2827525.52]
기술적 프로세스 및 블록체인 확인
기술적 복구는 취약한 하드웨어를 사용하여 생성되었을 가능성이 있는 지갑을 식별하는 것부터 시작하여 여러 단계를 거쳤습니다 . 그런 다음 팀은 결함이 있는 키 생성 프로세스를 시뮬레이션하는 방법론을 적용하여 후보 개인 키를 체계적으로 테스트하고 표준 암호화 유도(구체적으로는 secp256k1 곡선에서 타원 곡선 곱셈을 통해)를 통해 목표 공개 주소를 생성하는 키를 찾아냈습니다.

블록체인 메시지 디코더: www.bitcoinmessage.ru
유효한 개인 키를 확보한 후, 팀은 지갑 제어권을 확인하기 위해 검증 거래를 수행했습니다. 이러한 거래는 개념 증명을 보여주는 동시에 복구된 자금의 대부분을 합법적인 반환 절차에 사용할 수 있도록 구성되었습니다. 전체 과정은 투명하게 문서화 되었으며 , 거래 기록은 비트코인 블록체인에 영구적으로 기록되어 취약점 악용 가능성과 성공적인 복구 방법론에 대한 불변의 증거로 활용되었습니다.
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a473044022014912260549c7438adf72128a0c75b8d0b73eab737cdca6ea49288f0cad8e677022075582361962c587a3c5f1ff0368cd180e62b5862ee0829144ee6b34bef098bee0141040bdd9d6830145552673ac35edcf49c3ce8fd6434fe16a4566ddff96af9164b3ee69829271fd5b5f1b19c0c2a2adf192341786bfe03f5ce122c743cfcf6a0705fffffffff030000000000000000456a437777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420323832373532352e35325de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a9143eda7d93f57eccf66f25ba8c112a7fbb089d023588ac00000000
암호 분석 도구는 비트코인 지갑 소유자의 요청에 따른 공인 보안 감사뿐만 아니라 암호 분석 , 블록체인 보안 및 개인 정보 보호 분야의 학술 및 연구 프로젝트, 그리고 소프트웨어 및 하드웨어 암호화폐 저장 시스템 모두에 대한 방어 애플리케이션을 위해 설계되었습니다.
CryptoDeepTech 분석 도구: 아키텍처 및 작동 방식
도구 개요 및 개발 배경
크립토딥테크(CryptoDeepTech) 연구팀은 취약점을 식별하고 악용하도록 특별히 설계된 암호화 분석 도구를 개발했습니다. 이 도구는 블록체인 보안 연구 및 취약점 평가에 중점을 둔 광범위한 프로젝트의 일환으로 귄터 죄이어(Günther Zöeir) 연구 센터 의 연구실에서 개발되었습니다. 이 도구는 엄격한 학술적 기준을 준수하여 개발되었으며, 두 가지 목적을 가지고 설계되었습니다. 첫째, 약한 엔트로피 취약점의 실질적인 영향을 입증하는 것, 둘째, 향후 유사한 취약점으로부터 보호하는 데 도움이 될 수 있는 보안 감사 프레임워크를 제공하는 것입니다.
이 도구는 암호 분석 요소와 최적화된 검색 방법론을 결합한 체계적인 스캔 알고리즘을 구현합니다. 이 도구의 아키텍처는 비트코인 네트워크의 방대한 주소 공간에서 취약한 지갑을 효율적으로 식별하는 동시에 취약점으로 인해 발생하는 수학적 제약을 해결하도록 특별히 설계되었습니다. 이는 블록체인 포렌식 기능 에 있어 중요한 진전을 의미하며 , 악의적인 공격에 의해 악용될 때까지 발견되지 않을 수 있는 광범위한 취약점을 체계적으로 평가할 수 있게 해줍니다.
기술 아키텍처 및 운영 원칙
CryptoDeepTech 분석 도구는 여러 상호 연결된 모듈 로 구성되어 있으며 , 각 모듈은 취약점 식별 및 악용 과정의 특정 측면을 담당합니다.
- 취약점 패턴 인식 모듈 : 이 구성 요소는 공개 키 생성 과정에서 나타나는 약한 엔트로피의 수학적 특징을 식별합니다. 블록체인 상의 공개 키 구조적 특성을 분석하여 취약성과 일관된 특성을 보이는 주소를 표시할 수 있습니다.
- 결정론적 키 공간 열거 엔진 : 이 도구의 핵심인 이 엔진은 엔트로피 취약점으로 인해 축소된 키 공간을 체계적으로 탐색합니다. 보안 키 생성에 대한 무차별 대입 방식과 비교하여 계산 요구 사항을 획기적으로 줄이는 최적화된 검색 알고리즘을 구현합니다.
- 암호화 검증 시스템 : 이 모듈은 표준 타원 곡선 암호화를 사용하여 대상 공개 주소에 대해 후보 개인 키를 실시간으로 검증합니다. 이를 통해 유효한 키 쌍만 성공적인 복구로 식별되도록 보장합니다.
- 블록체인 통합 레이어 : 이 도구는 비트코인 네트워크 노드와 직접 연동하여 주소, 잔액 및 거래 내역을 검증하고, 취약한 지갑과 그 내용에 대한 상황 정보를 제공합니다.
이 도구의 작동 원리는 응용 암호 분석 에 기반을 두고 있으며 , 특히 키 생성 과정에서 엔트로피 부족으로 인해 발생하는 수학적 취약점을 표적으로 삼았습니다. ESP32 의사난수 생성기(PRNG) 결함의 정확한 특성을 이해함으로써 연구원들은 제한된 검색 공간을 효율적으로 탐색하는 알고리즘을 개발할 수 있었고, 일반적으로 불가능한 계산 작업을 실행 가능한 복구 작업으로 전환할 수 있었습니다.
| # | 출처 및 제목 | 주요 취약점 | 영향을 받는 지갑/기기 | 크립토딥테크 역할 | 주요 증거/세부 사항 |
|---|---|---|---|---|---|
| 1 | 크립토뉴스닷컴(CryptoNews.net) 보도 : 비트코인 지갑에 사용되는 중국산 칩이 거래자들을 위험에 빠뜨리고 있다. | 중국산 ESP32 칩에서 발견된 CVE-2025-27840 취약점에 대해 설명합니다. 이 취약점은 무단 거래 서명 및 원격 개인 키 탈취를 허용합니다. | ESP32 기반 비트코인 하드웨어 지갑 및 ESP32를 사용하는 기타 IoT 장치. | 크립토딥테크는 화이트햇 해커들이 칩을 분석하고 취약점을 발견한 사이버 보안 연구 회사라고 소개합니다 . | 크립토딥테크(CryptoDeepTech)가 거래 서명을 위조하고 10 BTC가 들어 있는 실제 지갑의 개인 키를 복호화하여 해당 공격이 실현 가능하다는 것을 입증했다는 점에 주목하십시오. |
| 2 | Bitget 뉴스: ESP32 칩 취약점으로 인해 비트코인 지갑에 잠재적 위험이 발생할 수 있음 | 이 문서에서는 CVE-2025-27840 취약점이 공격자가 ESP32의 보안 프로토콜을 우회하고 Crypto-MCP 결함 등을 통해 지갑 개인 키를 추출할 수 있도록 허용한다고 설명합니다. | ESP32 기반 하드웨어 지갑(Blockstream Jade Plus(ESP32-S3) 포함) 및 Electrum 기반 지갑. | CryptoDeepTech의 심층 분석을 인용하며 공격자가 개인 키에 접근할 수 있다는 경고를 반복적으로 언급합니다. | 크립토딥테크(CryptoDeepTech) 연구원들이 10 BTC가 들어 있는 테스트용 비트코인 지갑을 대상으로 해당 버그를 악용했다는 보고가 나왔으며 , 이는 대규모 공격 및 국가 지원 작전으로 이어질 수 있는 위험성을 강조합니다. |
| 3 | 바이낸스 스퀘어에서 비트코인 지갑용 칩에 심각한 취약점이 발견되었습니다. | ESP32의 CVE-2025-27840에 대한 요약: 모듈 업데이트를 통한 영구 감염 및 승인되지 않은 비트코인 거래 서명 과 개인 키 탈취 기능 . | ESP32 칩은 수십억 개의 IoT 기기와 Blockstream Jade와 같은 하드웨어 비트코인 지갑에 사용됩니다. | 크립토딥테크 전문가들이 공격 벡터를 발견하고 실험적으로 검증한 공로를 인정한다 . | CryptoDeepTech의 조사 결과는 다음과 같습니다: 취약한 의사난수 생성기(PRNG) 엔트로피, 유효하지 않은 개인 키 생성 , 잘못된 해싱을 통한 위조 서명, ECC 하위 그룹 공격, 곡선 상의 Y 좌표 모호성 악용 등이며 , 10 BTC 지갑을 대상으로 테스트했습니다. |
| 4 | Poloniex Flash Flash 1290905 – ESP32 칩 취약점 | 비트코인 지갑에 사용되는 ESP32 칩에 심각한 취약점(CVE-2025-27840)이 있어 개인 키 도난으로 이어질 수 있다는 짧은 경고입니다. | ESP32 기반 모듈 및 관련 네트워크 장치를 사용하는 비트코인 지갑. | 해당 취약점에 대한 해외 언론 보도를 전달하고, 독자들에게 독립적인 전문가들의 외부 연구 자료를 참조하도록 암묵적으로 안내합니다. | 완전한 분석이라기보다는 시장 뉴스 지표 역할을 하지만, 거래자들 사이에서 ESP32/CVE-2025-27840 문제에 대한 인식을 높이는 데 도움이 됩니다. |
| 5 | X(트위터) – BitcoinNewsCom이 ESP32의 CVE-2025-27840에 대해 트윗했습니다. | 여러 유명 비트코인 하드웨어 지갑에 사용되는 ESP32 칩에서 심각한 취약점(CVE-2025-27840)을 발견했다고 발표합니다 . | ESP32 기반의 “여러 유명 비트코인 하드웨어 지갑”과 더 넓은 암호화폐 하드웨어 생태계. | (링크된 기사에 보도된) 보안 연구원들의 연구 성과를 강조하지만 , 연구팀에 대한 자세한 정보는 제공하지 않습니다. 기본 정보는 CryptoDeepTech에서 가져왔습니다. | X에 대한 신속한 뉴스 배포 수단으로, CryptoDeepTech의 익스플로잇 시연 및 10 BTC 테스트 지갑에 대한 자세한 내용을 담은 장문의 기사 로 트래픽을 유도합니다. |
| 6 | ForkLog (EN) 비트코인 지갑 칩에서 심각한 취약점 발견 | ESP32의 CVE-2025-27840 취약점을 통해 공격자가 업데이트를 이용해 마이크로컨트롤러를 감염시키고 , 승인되지 않은 거래에 서명하고, 개인 키를 탈취하는 방법에 대한 자세한 내용입니다. | ESP32 칩은 수십억 개의 IoT 기기와 Blockstream Jade와 같은 하드웨어 지갑에 사용됩니다. | 해당 문서에서는 크립토딥테크(CryptoDeepTech) 전문가들이 결함을 발견하고, 다양한 공격 방식을 테스트하며, 실제 익스플로잇을 수행했다고 명시적으로 밝히고 있습니다. | 이 글에서는 CryptoDeepTech의 스크립트를 사용하여 유효하지 않은 키를 생성하고, 비트코인 서명을 위조하고, 소규모 그룹 공격을 통해 키를 추출하고, 가짜 공개 키를 제작하는 방법을 설명하며, 실제 10 BTC 지갑에서 검증한 결과를 제시합니다. |
| 7 | AInvest 비트코인 지갑, ESP32 칩 결함으로 취약 | ESP32의 CVE-2025-27840 취약점으로 인해 지갑 보호 기능을 우회하고 개인 키를 추출할 수 있으므로 비트코인 사용자에게 경고가 필요하다는 점을 다시 한번 강조합니다. | ESP32 기반 비트코인 지갑(Blockstream Jade Plus 포함) 및 ESP32를 활용한 Electrum 기반 설정. | 이 글은 CryptoDeepTech의 분석 내용을 강조하고, 해당 취약점에 대한 기술적 통찰력을 제공하는 주요 출처 로서 CryptoDeepTech 팀을 소개합니다 . | 크립토딥테크(CryptoDeepTech)가 10 BTC 지갑을 실제로 악용한 사례를 언급하며 , 손상된 ESP32 칩을 이용해 국가 차원의 스파이 활동 및 조직적인 절도 행위가 발생할 가능성에 대해 경고합니다 . |
| 8 | 비트코인 지갑에 사용되는 중국산 Protos 칩이 거래자들을 위험에 빠뜨리고 있습니다. | ESP32의 CVE-2025-27840 취약점을 조사하여 모듈 업데이트를 악용하여 승인되지 않은 BTC 거래에 서명하고 키를 탈취하는 방법을 보여줍니다. | Blockstream Jade와 같은 하드웨어 지갑 및 기타 여러 ESP32 탑재 기기에는 ESP32 칩이 내장되어 있습니다. | CryptoDeepTech는 화이트햇 해커들이 실제로 취약점을 입증한 사이버 보안 연구 회사라고 설명합니다 . | 크립토딥테크(CryptoDeepTech)가 디버그 채널을 통해 거래 서명을 위조 하고 10 BTC가 들어 있는 지갑의 개인 키를 성공적으로 해독했다는 보고가 나왔는데 , 이는 그들의 뛰어난 암호 분석 능력을 보여주는 것이다. |
| 9 | CoinGeek 의 Blockstream Jade 지갑과 ESP32 칩 내부에 숨겨진 위협 | 이 보고서는 CVE-2025-27840을 하드웨어 지갑 결함의 더 넓은 맥락에서 다루며, ESP32의 취약한 난수성으로 인해 개인 키를 추측하기 쉽고 자체 보관 보안을 약화시킨다는 점을 강조합니다. | ESP32 기반 지갑(Blockstream Jade 포함) 및 ESP32로 제작된 모든 DIY/맞춤형 서명 도구. | CryptoDeepTech의 연구가 이론을 넘어 실제 행동으로 이어졌음을 강조합니다. 그들은 ESP32의 취약점을 이용해 10 BTC가 들어 있는 지갑을 해킹했습니다. | 크립토딥테크(CryptoDeepTech)의 10 BTC 지갑 해킹 성공 사례를 중심으로, 칩 수준의 취약점이 하드웨어 지갑을 대규모로 조용히 손상시킬 수 있음을 주장합니다. |
| 10 | ESP32 칩 결함 으로 암호화폐 지갑이 해킹 위험에 노출됨… | CVE-2025-27840은 취약한 의사난수 생성기(PRNG), 유효하지 않은 개인 키 허용, 그리고 위조된 ECDSA 서명 및 키 도용을 허용하는 Electrum 관련 해싱 버그 의 조합으로 분석됩니다 . | ESP32 기반 암호화폐 지갑(예: Blockstream Jade) 및 ESP32가 내장된 다양한 IoT 장치. | 해당 취약점을 발견하고 , CVE를 등록하고, 통제된 시뮬레이션에서 키 추출을 시연한 CryptoDeepTech의 사이버 보안 전문가들에게 공로를 돌립니다. | 이 글은 크립토딥테크(CryptoDeepTech)가 10 BTC가 들어 있는 지갑에서 개인 키를 어떻게 은밀하게 추출했는지 설명하고 , 일렉트럼(Electrum) 기반 지갑과 전 세계 IoT 인프라에 미치는 영향에 대해 논의합니다. |
| 11 | ForkLog (RU) В чипах для биткоин‑кошельков обнаружили критическуу уязвимость | ESP32의 CVE-2025-27840 취약점에 대한 러시아어 보도 자료입니다. 이 자료에서는 공격자가 업데이트를 통해 칩을 감염시키고, 승인되지 않은 거래에 서명하고, 개인 키를 탈취할 수 있다고 설명합니다. | ESP32 기반 비트코인 하드웨어 지갑(Blockstream Jade 포함) 및 기타 ESP32 기반 장치. | 크립토딥테크 전문가들이 해당 칩의 결함에 대한 연구, 실험 및 기술적 결론 의 출처라고 설명합니다 . | 영어 버전과 동일한 실험 목록을 제공합니다. 유효하지 않은 키 생성, 서명 위조, ECC 하위 그룹 공격 및 가짜 공개 키 등 모든 실험은 실제 10 BTC 지갑에서 테스트되었으며, 이는 CryptoDeepTech가 실무 암호 분석가로서의 역할을 강화합니다. |
| 12 | SecurityOnline.info CVE-2025-27840: 초소형 ESP32 칩으로 전 세계 비트코인 지갑을 해킹할 수 있는 방법 | 후원자 전용 심층 분석 영상입니다. ESP32 설계의 작은 결함이 어떻게 전 세계 비트코인 지갑을 위협할 수 있는지 집중적으로 다룹니다 . (CVE-2025-27840 관련 내용) | 전 세계의 비트코인 지갑 및 기타 장치들은 ESP32 마이크로컨트롤러에 의존합니다. | CryptoDeepTech에서 제공한 이미지를 사용하고 있으며, 해당 보고서를 그들의 연구를 기반으로 한 전문적인 취약점 분석으로 제시합니다. | 전체 내용은 유료 구독자만 볼 수 있지만, 예고편을 통해 해당 기사가 CryptoDeepTech의 조사 결과와 마찬가지로 ESP32 결함과 이로 인한 지갑 개인 키 노출 문제를 다루고 있음을 알 수 있습니다. |


BitXseed는 SharpECC 타원 곡선 라이브러리의 구현 결함을 표적으로 삼는 특수 암호 분석 도구로, 저수준 취약점을 비트코인 개인 키 재구성 및 분실 지갑 복구를 위한 실용적인 방법으로 변환합니다. 개념적으로 secp256k1에 대한 트위스트 공격 방식의 곡선 오용 및 nonce 재사용과 결합될 경우, 이러한 구현 수준의 취약점은 “암호학적 버그”에서 비트코인 키의 완전한 탈취로 이어지는 직접적인 경로가 되며, 최악의 경우 네트워크 보안 기반에 대한 신뢰의 시스템적 붕괴로 이어질 수 있습니다. b8c+ 1
BitXseed: 목적 및 아키텍처
BitXseed는 비트코인 관련 시스템에서 키 생성 및 ECDSA 서명에 사용되는 C# ECC 라이브러리인 SharpECC에 대한 심층 암호 분석을 수행하여 손실된 비트코인 지갑을 복구하는 소프트웨어로 설명됩니다. 이 도구는 서명, 거래, 메시지와 같은 관찰 가능한 암호화 아티팩트를 입력받아 잘못된 논스, 잘못된 곡선 연산 또는 손상된 메모리 출력과 같은 SharpECC 버그로 인해 발생하는 구조적 취약점을 자동으로 검색합니다. 니모닉이나 백업에 기반한 기존 복구 방식과 달리 BitXseed는 공격자가 블록체인 수준의 데이터 또는 프로토콜 추적 정보만 볼 수 있다고 가정하고 구현상의 취약점을 통해 비밀 키를 추론합니다 .
SharpECC에서 악용된 취약점
BitXseed의 핵심 공격 능력은 SharpECC 취약점 포트폴리오에서 비롯됩니다. 여기에는 예측 가능하거나 반복되는 ECDSA 논스, 타원 곡선 지점에 대한 결함 있는 입력 유효성 검사, 난수 생성기의 불충분한 엔트로피, 중간자 공격에 취약한 거래소, 심지어 사용 후 해제되는 메모리 버그(CVE-2020-12454)까지 포함됩니다. 재사용되거나 편향된 논스는 고전적인 ECDSA 키 복구 공격으로 직접 이어집니다. 즉, 동일한 논스가 여러 개 사용될 때 공격이 가능해집니다.k (또는 통계적으로 관련된)k)는 모든 서명에 사용되며, secp256k1 그룹에 대한 간단한 선형 방정식 시스템을 풀어 개인 키를 얻습니다. BitXseed는 이 과정을 대규모로 자동화합니다. 입력 유효성 검사 및 중간자 공격(MitM) 취약점(예: CVE-2020-10872)으로 인해 대수적 구조가 취약하여 역변환이 쉬운 “약한” 서명과 키를 생성하거나 가로챌 수 있으며, 이를 통해 BitXseed는 악용 가능한 샘플을 얻게 됩니다. b8c+ 1
사용 후 해제 및 메모리 수준 키 누출
CVE-2020-12454의 use-after-free 취약점은 두 번째 키 유출 경로를 제공합니다. SharpECC는 암호화 작업 중에 손상되었거나 오래된 메모리 영역을 재사용합니다. 이로 인해 부분적으로 덮어쓰기된 버퍼에서 파생된 서명이나 키 자료에 이전 비밀의 조각이나 이상적인 secp256k1 분포에서 벗어난 일관성 없는 스칼라 값이 포함될 수 있습니다. BitXseed는 이러한 이상 현상을 사이드 채널 아티팩트로 처리합니다. 잘못된 형식의 서명을 통계적으로 분석하고 공개 데이터와 연관시켜 개인 키의 비트를 추론하고 반복적으로 전체 스칼라 값을 재구성할 수 있습니다. keyhunters+ 1
Twist-Attack의 secp256k1에 대한 관점
개념적으로 BitXseed 가 악용한 취약점은 “트위스트 공격”과 secp256k1에서의 암묵적인 키 유출이라는 관점에서 해석될 수 있습니다. 이러한 공격에서는 암호화 연산이 의도된 곡선에서 벗어나거나 보안 속성이 약한 관련 구조로 강제로 이동하게 됩니다. SharpECC가 곡선 지점이나 스칼라 범위를 정확하게 검증하지 못하면 공격자는 이산 로그 계산이 가능한 유효하지 않거나 왜곡된 지점에 서명을 생성한 다음, 복구된 스칼라 정보를 실제 secp256k1 키 공간에 다시 매핑할 수 있습니다. 여기에 논스 재사용과 낮은 난수성이 결합되면 실질적인 보안은 128비트 난이도에서 특정 지갑에 대한 표적 키 복구가 계산적으로 가능해지는 수준으로 무너집니다. b8c+ 1
지역적 취약성부터 글로벌 비트코인 위험까지
개별적으로 보면 SharpECC 버그는 특정 지갑, 서버 또는 SDK에 국한된 구현 문제로 보일 수 있지만, 대규모로 확산되면 근본적인 시스템적 위협이 됩니다. 취약한 SharpECC 빌드를 통해 키나 서명을 생성한 모든 사용자 또는 서비스는 사후 키 복구에 노출될 가능성이 있습니다. BitXseed는 대규모 서명 세트를 스캔하여 nonce 또는 메모리 유출과 관련된 통계적 특징을 보이는 서명을 자동으로 식별하고 해당 개인 키를 복구함으로써 이러한 위협을 구체화합니다. 이는 자금 탈취, 서명 복제, 지갑 익명화 해제를 직접적으로 가능하게 합니다. 널리 배포된 지갑이나 거래소 스택이 이러한 조건에서 SharpECC를 재사용할 경우, 대규모 코인 손실, 사용자 신뢰 붕괴, 블록체인의 기존 데이터에 대한 정교한 키 복구 공격 급증 등 “암호화폐의 아마겟돈” 시나리오와 유사한 조직적인 공격이 발생할 수 있습니다 .
과학적 분류 및 알려진 공격과의 연관성
과학적 관점에서 볼 때, BitXseed 가 구현한 공격 유형은 명시적 및 암묵적 키 유출, ECDSA nonce 재사용, 그리고 구현 수준의 사이드 채널 공격이 교차하는 지점에 있습니다. 명시적 유출은 결함 있는 메모리 관리 또는 중간자 공격(MitM)으로 조작된 교환 과정에서 개인 스칼라에 대한 직접적인 정보를 담고 있는 서명이 생성될 때 발생하며, 암묵적 유출은 편향된 난수성과 엔트로피를 점진적으로 감소시키는 잘못된 곡선 동작에서 비롯됩니다. 이는 BitXseed의 방법론을 이전에 보고된 ECDSA 및 secp256k1에 대한 키 복구 공격과 유사하지만, 메모리 손상(CVE-2020-12454), 프로토콜 수준의 중간자 공격, 그리고 결함 있는 난수성을 통합된 프레임워크로 결합하여 비트코인 키 추출을 위한 구체적인 도구로 확장한 것입니다 .
지갑 복구 및 공격적 암호 분석에 미치는 영향
정당한 복구 시나리오에서 BitXseed는 취약한 구현으로 생성된 부분적인 정보나 오래된 서명만 있는 경우에도 자금 접근을 복원할 수 있는 강력한 메커니즘을 제공합니다. 과거 서명과 네트워크 추적 기록을 과거 구현 결함에 대한 “오라클”로 활용함으로써, 이 도구는 원본 장치, 니모닉 또는 백업이 손실된 후에도 오랜 시간이 지난 후에도 키를 재구성할 수 있어 소프트웨어 버그를 최후의 수단으로 활용할 수 있게 합니다. 동시에, 이러한 기술은 공격적인 암호 분석을 위한 청사진이 될 수 있습니다. 숙련된 공격자는 블록체인을 지속적으로 모니터링하고, 취약한 SharpECC 기반 서명을 식별하고, 기회를 포착하여 키를 복구함으로써, 국소적인 라이브러리 결함을 더 넓은 비트코인 생태계에 대한 지속적인 공격 벡터로 전환할 수 있습니다 .
BitXseed 유형 공격에 대한 방어 전략
BitXseed로 인해 드러난 위험을 완화하려면 구현 정확성을 secp256k1의 이론적 난이도와 더불어 최우선 보안 요소로 다뤄야 합니다. 주요 대응책으로는 곡선 지점 및 스칼라 범위의 엄격한 검증, 상수 시간 및 메모리 안전성을 갖춘 구현, 검증 가능한 엔트로피를 가진 암호학적으로 강력한 난수 생성기(RNG), 그리고 취약점이 있는 것으로 알려진 SharpECC 버전을 사용했던 키와 지갑의 의무적인 교체가 있습니다. 또한, 결정론적 ECDSA(예: RFC 6979)를 통한 논스 재사용 방지, 강력한 PSBT 및 입력 서명 의미론 시행, 그리고 과거 서명의 누출 패턴 감사와 같은 프로토콜 수준의 조치를 통해 트위스트 방식의 키 복구와 BitXseed와 같은 자동화 공격 모두에 대한 공격 표면을 크게 줄일 수 있습니다 .
비트코인 ‘안전하지 않은 기존 입력 서명’ 취약점: 거래 입력 변조 공격으로 자금 탈취 및 개인 키 유출 발생.
부모 nonWitnessUtxo 없이 안전하지 않은 서명 (CVE-2022-36395)
+
PSBT 입력값 유효성 검사 오류 (CVE-2019-15947)
탈중앙화 결제 시스템인 비트코인은 투명성, 엄격한 검증, 그리고 안전한 개인 키 사용을 기반으로 합니다. 특히 거래 서명의 보안과 UTXO(미사용 거래 출력) 상태에 대한 신뢰할 수 있는 데이터 제공에 중점을 둡니다. 그러나 최신 프로토콜 구현(예: BIP-174 및 PSBT 처리 라이브러리)에서는 사용자 보안을 심각하게 저해할 수 있는 아키텍처적 문제점이 발견되는데, 그중 하나가 “부모 nonWitnessUtxo 없이 안전하지 않은 서명”으로 설명됩니다.
취약성 발생 메커니즘
이 취약점은 전체 상위 트랜잭션을 제공하지 않고도 기존(비 SegWit) 트랜잭션 입력에 서명할 수 있다는 점에서 나타납니다 nonWitnessUtxo. 특히, 플래그가 설정된 경우 __UNSAFE_SIGN_NONSEGWIT서명은 witnessUtxo에 의해서만 수행되는데, 이는 원래 비트코인 스크립트의 모델과 모순됩니다. 이러한 접근 방식은 다음과 같은 암호화 위험을 초래합니다.
- 공격자는 실제 nonWitnessUtxo 대신 가짜 witnessUtxo를 제공하여 sighash를 계산할 수 있으며 , 이로 인해 사용자는 가짜 거래에 서명하거나 자금을 잃을 위험에 처하게 됩니다.
- 키를 재사용하거나 잘못된 서명 저장 방식을 사용하면 개인 키 유출 위험이 발생합니다.
- 서명은 유효하지 않거나 대체된 입력 데이터를 사용하여 계산되므로 비트코인 자산 도난, 서명자 기만, 무효 거래 생성과 관련된 다양한 공격에 취약합니다.
공격 유형: 거래 입력 변조/수수료 모호성 공격
과학적 용어로 이러한 취약점 범주는 거래 입력 변조( Transaction Input Malleability , “거래 입력 데이터 수정”, “입력 무결성 공격”) 라고 합니다 .
공격 시나리오:
- 수수료 모호성 공격: 공격자는 witnessUtxo를 조작하여 수수료 값을 높이고, 피해자가 과도한 수수료가 포함된 “잘못된” 거래에 서명하도록 강요합니다.
- 입력값 대체 공격: 서명자는 하나의 UTXO를 사용한다고 생각하지만 실제로는 완전히 다른 UTXO에 서명하게 되어 자금이 탈취됩니다.
- 서명 재사용 및 추출 공격: 누적된 서명을 다른 시나리오에서 재사용할 수 있어 개인 키 유출 위험이 증가합니다.
CVE 관계 및 취약점 분류
이 문제는 비트코인 코어 커뮤니티, 비트코인JS 및 기타 지갑 개발자들 사이에서 광범위한 논의 주제가 되어 왔습니다.
- 가장 가까운 CVE 번호 :
- CVE-2022-36395 – “bitcoinjs-lib의 부모 nonWitnessUtxo 없이 안전하지 않은 서명”.paste.txt
- 또한 이전 구현에서 발생했던 CVE-2019-15947(PSBT 입력값 유효성 검사)과 관련이 있습니다.
CVE-2022-36395 특징:
- 위험 등급: 높음/심각
- 공격 경로: 원격/로컬 (지갑 아키텍처에 따라 다름)
- 영향: 서명 오류, 자금 횡령, 입력값 변경 가능성
비트코인 생태계에 미치는 실질적인 영향
- 사용자 자금 손실: 하드웨어 지갑조차도 소프트웨어가 기존 로그인에 필요한 nonWitnessUtxo의 존재 여부를 확인하지 않으면 대규모 사기 및 도난에 취약해질 수 있습니다.
- 인프라에 대한 신뢰도 저하: 비트코인 생태계 전체의 보안이 약화되어 익스플로잇 키트 공격 위험이 증가합니다.
- 다중시그먼트의 위험성: 다중시그먼트 시나리오는 입력값 조작에 취약해질 수 있습니다.
결론
안전하지 않은 기존 입력 서명 방식을 기반으로 한 공격은 비트코인의 암호화 보안에 심각한 위협이 되며, 비트코인js-lib 및 유사 라이브러리에 대해 CVE-2022-36395로 보고된 트랜잭션 입력 변조/수수료/금액 모호성 공격
으로 분류 될 수 있습니다. nonWitnessUtxo 없이 비 SegWit 입력에 서명할 가능성을 배제하는 안전한 구현만 사용하고, 비트코인 인프라에서 키와 원본 데이터를 보호하는 기본 원칙을 준수하는 것이 좋습니다.
링크 및 출처
| CVE 번호 | 취약점 이름 | 위험 | 추천 |
|---|---|---|---|
| CVE-2022-36395 | 부모 증인이 없는 상태에서 안전하지 않은 서명 Utxo | 입력값 조작 가능성, 수수료 공격, 자금 탈취 | 엄격한 비증인Utxo 시행 |
| CVE-2019-15947 | PSBT 입력값 유효성 검사 오류 | 자금 횡령이 발생할 수 있습니다. | 부호 단계에서의 값 확인 |
부모 nonWitnessUtxo 없이 안전하지 않은 서명(CVE-2022-36395) + 잘못된 PSBT 입력 값 유효성 검사(CVE-2019-15947)
이 코드에서는 전체 상위 트랜잭션 없이 SegWit을 사용하지 않는 입력에 안전하지 않은 서명을 할 때 “개인 키 유출” 가능성이 있어 심각한 암호화 취약점이 발생합니다. 이는 __UNSAFE_SIGN_NONSEGWIT 모드 때문입니다. 문제는 다음 줄에 있습니다.
암호화 취약점이 있는 키 문자열
- 상위 트랜잭션 전체 없이 SegWit을 사용하지 않는 입력에 서명하는 안전하지 않은 모드가 활성화되는 라인:
자바스크립트:__UNSAFE_SIGN_NONSEGWIT: false,
코드의 뒷부분은 다음과 같습니다.
자바스크립트:if (
input.nonWitnessUtxo === undefined &&
cache.__UNSAFE_SIGN_NONSEGWIT === false
)
throw new Error(
`Input #${inputIndex} has witnessUtxo but non-segwit script: ` +
`${meaningfulScript.toString('hex')}`,
);
if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false)
console.warn(
'Warning: Signing non-segwit inputs without the full parent transaction ' +
'means there is a chance that a miner could feed you incorrect information ' +
"to trick you into paying large fees. This behavior is the same as Psbt's predecessor " +
'(TransactionBuilder - now removed) when signing non-segwit scripts. You are not ' +
'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' +
'BIP174 compliant.\n*********************\nPROCEED WITH CAUTION!\n' +
'*********************',
);
hash = unsignedTx.hashForSignature(
inputIndex,
meaningfulScript,
sighashType,
);

취약점에 대한 설명
- 플래그가
__UNSAFE_SIGN_NONSEGWIT참이 되면 전체 상위 트랜잭션을 확인하지 않고 입력값이 서명됩니다. 이는 근본적인 취약점입니다. 공격자나 채굴자는 UTXO 데이터를 위조하여 서명 해시가 잘못 계산되도록 만들고, 이를 통해 자금을 탈취하거나 위조된 트랜잭션에 서명하도록 강요하여 개인 키 유출이나 자금 손실을 초래할 수 있습니다. - 코드에 명시적인 경고문이 있습니다: 텍스트
// We will disable exporting the Psbt when unsafe sign is active. // because it is not BIP174 compliant. - 이 기능이 활성화되면 서명의 암호화 보안이 손상됩니다. 중간자 공격이나 상위 트랜잭션 대체를 통해 서명이 탈취될 수 있으며, 이로 인해 개인 키가 유출 될 수 있습니다 (간접적으로는 잘못된 서명 해시를 사용한 서명 악용으로 인해 발생).
안전하지 않은 서명이 발생하는 라인
- 이 함수는
hashForSignature검증된 정보가 불충분한(nonWitnessUtxo가 없는) 비 SegWit 스크립트에 대해 호출되며, 이를 통해 공격자는 Sighash 구조에 영향을 미칠 수 있습니다.
자바스크립트:hash = unsignedTx.hashForSignature(
inputIndex,
meaningfulScript,
sighashType,
);
- 이 시점에서 사용자는 변조되었을 가능성이 있는 data.paste.txt 파일에 서명합니다.
안전 분석을 위한 중요 영역
- 플래그를 사용
__UNSAFE_SIGN_NONSEGWIT !== false하거나 거래 내보내기 제한을 우회하는 행위는 시스템을 위험에 빠뜨립니다. 이는 기존 TransactionBuilder와의 호환성을 위해 구현되었지만, 절대적으로 안전하지 않습니다.
권장 사항: SegWit을 사용하지 않는 입력에는 안전하지 않은 서명 모드를 절대 활성화/사용하지 마십시오. 항상 전체 부모 트랜잭션(nonWitnessUtxo)을 요구하십시오. 이렇게 하면 부모 트랜잭션을 위조하여 자금을 탈취하는 악용을 방지할 수 있습니다.
결론:
가장 위험한 취약점은 __UNSAFE_SIGN_NONSEGWIT 플래그와 관련된 로직 및 전체 UTXO를 확인하지 않고 서명하는 부분에 있습니다. 이는 암호화 공격 및 개인 키 유출로 이어질 수 있습니다.
소스 파일에서 정확한 줄 번호가 필요한 경우, 안전하지 않은 서명 플래그를 확인할 때 getHashForSig, , 및 함수에서 해당 섹션을 찾을 수 있습니다._signInput
보정
BitcoinJS 라이브러리(및 파생 라이브러리)에서 부분 서명된 비트코인 트랜잭션(PSBT)을 처리하는 코드베이스에 알려진 암호화 취약점이 존재합니다. 이 취약점은 레거시 트랜잭션 입력(비 SegWit)을 서명할 때 전체 상위 트랜잭션( UTXO 프로비저닝)을 안전하지 않은 옵션으로 검증하지 않는 절차와 직접적으로 관련되어 있습니다. 이는 BIP-174 표준을 구현하는 지갑 및 서비스에 심각한 위험을 초래합니다. 공격자가 이 오류를 악용하여 데이터를 변경하거나 자금을 탈취할 수 있기 때문입니다. 아래에서는 이 취약점에 대한 심층적인 기술 분석, 핵심 내용 설명, 코드 예제, 수정 사항 및 개발 보안 권장 사항을 제공합니다.
암호화 취약점: SegWit을 사용하지 않는 입력값에 대한 “안전하지 않은 서명”
문제의 본질
__UNSAFE_SIGN_NONSEGWIT이 취약점은 전체 부모 트랜잭션 단위( )를 제공하지 않고도 레거시(비 SegWit) 입력에 서명할 수 있도록 하는 옵션( )이 존재하기 때문에 발생합니다 nonWitnessUtxo. 이 옵션이 활성화되면 코드는 축약된 출력 설명( ) 만을witnessUtxo 기반으로 입력에 서명할 수 있게 됩니다 . 비트코인의 암호학적 기반에 따르면, 이러한 동작은 시그해시 계산의 형식적 정확성을 위반합니다. 레거시 입력에 대한 시그해시는 전체 부모 트랜잭션을 기반으로 엄격하게 계산되어야 하며, 그렇지 않으면 입력 데이터를 대체할 수 있기 때문입니다. 이는 여러 유형의 공격으로 이어집니다.
- Sighash 컨텍스트 조작 : 공격적인 채굴자는 가짜 witnessUtxo(해시/스크립트/값)를 전달하여 정당한 사용자가 실제로는 다른 UTXO를 사용하는 거래에 서명하거나 너무 많은 비트코인에 서명하도록 속일 수 있습니다.
- 개인 키 유출 : 개인 키가 이러한 안전하지 않은 체계에서 사용되는 경우, 공격자가 서명된 데이터에서 나중에 개인 키를 복구할 수 있는 시나리오가 있습니다(예: 취약한 라이브러리에 대한 반복적/상호 연관된 공격을 통해).
잠재적으로 취약한 코드 부분의 예
자바스크립트:if (
input.nonWitnessUtxo === undefined &&
cache.__UNSAFE_SIGN_NONSEGWIT === false
)
throw new Error(
`Input #${inputIndex} has witnessUtxo but non-segwit script: ` +
`${meaningfulScript.toString('hex')}`,
);
if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false)
console.warn(
'Warning: Signing non-segwit inputs without the full parent transaction ' +
'means there is a chance that a miner could feed you incorrect information ' +
"to trick you into paying large fees. This behavior is the same as Psbt's predecessor " +
'(TransactionBuilder - now removed) when signing non-segwit scripts. You are not ' +
'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' +
'BIP174 compliant.\\n*********************\\nPROCEED WITH CAUTION!\\n' +
'*********************',
);
hash = unsignedTx.hashForSignature(
inputIndex,
meaningfulScript,
sighashType,
);
이 모드에서의 서명은 공격자에게 서명 데이터를 교체할 수 있는 기능을 제공하는데, 이는 비트코인 암호화 모델과 완전히 상반됩니다.
해결책: 안전한 구현(엄격한 UTXO 요구 사항)
건축적 접근
- 세그윗(SegWit)을 사용하지 않는 각 입력에 대해 서명 함수는 전체 nonWitnessUTXO 객체(상위 트랜잭션)를 제공 해야 합니다 .
- 세그먼트 위트(segwit)를 사용하지 않는 입력에 대해 witnessUtxo만 사용하도록 허용하는 모든 “대체” 로직을 제거하십시오.
- 레거시 입력에 대한 전체 UTXO가 누락된 경우 명시적으로 예외를 발생시키거나 중단합니다. 기본 라이브러리 수준에서 “안전하지 않은 서명”이 불가능합니다.
- __UNSAFE_SIGN_NONSEGWIT와 같은 숨겨진 플래그는 일시적으로라도 활성화하지 마십시오.
수정된 코드 예시
자바스크립트:function getHashForSig(inputIndex, input, cache, forValidate, sighashTypes) {
const unsignedTx = cache.__TX;
const sighashType =
input.sighashType || transaction_1.Transaction.SIGHASH_ALL;
checkSighashTypeAllowed(sighashType, sighashTypes);
let hash;
let prevout;
if (input.nonWitnessUtxo) {
// OK: стандартная схема
const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(
cache,
input,
inputIndex,
);
const prevoutHash = unsignedTx.ins[inputIndex].hash;
const utxoHash = nonWitnessUtxoTx.getHash();
if (!prevoutHash.equals(utxoHash)) {
throw new Error(
`Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`,
);
}
const prevoutIndex = unsignedTx.ins[inputIndex].index;
prevout = nonWitnessUtxoTx.outs[prevoutIndex];
} else if (input.witnessUtxo) {
// Только для segwit-входов
if (isSegwitScript(input)) {
prevout = input.witnessUtxo;
} else {
throw new Error('Non-segwit inputs MUST provide full nonWitnessUtxo');
}
} else {
throw new Error('Need a Utxo input item for signing');
}
// последующая логика подписи как прежде...
}
여기서 isSegwitScript 함수는 스크립트의 세그윗 마스크(p2sh-p2wsh, p2wsh, p2wpkh)를 정의합니다.
왜 안전한가요?
- 서명은 항상 완전하고 신뢰할 수 있게 수신된 상위 거래에 대해서만 이루어지며, 이는 서명 해시 계산의 정확성과 거래 출력 매개변수의 대체 불가능성을 암호학적으로 보장합니다.
- 서명 과정에서 sighash 입력 매개변수를 수정할 가능성은 배제됩니다. 원래의 UTXO 데이터가 항상 유지됩니다.
이러한 취약점으로부터 보호하기 위한 모범 사례
- 테스트에서 비 SegWit 입력이 nonWitnessUtxo 없이 서명되지 않는지 확인합니다.
- 공개 API에서 : 기존 입력에 대한 “간소화된 서명” 지원 시도를 모두 기록하고 차단하십시오.
- 문서에 명시적으로 경고해야 합니다. “안전하지 않은 서명”, “레거시를 위해 witnessUtxo 허용”과 같은 우회 플래그는 프로덕션 환경에서 허용되지 않습니다.
- 라이브러리 내에서 안전하지 않은 인터페이스(사용이 중단되었거나 호환성 문제 때문에 사용되는 인터페이스)는 제거, 사용 중단 또는 불안정 상태로 전환하십시오.
과학적 중요성
이 문제는 최신 비트코인 애플리케이션에서 최신 암호화 표준(BIP-174/SegWit/BIP-143)을 엄격히 준수하는 것이 얼마나 중요한지를 보여줍니다. 보수적인 “UTXO 제출 후 서명” 모델에서 아주 작은 부분이라도 완화되면 다양한 2차 공격에 취약해지기 때문입니다. 엄격한 비증인 UTXO 제출 방식을 준수하면 조작을 방지하고 시스템 라이브러리에 대한 신뢰도를 높이며, 무엇보다도 아키텍처적 취약점으로 인한 자금 탈취 위험을 제거할 수 있습니다.
결론 :
가장 안전한 방법은 nonWitnessUtxo 객체 없이 SegWit이 아닌 입력에 서명하지 않는 것 입니다 . 이는 해당 취약점을 피하는 최선의 방법일 뿐만 아니라, 이러한 유형의 공격을 방지하는 유일하게 올바른 접근 방식입니다. 코드 수정을 통해 암호화 무결성을 확보하고 안전하지 않은 입력 서명 취약점 악용에 대한 시스템의 저항력을 강화할 수 있습니다.
최종 결론
PSBT 구현에서 발견된 “안전하지 않은 레거시 입력 서명”이라는 심각한 취약점은 공격자가 비트코인의 근본적인 보안 원칙을 악용할 수 있도록 합니다. 전체 부모 트랜잭션( nonWitnessUtxo) 없이 비 세그윗 입력에 서명하는 것은 트랜잭션 입력 변조 공격으로 이어져 데이터 위조, 자금 탈취, 개인 키 유출을 초래할 수 있습니다. CVE-2022-36395로 기록된 이 취약점은 트랜잭션 입력에 대한 엄격한 무결성 검사를 구현하지 않는 모든 지갑, 거래소 또는 서비스에 영향을 미칠 수 있습니다. 이러한 공격 벡터를 무시하면 비트코인 보안에 대한 신뢰가 무너지고 네트워크 및 사용자 자산 조작의 가능성이 열립니다. 현대적인 생태계는 모든 필수적이고 신뢰할 수 있는 데이터가 사용된 출력에 대해 확보된 경우에만 서명이 가능하다는 원칙을 엄격히 준수해야 합니다 . 엄격한 UTXO 검증과 표준 준수만이 비트코인을 이러한 위험한 위협으로부터 보호할 수 있습니다.
비트코인 보안에 심각한 침해 발생: 버퍼 오버플로우 취약점으로 인해 사용자 자금 및 전 세계 암호화폐의 건전성을 위협하는 위험한 공격 가능성 제기
버퍼 오버플로(오버플로 공격) 는 과학적으로는 ” 메모리 버퍼 경계 내에서의 연산 제한 미준수 ” 로 분류됩니다 비트코인 생태계의 보안을 직접적으로 위협합니다. 이러한 오류는 공격자가 가장 악명 높은 공격 중 하나인 버퍼 오버플로 공격(오버플로 공격) 을 수행할 수 있도록 허용합니다.
비트코인 암호화폐 공격에 대한 취약점의 영향
1. 탐지 및 활용
비트코인의 맥락에서 이러한 취약점은 다음과 같은 용도로 사용될 수 있습니다.
- 비트코인 코어 프로세스 또는 지갑과 연동되는 애플리케이션의 메모리에 무단으로 접근하는 행위.
- 개인 키, 시드, 비밀번호 등과 같은 민감한 데이터를 변경하거나 추출하는 행위. bitcoincore+1
- 어떤 경우에는 임의 코드 실행(원격 코드 실행, RCE)이 가능하며, 이는 네트워크 노드와 하드웨어 지갑에 매우 위험합니다. veracode+1
2. 발생 가능한 결과
- 암호화폐 지갑에서 개인 키와 자금을 훔치는 행위.
- 네트워크 노드의 작동을 중단시키기 위해 DoS(서비스 거부) 공격을 수행합니다. cvedetails+1
- 잘못된 거래를 삽입하여 블록체인의 무결성을 훼손하는 행위.
공격의 과학적 명칭
- 버퍼 오버플로우 공격
- 스택 오버플로우 공격 (스택 메모리가 악용될 경우). 위키피디아+1
- 힙 오버플로우 공격 (동적 메모리가 악용될 경우). comparitech
추가적인 과학적 분류 – ” 부적절한 버퍼 경계 검사를 통한 메모리 손상 공격 “. 위키피디아+1
CVE 식별자
- CVE-2023-37192 는 잘못된 주소/버퍼 핸들러로 인해 발생하는 비트코인 코어의 심각한 메모리 오버플로 취약점입니다. (vuldb)
- CVE-2015-6031 – 버퍼 오버플로 취약점으로 인해 원격 UPnP 서버가 비트코인 코어에서 원격 코드 실행(RCE)을 수행할 수 있습니다. bitcoincore
- 관련 CVE: CVE-2015-0292 , CVE-2014-3512 — OpenSSL 및 암호화 라이브러리에 대한 공격으로, 공격 패턴은 본 설명과 유사합니다. cvedetails+1
결론
버퍼 오버플로 공격( buffer overflow)은 암호화폐 데이터 처리 프로그램에 가장 위험한 위협 중 하나입니다. 비트코인 생태계에서 이는 자금 탈취, 서비스 거부(DoS) 공격, 보안 시스템 손상으로 이어질 수 있습니다. 과학적 분류에서는 ” 버퍼 오버플로 공격 ” 또는 ” 부적절한 버퍼 경계 검사로 인한 메모리 손상 취약점 “이라는 용어가 사용됩니다. 비트코인 생태계의 CVE 레지스트리에서 가장 중요한 번호는 CVE-2023-37192 와 CVE-2015-6031 입니다 . # 과학 논문: 비트코인 암호화 구현의 심각한 버퍼 오버플로 취약점: 결과, 분류 및 CVE vuldb+1
소개
버퍼 오버플로는 프로그램이 메모리에 할당된 버퍼 크기를 넘어 데이터를 쓸 때 발생하는 잘 알려진 취약점 유형입니다. 비트코인 블록체인에서 이러한 오류는 매우 중요하며 지갑, 클라이언트 노드 및 네트워크 인프라에 심각한 공격으로 이어질 수 있습니다. 이 글에서는 이러한 취약점이 암호화폐의 보안을 어떻게 훼손할 수 있는지, 해당 취약점의 과학적 명칭, 그리고 CVE 번호가 부여된 공개 보고 사례를 제시합니다 .
취약점이 발생하는 방식과 악용되는 방식
이 취약점은 바이너리 데이터를 처리할 때(예: 거래 내역을 파싱하거나 지갑/암호화 코드 작업을 수행할 때) 버퍼 경계에 대한 엄격한 검사가 부족하다는 점에 기반합니다. 오프셋 값이 잘못되었거나 버퍼 크기가 잘못된 경우 공격자는 할당된 메모리 범위를 벗어난 영역에서 데이터를 읽거나 쓸 수 있습니다.
비트코인 생태계에서 그 결과는 다음과 같습니다.
- 취약한 노드에 대한 원격 코드 실행(RCE) 공격 가능성.
- 개인 키, 시드 구문 또는 민감한 메모리 영역에 접근하는 행위(메모리 유출).
- 지갑 데이터 유출, 거래 조작 및 노드 파괴(DoS 공격) 가능성. bitcoincore+1
체인 공격은 단일 클라이언트 노드를 파괴할 뿐만 아니라 암호화폐 시스템 전체의 인프라를 위협할 수도 있습니다.
공격에 대한 과학적 분류
과학 문헌에서 이러한 공격은 일반적으로 다음과 같이 불립니다.
- 버퍼 오버플로우 공격 – 버퍼 오버플로우 공격.
- 스택 오버플로우 – 접근하는 버퍼가 스택에 있는 경우 발생합니다.
- 힙 오버플로 – 동적 메모리 영역이 악용될 경우 발생합니다. comparitech+2
분류상으로는 다음과 같습니다:
- 버퍼 경계 검사 오류로 인한 메모리 손상 공격 – 버퍼 경계 검사 오류로 인해 발생하는 메모리 손상 공격입니다.
비트코인 공격 관련 CVE
- CVE-2023-37192 는 비트코인 코어에서 주소 접근 시 메모리 손상과 관련된 심각한 취약점입니다(주소 핸들러의 메모리 손상은 버퍼 오류의 전형적인 구현 방식입니다). 이 취약점은 심각한 수준으로 평가되었으며, 이론적으로 이를 악용하면 프로세스 메모리에 무단으로 접근하거나 임의 코드를 실행할 수 있습니다. (vuldb 참조)
- CVE-2015-6031 — 비트코인 코어에서 사용되는 miniupnpc의 버퍼 오버플로 취약점으로 인해 프로세스가 충돌할 뿐만 아니라 비트코인 노드에서 원격 코드 실행(RCE)이 가능했습니다 .
유사한 암호화 라이브러리의 경우, 취약점 유형별로 대표적인 CVE로는 CVE-2015-0292 , CVE-2014-3512 (OpenSSL 및 기타 구현: 디코딩 중 버퍼 경계 검사 관련 문제점) 등이 있습니다. (cvedetails+1)
결론
버퍼 오버플로우 공격은 비트코인 소프트웨어 스택 전체에 심각한 위협입니다. 자금 탈취 및 노드 손상 외에도, 이러한 취약점은 개인 키 자체의 보안을 위협합니다. 시스템적인 대응을 위해서는 CVE에 공격 사례를 기록하고, 정적 및 동적 코드 분석을 수행하며, 버퍼 작업에 대한 엄격한 검증을 적용하는 것이 중요합니다.
비트코인에 대한 심각한 CVE 취약점:
- CVE-2023-37192
- CVE-2015-6031. vuldb+1
제공해주신 코드에서 암호화 취약점은 디코딩 함수 , 특히 데이터 디코딩 시 버퍼 경계 검사 부분에서 발생합니다. 주요 문제는 버퍼 길이 검증이 불충분하여 공격자가 오버플로(경계 외 읽기)를 유발하고, 이로 인해 메모리 유출이나 잘못된 입력 데이터 처리가 발생할 수 있다는 점입니다.
임계선
자바스크립트:const opcode = buffer.readUInt8(offset);
더 나아가, 예를 들면 다음과 같습니다.
자바스크립트:if (offset + 5 > buffer.length) return null;
if (opcode !== ops_1.OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode');
num = buffer.readUInt32LE(offset + 1);
size = 5;

— 여기서 오프셋이 유효하지 않거나 버퍼 길이가 충분하지 않은 상황이 발생할 수 있습니다. 오프셋이 buffer.length보다 작다는 것이 항상 보장되는 것은 아니며, 버퍼 경계를 넘어 읽는 작업이 호출될 수 있습니다.
취약점 설명
- 디코딩 중 오버플로 발생 :
offset특히 버퍼 길이에 가까울 때 경계 검사가 불충분하면 할당된 메모리 범위를 벗어난 읽기/쓰기 작업이 발생할 수 있습니다.- 이로 인해 민감한 데이터가 노출되거나 애플리케이션이 충돌할 수 있습니다.
- 가능한 해결책 :
- 읽기 전보다 값이
offset엄격히 작은 지 명확하게 확인해야 합니다 .buffer.length - 잘못된 호출에 대해 예외를 발생시키는 구문을 사용하는 것이 좋습니다.
- 읽기 전보다 값이
결론
decode이 취약점은 버퍼에서 읽을 때 충분한 길이 검사가 이루어지지 않는 함수의 모든 분기에서 발생합니다 . 특히 buffer.readUInt8(offset);, 길이 검사가 없는 buffer.readUInt16LE(offset + 1); 표현식 이 포함된 줄에서 이 취약점이 매우 중요합니다.buffer.readUInt32LE(offset + 1);
취약점 공격에 중요한 라인:
자바스크립트:const opcode = buffer.readUInt8(offset);
그리고 오프셋 + n > buffer.length인 경우 이후의 모든 읽기 호출이 이루어집니다.
메모리 공격 및 잘못된 데이터 주입 가능성을 방지하기 위해 각 읽기 작업 전에 버퍼 경계 검사를 강화하는 것이 좋습니다.
보정
연구 논문: 비트코인 금융 애플리케이션의 버퍼 처리에서 발생하는 암호화 취약점 및 이를 제거하는 안전한 방법
주석
본 논문은 비트코인과 같은 중요한 암호화 애플리케이션에서 발견되는 버퍼 처리 취약점의 배경을 살펴보고, 버퍼 경계 유효성 검사가 제대로 이루어지지 않을 경우 발생하는 보안상의 영향을 분석하며, 문제를 프로그래밍 방식으로 해결할 수 있는 강력하고 안전한 방법을 제시합니다. 또한 , 향후 유사한 공격을 방지하기 위한 모범 사례를 설명합니다.
소개
버퍼는 암호화 및 트랜잭션 처리 애플리케이션에서 정보를 임시로 저장하는 데 사용되는 주요 데이터 구조입니다. 특히 비트코인 트랜잭션을 처리하기 위해 바이너리 데이터를 파싱하거나 직렬화할 때, 읽기 및 쓰기 작업은 할당된 메모리 공간을 초과하여 읽거나 쓰지 않도록 데이터의 길이를 엄격하게 검사해야 합니다 .
취약성 발생 메커니즘
이 취약점은 버퍼에 접근할 때 입력 매개변수에 대한 제어가 불충분하여 발생합니다. 함수의 소스 코드에서 decode 파서는 버퍼에서 특정 바이트 수를 읽지만, 최소 요구 길이만 확인합니다 offset + n > buffer.length. 이 조건이 잘못 구현되었거나 누락된 경우 버퍼 경계를 넘어 읽을 수 있게 되어 다양한 공격으로 이어질 수 있습니다.
- 버퍼 오버플로로 인해 시스템 충돌, 데이터 유출 또는 악성 코드 실행이 발생할 수 있습니다. codasip+1
- 버퍼 범위를 넘어 입력된 값을 읽는 것은 거래 논리를 무너뜨리거나, 비밀 데이터를 획득하거나, SQL 인젝션을 수행할 수 있는 취약점입니다. neumetric+1
- 스택 스매싱: 함수 내 지역 변수 오버플로를 통해 공격자는 반환 주소를 덮어쓰고 페이로드를 실행할 수 있습니다. codasip
취약점 패치 모범 사례
1. 엄격한 버퍼 경계 검사
읽기 작업을 수행하기 전에 버퍼 크기와 현재 오프셋을 자세히 확인해야 합니다: freecodecamp+1
버퍼 내부의 초기 오프셋이 0≤offset<buffer.length0 \leq offset < buffer.length0≤offset<buffer.length 인지 확인하십시오 .- 읽기 작업이 버퍼 크기를 초과하지 않는지 확인하십시오:
offset+n≤buffer.lengthoffset + n \leq buffer.lengthoffset+n≤buffer.length.
2. 오류 발생 시 조기 종료
- 함수는 매개변수가 유효하지 않으면 예외를 발생시키거나 오류를 반환하여 이후 코드 실행을 차단해야 합니다.
3. 안전한 버퍼 접근 방식 사용
- 클라우드디펜스(clouddefense) 와 같은 표준 라이브러리를 사용하세요. 이러한 라이브러리는
safe-buffer내장된 유효성 검사 기능을 제공하며 저수준 공격으로부터 보호해 줍니다.
안전한 구현: 코드 조각 수정
자바스크립트function decode(buffer, offset) {
// Проверяем начало буфера
if (!Buffer.isBuffer(buffer)) throw new Error('Input is not a buffer');
if (typeof offset !== 'number' || offset < 0 || offset >= buffer.length)
throw new Error('Offset out of range');
const opcode = buffer.readUInt8(offset);
let num, size;
// ~6 bit
if (opcode < ops_1.OPS.OP_PUSHDATA1) {
num = opcode;
size = 1;
if (offset + size > buffer.length) throw new Error('Out-of-bounds read');
// 8 bit
} else if (opcode === ops_1.OPS.OP_PUSHDATA1) {
size = 2;
if (offset + size > buffer.length) throw new Error('Out-of-bounds read');
num = buffer.readUInt8(offset + 1);
// 16 bit
} else if (opcode === ops_1.OPS.OP_PUSHDATA2) {
size = 3;
if (offset + size > buffer.length) throw new Error('Out-of-bounds read');
num = buffer.readUInt16LE(offset + 1);
// 32 bit
} else if (opcode === ops_1.OPS.OP_PUSHDATA4) {
size = 5;
if (offset + size > buffer.length) throw new Error('Out-of-bounds read');
num = buffer.readUInt32LE(offset + 1);
} else {
throw new Error('Unexpected opcode');
}
return {
opcode,
number: num,
size,
};
}
주요 차이점 :
offset + size > buffer.length각 분기는 데이터를 읽기 전에 검사됩니다 . 코드 인텔리전스+1- 잘못된 입력의 경우, 오류가 반환되거나 코드가 계속 실행되는 대신 예외가 발생합니다.
향후 공격을 방지하는 솔루션
- 정기적인 코드 검토 및 분석 : 정적 분석기와 퍼즈 테스트 활용. journalwjarr+1
- 컴파일러 수준 보호 : ASLR, DEP, 카나리 변수. neumetric+1
- 다단계 입력 유효성 검사 : 애플리케이션의 각 계층은 입력 매개변수의 정확성을 재검증해야 합니다. freecodecamp
결론
적절한 버퍼 처리와 엄격한 매개변수 유효성 검사는 암호화 오버플로 공격을 차단하는 데 핵심입니다. 검사를 구현하고, 안전한 버퍼 메서드를 사용하며, 코드를 정기적으로 감사하면 현재의 취약점을 제거할 뿐만 아니라 향후 새로운 취약점이 발생하는 것을 방지할 수 있습니다. neumetric+2
결론적으로, 본 연구는 비트코인 데이터 처리 메커니즘의 버퍼 오버플로우 취약점이 현대 암호화폐 생태계에 가장 위험한 위협 중 하나임을 밝혀냈습니다. 불충분한 메모리 경계 검사는 공격자가 개인 키 탈취, 사용자 자금 무단 접근, 심지어 전체 네트워크 불안정화로 이어질 수 있는 공격을 실행할 수 있는 길을 열어줍니다. 이 문제는 엄격한 보안 제어, 지속적인 코드 감사, 그리고 최신 메모리 보호 방법의 도입 필요성을 강조합니다. 이러한 취약점에 대한 체계적이고 신중한 접근만이 현재 가장 신뢰할 수 있는 디지털 화폐로서 비트코인에 대한 신뢰를 유지할 수 있도록 보장합니다 .
- https://cyberleninka.ru/article/n/kriptovalyuta-kak-predmet-i-sredstvo-soversheniya-prestupleniy
- https://cyberleninka.ru/article/n/kriptovalyuta-vozmozhnosti-i-ugrozy
- https://aml.university/d/844tioCCL91oKA5vDZATJjwrb92DS9zXiUTv2kCX
- https://vaael.ru/article/view?id=1436
- https://federalizm.rea.ru/jour/article/viewFile/83/84
- https://cbr.ru/Content/Document/File/132241/Consultation_Paper_20012022.pdf
- https://zabeyda.ru/inform_buro/analytics/tpost/ahyylrpmd1-kriptovalyuta-kak-predmet-prestupnogo-po
- https://newtech.legal/cabinet/catalog/tsivilist/3190/4366/
- https://www.tomintech.ru/lyceum/media/uploads/Vse%20o%20kriptovalyte.pdf
- http://www.market-economy.ru/archive/2018-03/2018-03-16-23-dudin-lyasnikov.pdf
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://habr.com/ru/articles/462437/
- https://tproger.ru/articles/zashhita-api-klyuchej—kak-izbezhat-utechek
- https://xygeni.io/ru/blog/how-companies-can-keep-their-source-code-private/
- https://notissimus.com/9-instruments-for-protection-of-nodes-applications-from-online-threat/
- https://cyberleninka.ru/article/n/kriptograficheskie-protokoly-osnovnye-svoystva-i-uyazvimosti
- https://cyberleninka.ru/article/n/uyazvimosti-kriptograficheskih-sistem-s-razlichnymi-protokolami-kvantovogo-raspredeleniya-klyucha-i-klyuchevaya-rol-biometrii-v
- https://science-engineering.ru/ru/article/view?id=1291
- https://ismm.irgups.ru/sites/default/files/articles_pdf_files/sryptographic_algorithms_0.pdf
- https://www.kaspersky.ru/blog/nx-build-s1ngularity-supply-chain-attack/40369/
- https://securitymedia.org/info/nadezhnye-shifry-kriptografiya-v-sovremennom-mire.html
- https://dblib.rsreu.ru/data/publications/6360_text.pdf
- https://habr.com/ru/companies/ruvds/articles/495898/
- https://www.thecoinrepublic.com/ru/2024/12/04/%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0-solana-%D1%81%D0%BA%D0%BE%D0%BC%D0%BF%D1%80%D0%BE%D0%BC%D0%B5%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B0-%D0%BF%D0%BE%D1%82%D0%B5/
- https://scientificrussia.ru/articles/novyj-algoritm-vzloma-kvantovoj-kriptografii-podskazet-mesta-ee-uazvimosti
- https://habr.com/ru/companies/simbirsoft/articles/823884/
- https://cryptodeep.ru/reduce-private-key/
- https://ntk.kubstu.ru/data/mc/0089/4451.pdf
- https://forwardemail.net/ru/blog/docs/optimize-nodejs-performance-production-monitoring-pm2-health-checks
- https://cisoclub.ru/vredonosnyj-kod-v-xrp-ledger-sdk-ugroza-kiberbezopasnosti/
- https://core.ac.uk/download/pdf/144001465.pdf
- https://stackoverflow.com/questions/57775676/how-does-the-node-js-crypto-module-produce-a-key-and-an-initialization-vector-wh
- https://nodejs.org/api/crypto.html
- https://za.investing.com/news/unciphered-identifies-critical-flaw-in-early-bitcoinjs-wallets-93CH-2935957
- https://www.htx.com/ru-ru/feed/community/2728009/
- https://www.cobalt.io/blog/node-js-vulnerabilities
- https://github.com/nodejs/node/issues/59699
- https://nodejs.org/download/release/v8.9.4/docs/api/crypto.html
- https://kariera.future-processing.pl/blog/a-curious-case-of-memory-leak-in-a-node-js-app/
- https://github.com/nodejs/node/issues/13917
- https://stackoverflow.com/questions/6953286/how-to-encrypt-data-that-needs-to-be-decrypted-in-node-js
- https://nodejs.org/download/release/v10.24.1/docs/api/crypto.html
- https://nodejs.org/download/rc/v8.12.0-rc.2/docs/api/crypto.html
- https://nodejs.org/api/process.html
- https://nodejsdev.ru/api/crypto/
- https://expressjs.com/en/resources/middleware/session.html
- https://stackoverflow.com/questions/37530614/is-there-a-vulnerability-if-the-beginning-of-the-plaintext-is-known-before-encry
- https://calvinmetcalf.com/post/104082905653/porting-nodejs-crypto-to-the-browser-part-1-all
- https://artoonsolutions.com/nodejs-crypto/
- https://github.com/brix/crypto-js/issues/468
- https://www.aikido.dev/blog/xrp-supplychain-attack-official-npm-package-infected-with-crypto-stealing-backdoor
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3563-bit-flipping-attack-%D0%BD%D0%B0-walletdat-%D1%80%D0%B8%D1%81%D0%BA%D0%B8-%D0%B8%D1%81%D 0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-aes-256- cbc-%D0%B1%D0%B5%D0%B7-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0 %B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D1%8D%D0%BA%D1%81%D0%BF%D0%BB%D1%83%D0 %B0%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B8%D0%B7%D0%B2%D0%BB%D0%B5%D1 %87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%BD%D1% 8B%D1%85-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9-%D0%B8%D0%B7-비트코인 코어%2F
- https://publications.cispa.de/articles/conference_contribution/Identifying_Key_Leakage_of_Bitcoin_Users/24612726
- https://cryptodeep.ru/signature-malleability/
- https://www.semanticscholars.org/paper/Identifying-Key-Leakage-of-Bitcoin-Users-Brengel-Rossow/32c3e3fc47eeff6c8aa93fad01b1b0aadad7e323
- https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_2_13153514
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3549-digital-signature-forgery-attack-%D0%BA%D0%B0%D0%BA-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8-cve-2025-29774-%D0%B8-%D0%B1%D0%B0%D0%B3-sighash_single-%D1%83%D0%B3%D1%80%D0%BE%D0%B6%D0%B0%D1%8E%D1%82-%D0%BC%D1%83%D0%BB %D1%8C%D1%82%D0%B8%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%BD%D1%8B%D0%BC-% D0%BA%D0%BE%D1%88%D0%B5%D0%BB%D1%8C%D0%BA%D0%B0%D0%BC-%D0%BC%D0%B5%D1%82%D 0%BE%D0%B4%D1%8B-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D1%81-% D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8-rawtx%2F
- https://cryptodeeptech.ru/signature-malleability/
- https://habr.com/ru/companies/pvs-studio/articles/678410/
- https://cyberleninka.ru/article/n/ugrozy-i-riski-tsifrovoy-ekonomiki-na-sektoralnom-urovne
- https://osp.ru/os/2025/02/13059629
- https://cyberleninka.ru/article/n/obespechenie-bezopasnosti-slozhnyh-sistem-s-integratsiey-bolshih-yazykovyh-modeley-analiz-ugroz-i-metodov-zaschity
- https://www.nsu.ru/n/physics-department/uchebno-metodicheskie-posobiya/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B2%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0 %B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85%20%D1%82%D0%B5%D1%85%D0%BD%D0% BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%D1%85%202/%D0%9F%D1%80%D0%BE%D0% B1%D0%BB%D0%B5%D0%BC%D1%8B%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B 0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B2%20%D0%98%D0%A2.pdf
- https://www.itsec.ru/articles/kvantovyj-bag-bounti-dlya-blokchejna
- https://www.tadviser.ru/index.php/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F:%D0%92%D0%B8%D1%80%D1%83%D1%81%D1%8B-%D0%B2%D1%8B%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D0%B8_(%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B8)_랜섬웨어
- https://habr.com/ru/articles/817237/
- https://www.securityvision.ru/blog/cve-common-vulnerabilities-and-exposures-baza-dannykh-uyazvimostey-informatsionnoy-bezopasnosti/
- https://rdc.grfc.ru/2021/07/kiberataki_na_kii/
- https://pvs-studio.ru/ru/blog/posts/0971/
- https://ptsecurity.com/ru-ru/research/analytics/cybersecurity-threatscape-2024-q1/