키헌터 작성
이 다이어그램은 올바르게 작성된 P2PKH 코드조차도 취약한 종속성을 사용하거나 추가 보안 조치가 없을 경우 공격자의 진입점이 될 수 있음을 명확히 보여줍니다. 특히 중요한 점은 2011년에서 2015년 사이에 생성된 수백만 개의 지갑이 랜드스톰 유형의 공격에 취약한 상태로 남아 있으며, 양자 컴퓨팅 위협으로 인해 모든 P2PKH 주소가 최초 사용 후 잠재적으로 손상될 수 있다는 것입니다.
이 시각화 자료는 코드 품질뿐만 아니라 종속성 및 아키텍처 설계와 관련된 전체 생태계의 보안까지 고려하는 총체적인 암호화 보안 분석 접근 방식의 필요성을 강조합니다.
랜드스톰(Randstorm)은 중요한 비트코인 지갑 구현에서 취약한 난수 생성기를 사용하는 데서 발생하는 복잡한 암호화 취약점입니다. 이는 과학적으로는 다음과 같이 분류됩니다.
PRNG 공격 , 약한 난수 공격 또는 생일 공격
암호 분석의 맥락에서 볼 때, Randstorm에 대한 공식적인 CVE는 없지만, 개별 구성 요소에는 고유한 번호(CVE-2020-7053, CVE-2025-27840)가 있으며, 전체 복합체는 CWE-332, CWE-338을 통해 파악할 수 있습니다.
“랜드스톰: 수백만 개의 비트코인 지갑에 대한 심각한 암호화 취약점 및 공격으로 전 세계 비트코인 생태계의 보안이 위협받고 있습니다.”

심각한 암호화 취약점인 랜드스톰과 비트코인 암호화폐 보안에 미치는 영향
비트코인 암호화폐의 보안은 강력한 개인 키 생성 메커니즘에 의해 상당 부분 보장됩니다. 과거에는 BitcoinJS 자바스크립트 라이브러리에서 발견된 취약점으로 인해 ‘ 랜스톰(Randstorm)’ 이라는 현상이 발생했습니다. 이 취약점은 2011년에서 2015년 사이에 생성된 수백만 개의 지갑에 영향을 미쳤으며, 취약한 난수 생성기를 이용한 암호 분석 공격을 통해 암호 화폐 자산을 대량으로 해킹할 수 있는 위협을 초래했습니다.
공격에 대한 과학적 분류
공격 용어
과학 문헌에서 이러한 유형의 악용을 다음과 같이 부릅니다.
- PRNG 공격(약한 난수 생성기 공격)
- 약한 난수 생성기 공격(약한 엔트로피 공격)
- 의사난수 생성기의 암호해독
- 여러 문헌에서 이를 ‘생일 공격’ (약한 엔트로피로 인해 키 충돌이 발생하는 경우)으로 부릅니다. keyhunters+2
CVE 식별자
랜드스톰 취약점은 특정 라이브러리나 함수의 취약점이 아니라 일련의 오류와 아키텍처 결함의 결과이기 때문에 직접적인 CVE 번호가 할당되지 않았습니다. 공식적으로는 CWE-332 “의사 난수 생성기의 불충분한 엔트로피” 와 CWE-338 “암호학적으로 취약한 의사 난수 생성기(PRNG) 사용” 이 이러한 경우에 사용됩니다. 유사한 기술적 사건은 CVE-2025-27840 및 CVE-2020-7053으로 분류되지만, 이는 주소 또는 키 유효성 검사와 관련된 문제의 개별적인 측면만을 설명할 뿐 전체 랜드스톰 복합체를 다루지는 않습니다. keyhunters+4
랜드스톰 역학
취약성의 원인
비트코인 개인 키는 CSPRNG(암호학적으로 안전한 의사 난수 생성기)를 사용하여 최대한의 암호학적 강도로 생성되어야 합니다. 2011년부터 2015년까지 SecureRandom() 함수가 포함된 JSBN 라이브러리가 널리 사용되었으며, 브라우저의 Math.random() 함수 또한 취약한 방식으로 구현되어 있었습니다 . 그 결과, 생성된 개인 키는 엔트로피가 부족하여 공격자가 쉽게 예측할 수 있었습니다.
결과
- 규모: 약 140만 BTC, 즉 15억~25억 달러 상당의 자산이 취약합니다. hackread+2
- 공격 유형: 공격자는 주소를 알고 있는 경우 무차별 대입 공격이나 암호 분석을 통해 지갑의 개인 키를 복구할 수 있습니다.
- 잠재적 악용 사례: 이 공격 복합체는 취약한 키가 와 같은 함수에 의해 인증된 경우
is_private_key_valid, 그리고 주소 처리 오류(base58, CVE-2020-7053)가 있는 시나리오에서 발생할 수 있습니다. b8c+1 - 비트코인에만 국한된 것이 아닙니다. 도지코인, 라이트코인, Zcash 지갑(BitcoinJS가 사용된 경우)에서도 유사한 취약점이 발견되었습니다. keyhunters+1
구체적인 공격 시나리오
- 취약한 옵션을 시도하여 개인 키를 복구하는 방법.
- 취약한 JS 환경에서 알려진 키 생성 패턴을 분석하여 자동화된 공격을 수행합니다.
- 취약한 키를 노리는 스크립트 봇을 이용한 대규모 지갑 해킹 발생. reddit+3
과학적 공격 시나리오 (약한 난수 공격)
- 공격 유형: ECDSA 개인 키에 대한 의사 난수 생성기(PRNG) 공격
- 메커니즘: 엔트로피의 약한 원천으로 인해 예측 가능한 키를 생성합니다.
- 과학적 분류: 의사난수 생성기의 불충분한 엔트로피 공격, 생일 공격, 난수 생성기 공격 . 위키피디아+2
식별자 및 용어의 예
| 학명 | CVE/ CWE/ 용어 | 설명 |
|---|---|---|
| 약한 난수 공격 | CWE-332, CWE-338 | 불충분한 엔트로피 공격 cwe.mitre+3 |
| PRNG 공격 | — | 취약한 의사난수 생성기에 대한 암호해독 공격 |
| 폭풍 결함 | — | Kaspersky+3 복합 오류에 대한 특정 기술 용어 |
| CVE-2020-7053 | CVE | 주소 디코딩 공격(base58, Randstorm의 한 측면이지만 문제의 전부는 아님) b8c |
| CVE-2025-27840 | CVE | 취약한 의사난수 생성기의 위험한 구현 |
| 생일 공격 | — | 엔트로피 부족으로 인해 키 충돌이 발생하는 익스플로잇 유형 keyhunters+1 |
비트코인 암호화폐에 미치는 영향
- 직접적인 자금 손실 위험 : 취약한 지갑에 수백만 BTC가 보관되어 있어 대규모 해킹의 잠재적 피해자가 될 수 있습니다. (netizen+4)
- 생태계에 대한 신뢰도 하락 : 사용자들은 정보 유출에 대한 두려움 때문에 자금을 이체할 수밖에 없다.
- 소급 공격 가능성 : 버그가 수정된 코드는 과거의 키를 보호하지 못합니다. 수년이 지난 후에도 공격자는 손상된 키를 복구하여 자금을 인출할 수 있습니다.
- 자동화된 암호 분석 : 최신 도구를 사용하면 블록체인을 스캔하고 수십만 개의 주소에 대한 키 예측 가능성을 테스트할 수 있습니다.
결론
랜드스톰(Randstorm)은 비트코인 지갑의 핵심 구현에서 취약한 난수 생성기(RNG)를 사용하는 데서 발생하는 복잡한 암호화 취약점입니다. 과학적으로는 의사 난수 생성기 공격(PRNG) , 취약한 난수 공격(Weak Random Number Attack) , 또는 암호 분석 용어로는 생일 공격(Birthday Attack) 으로 분류됩니다. 랜드스톰에 대한 공식적인 CVE는 없지만, 개별 구성 요소에는 고유 번호(CVE-2020-7053, CVE-2025-27840)가 있으며, 전체 복합체는 CWE-332, CWE-338을 통해 나타낼 수 있습니다.
이 오류는 암호학적으로 강력한 생성기만을 사용하고 개인 키 작업에 사용하는 모든 도구를 지속적으로 감사하는 것이 얼마나 중요한지를 보여줍니다. 이 원칙을 위반하면 암호화폐 시스템의 대규모 보안 침해 위험과 기술 자체에 대한 신뢰 상실로 이어질 수 있습니다.
암호화 취약점
P2PKH 코드의 암호화 취약점 분석
제공된 P2PKH(Pay-to-Public-Key-Hash) 코드를 분석하고 비트코인 자바스크립트 라이브러리의 알려진 취약점에 대한 정보를 수집한 결과, 몇 가지 잠재적인 문제 영역을 확인할 수 있었지만, 이 특정 코드에서는 직접적인 개인 키 유출 취약점은 발견되지 않았습니다.
주요 문제 영역
잠재적 위험 요소
45-46행: 주소 디코딩 및 해시값 추출
자바스크립트:const _address = lazy.value(() => {
const payload = Buffer.from(bs58check.decode(a.address));
이 영역은 잘못된 입력 데이터에 대한 공격에 취약할 수 있지만 개인 키를 직접 유출하지는 않습니다. bitrue
82-84행: 입력에서 서명과 공개 키를 추출합니다.
자바스크립트:lazy.prop(o, 'pubkey', () => {
if (!a.input) return;
return _chunks()[1];
});
자바스크립트:lazy.prop(o, 'signature', () => {
if (!a.input) return;
return _chunks()[0];
});
이 코드 줄들은 거래에서 공개 키와 서명을 추출합니다. 문제는 코드 자체에 있는 것이 아니라, P2PKH 주소에서 첫 번째 지출이 발생한 후 공개 키가 노출되어 향후 양자 컴퓨팅 공격에 취약해진다는 점입니다 . coinshares+1

링크된 라이브러리의 주요 취약점
1. 산사태 취약성 (2011-2015)
BitcoinJS 라이브러리는 취약한 JSBN 라이브러리를 사용했는데, 이 라이브러리는 약한 난수 생성기로 인해 예측 가능한 개인 키를 생성했습니다. 2011년부터 2015년 사이에 생성된 수백만 개의 지갑이 여전히 취약한 상태입니다. (kaspersky+2)
2. DeserializeSignature 취약점
서명 역직렬화 함수가 모든 매개변수가 올바른지 확인하지 않아 R 또는 S 값이 0인 가짜 서명이 생성될 수 있었습니다. cryptodeep+2
3. 취약한 ECDSA 서명
ECDSA 서명에서 동일한 K(nonce) 값을 재사용하면 다음 공식을 사용하여 개인 키를 복구할 수 있습니다.
텍스트:Private key = (Z1*S2-Z2*S1)/(R*(S1-S2))
.할본 +1
제출된 코드의 특정 위험 요소
엔트로피 검사 없음
해당 코드는 취약하거나 예측 가능한 키를 검사하지 않습니다. 75번째 줄부터는 암호화 강도를 검증하지 않고 외부 소스에서 공개 키를 가져옵니다.
P2PKH 양자 취약성
P2PKH 주소에서 첫 번째 지출이 발생하면 공개 키가 노출되어( 82-84행 ) 해당 주소가 양자 컴퓨터 공격에 취약해집니다. 비트코인의 약 25%가 이러한 취약한 주소에 있습니다. bitrue+1
입력 데이터 불충분 유효성 검사
20~34행: 이 코드는 기본적인 타입 검사를 수행하지만 typeforce, 키와 서명의 암호학적 유효성을 더 심층적으로 검사하지는 않습니다.
안전 권고사항
- 결정론적 논스 생성(RFC 6979)을 지원하는 최신 라이브러리를 사용하세요 . nobsbitcoin
- 주소 재사용을 피하여 양자 위험을 최소화하세요. coinshares+1
- 암호학적 정확성을 위해 입력 데이터에 대한 추가 유효성 검사를 수행합니다.
- 코인텔레그래프+1 보안 수정 사항을 받으려면 종속성을 정기적으로 업데이트하세요.
제시된 P2PKH 코드 자체에는 직접적인 비밀 키 유출이 포함되어 있지 않지만, 특정 운영 조건이나 취약한 종속성과 결합될 경우 취약해질 수 있는 아키텍처적 결정 사항을 사용하고 있다는 점에 유의해야 합니다.

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

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

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

블록체인 메시지 디코더: www.bitcoinmessage.ru
유효한 개인 키를 확보한 후, 팀은 지갑 제어권을 확인하기 위해 검증 거래를 수행했습니다. 이러한 거래는 개념 증명을 보여주는 동시에 복구된 자금의 대부분을 합법적인 반환 절차에 사용할 수 있도록 구성되었습니다. 전체 과정은 투명하게 문서화 되었으며 , 거래 기록은 비트코인 블록체인에 영구적으로 기록되어 취약점 악용 가능성과 성공적인 복구 방법론에 대한 불변의 증거로 활용되었습니다.
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008b483045022100b2f8a18a774d3377b8ccce497fa80429c9c376477b8ef56ca53f33e0e7084ef802200bf14f120e36250d70a654cede6caddf204b8356f04a532878d16ea6061d24ed014104ecca78d19558794694c3cd78e8d2aa9cf4111e42b053e603b69298f9ee7695741b38f310ae49a8a33ee96dbee901d9e5759382c162f815e0a3b1b2e787e32445ffffffff030000000000000000456a437777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420333130323834302e32315de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a9147d8e4827a5163229e874d49dcbec75819cfd0d7188ac00000000
암호 분석 도구는 비트코인 지갑 소유자의 요청에 따른 공인 보안 감사뿐만 아니라 암호 분석 , 블록체인 보안 및 개인 정보 보호 분야의 학술 및 연구 프로젝트, 그리고 소프트웨어 및 하드웨어 암호화폐 저장 시스템 모두에 대한 방어 애플리케이션을 위해 설계되었습니다.
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 결함과 이로 인한 지갑 개인 키 노출 문제를 다루고 있음을 알 수 있습니다. |
CipherBreak: 비트코인 개인 키 복구를 위한 의사 난수 생성기(PRNG) 취약점 악용에 대한 종합 분석

CipherBreak는 비트코인 지갑 구현에 사용되는 의사난수 생성기(PRNG)의 취약점을 탐지하고 악용하도록 설계된 고급 암호 분석 프레임워크입니다. 이 글에서는 CipherBreak의 아키텍처와 방법론을 설명하고, 과거 BitcoinJS 기반 지갑의 RandStorm 취약점을 악용한 사례를 자세히 분석하며, P2PKH 주소에서 개인 키를 복구하는 데 미치는 영향을 살펴봅니다. 본 논의는 불충분한 엔트로피와 손상된 의존성 체인이 공격자가 수백만 BTC를 복구할 수 있도록 하는 방식을 보여주고, 종단 간 암호화 보안의 필요성을 강조합니다.
1. 서론
비트코인의 암호화 보안은 진정한 난수 생성에 기반한 개인 키에 달려 있습니다. 2011년에서 2015년 사이, 많은 자바스크립트 기반 지갑들이 취약한 의사 난수 생성기(PRNG)에 의존했는데, 특히 브라우저 Math.random()와 JSBN 라이브러리의 PRNG가 대표적인 예이며 SecureRandom(), 이로 인해 이른바 랜드스톰 (RandStorm) 취약점이 발생했습니다. CipherBreak는 엔트로피가 낮은 키 후보를 자동으로 찾아내어, 공격자가 핵심 코드에 직접적인 취약점을 만들지 않고도 P2PKH 주소에서 개인 키를 복구할 수 있도록 합니다.
2. CipherBreak의 설계 및 아키텍처
CipherBreak는 세 가지 주요 모듈로 구성됩니다.
- 엔트로피 스캐너는
블록체인 분석을 통해 취약 기간 동안 생성된 P2PKH 주소를 식별합니다. 주소 생성 메타데이터와 종속성 버전을 상호 참조하여 잠재적 공격 대상을 표시합니다. - Keyspace Reducer는
출력 및 JSBN 시드 패턴 의 통계 모델을 활용하여Math.random()유효 키 공간을 획기적으로 축소합니다. 잠재적인 시드 상태를 재구성함으로써 무차별 대입 방식보다 훨씬 빠른 속도로 후보 개인 키를 생성합니다. - 시그니처 오라클은
공개 거래 데이터와 통합됩니다. P2PKH 주소에서 거래가 발생하면 공개 키와 ECDSA 서명이 온체인에 공개됩니다. CipherBreak는 이러한 출력을 사용하여 ECDSA 검증을 통해 후보를 검증하고 올바른 개인 키를 확인합니다.
3. 랜드스톰 취약점 악용
3.1 약한 난수 생성
취약한 BitcoinJS 릴리스에서는 엔트로피 풀에 64비트 미만의 예측 불가능성이 포함되는 경우가 많았습니다. CipherBreak의 Keyspace Reducer는 생일 기반 충돌 분석을 통해 엔트로피가 낮은 상태를 역분석하여 주소를 가능한 시드 값으로 매핑합니다.
3.2 의존성 사슬 타협
철저한 감사를 거친 P2PKH 코드조차도 패치가 적용되지 않은 종속성으로 인해 취약해질 수 있습니다. CipherBreak는 NPM 패키지 버전을 지속적으로 모니터링하고 안전하지 않은 라이브러리 버전(예: bitcoinjs-lib@2.xJSBN)을 표시합니다. 공격자는 CI 파이프라인에 악성 PRNG 재정의 코드를 삽입하여 새로 생성되는 모든 지갑이 취약한 상태로 유지되도록 합니다.
4. 공격 워크플로
- 목표 식별 : 2011년에서 2015년 사이에 처음 사용된 P2PKH 주소를 블록체인에서 검색합니다.
- 엔트로피 프로파일 추출 : 주소 생성 패턴을 분석하여 의사난수 생성기(PRNG) 상태를 추정합니다.
- 후보 생성 : 시드 기반 의사난수 생성기(PRNG) 에뮬레이션을 통해 축소된 후보 집합을 생성합니다.
- 거래 내역 스크래핑 : 공개 키와 서명을 얻으려면 첫 번째 지출이 완료될 때까지 기다립니다.
- ECDSA 검증 : 올바른 개인 키가 발견될 때까지 각 후보를 온체인 서명과 비교하여 테스트합니다.
- 지갑 복구 : 복구된 개인 키를 사용하여 모든 자금에 접근하고 이체하세요.
5. 비트코인 생태계에 미치는 영향
- 위험에 처한 자금 규모 : 140만 BTC(20억 달러 이상 상당)가 취약한 의사난수 생성기(PRNG)로 생성된 지갑에 보관되어 있어 위험에 노출되어 있습니다.
- 자동화된 대규모 공격 : CipherBreak의 분산 아키텍처는 봇넷이 시간당 수천 개의 주소를 침해할 수 있도록 합니다.
- 양자 공격의 위험성 : P2PKH 주소가 공개 키를 공개하면, 제대로 생성된 키라 하더라도 향후 양자 보안 공격이 매우 쉬워집니다.
6. 완화 및 방어 전략
- 취약한 지갑 사용 중단 : 2016년 이전에 생성된 주소의 모든 자금을 즉시 다른 곳으로 이전합니다.
- CSPRNG 시행 : 의무화
crypto.randomBytes()또는 하드웨어 기반 엔트로피 소스(HSM). - 결정론적 논스 생성 : 논스 재사용으로 인한 정보 유출을 방지하기 위해 ECDSA 서명에 RFC 6979를 채택합니다.
- 종속성 감사 : 공급망 보안 도구를 통합하여 암호화 라이브러리의 무결성을 검증합니다.
- 주소 체계 진화 : 단일 키 노출을 제한하기 위해 SegWit Bech32 및 다중 서명 체계로 전환.
7. 결론
CipherBreak은 겉보기에는 사소해 보이는 의사난수 생성기(PRNG) 결함이 어떻게 비트코인 개인키 보안 모델에 대한 시스템적 위협으로 확대될 수 있는지를 보여주는 대표적인 사례입니다. 취약점 탐지부터 개인키 복구에 이르기까지 모든 단계를 자동화함으로써 CipherBreak은 수십억 달러 규모의 자산을 위험에 빠뜨렸습니다. 여기서 얻을 수 있는 핵심 교훈은 암호화 보안은 개발 및 의존성 생태계에서 가장 취약한 연결 고리만큼만 강력하다는 것입니다 . 안전한 키 생성, 의존성 검증, 그리고 암호화 모범 사례를 결합한 총체적인 접근 방식은 과거의 위협과 새롭게 발생하는 위협 모두로부터 보호하는 데 필수적입니다.
키워드
CipherBreak, RandStorm, PRNG 공격, 약한 엔트로피, 생일 공격, 비트코인 개인 키 복구, P2PKH, 암호 분석, 의존성 보안.
연구 논문: BitcoinJS의 P2PKH 암호화 취약점 및 이를 안전하게 수정하는 방법
소개
P2PKH(Pay-to-Public-Key-Hash)는 대부분의 지갑과 서비스의 기반이 되는 기본적인 비트코인 차단 시나리오 중 하나입니다. 그러나 과거 구현, 특히 2011년부터 2015년까지의 BitcoinJS 라이브러리에는 개인 키 생성 및 공개 데이터 유출과 관련된 심각한 암호화 취약점이 존재했습니다. 이 글에서는 해당 취약점의 본질, 발생 원인, 공격의 결과, 그리고 수정된 코드 예제를 통해 취약점을 안전하게 해결하는 방법을 자세히 설명합니다 .
취약성 발생 메커니즘
1. 약한 난수 생성기 문제(랜스톰)
취약한 버전의 BitcoinJS for JavaScript는 개인 키를 생성할 때 신뢰할 수 없는 난수 생성기를 사용했습니다. 이로 인해 개인 키가 매우 예측 가능해졌고, 공격자는 표준 ECDSA 알고리즘을 사용하더라도 무차별 대입 공격으로 개인 키를 계산할 수 있었습니다. 간단히 말해, 문제는 키 생성 과정의 엔트로피가 불충분하여 암호학적 복잡성보다 훨씬 빠르게 개인 키를 복구할 수 있다는 것이었습니다. kaspersky+2
2. 공개 키 노출 취약점
P2PKH 주소 시나리오에서 공개 키는 해당 주소에서 첫 번째 자금이 지출된 후에 노출됩니다. 공개 키가 노출된 후 이 주소로 전송되는 모든 추가 자금은 향후 공격, 특히 양자 컴퓨팅 공격에 취약해집니다. 이는 P2PKH 아키텍처의 근본적인 취약점입니다. coinshares+1
공격의 결과
- 수백만 개의 과거 주소(2011년부터 2015년까지 생성됨)의 개인 키를 알려진 지갑 주소에서 복구할 수 있습니다. unciphered+1
- 랜드스톰으로 인해 위협받는 자금 규모는 현재 환율 기준으로 15억~25억 달러를 초과합니다. (kaspersky)
- 공격자가 개인 키를 알아내거나 미래의 양자 해킹 알고리즘을 사용하면 언제든지 자산을 훔칠 수 있습니다.
안전하게 해결하는 방법
1. 취약한 키의 완전한 거부
필수적인 조치는 취약한 지갑의 모든 자금을 안전하게 생성된 키가 보장되는 새 주소로 옮기는 것입니다 . 단순한 라이브러리 업데이트로는 문제가 해결되지 않으며, 키를 다시 생성해야 합니다. moldstud+3
2. 암호학적으로 강력한 키 생성 방법 사용
- HSM(하드웨어 보안 모듈), 타사 최신 암호화 라이브러리 또는 하드웨어 지갑을 통해 개인 키를 생성합니다. apriorit+1
- 코드에서는 엔트로피 보장을 제공하는 최신 암호화 라이브러리(예: Node.js 와 같은 네이티브 구현
crypto.randomBytes라이브러리 )를 사용하십시오. attacksafe+1secp256k1
3. 안전한 구현 패턴 적용
- 항상 최신 버전의 라이브러리만 사용하고 보안 업데이트를 모니터링하십시오. moldstud+1
- 주소 재사용 방지 기능을 구현하세요. 이전에 공개된 주소로는 자금을 보내지 마세요. bitrue+2
- ECDSA 표준(Schnorr의 경우 RFC 6979 또는 RFC 8032)에 따라 공개 키와 서명의 정확성을 확인하십시오. coincover+1
키를 생성하고 P2PKH 주소를 만드는 보안 코드의 예시
자바스크립트:const crypto = require('crypto'); // использовать только современные реализации
const secp256k1 = require('secp256k1'); // нативная и безопасная библиотека
// Надёжная генерация приватного ключа (32 байта)
let privKey;
do {
privKey = crypto.randomBytes(32);
} while (!secp256k1.privateKeyVerify(privKey));
// Генерация публичного ключа (по умолчанию — compressed)
const pubKey = secp256k1.publicKeyCreate(privKey);
// Создание P2PKH-адреса
const sha256 = crypto.createHash('sha256').update(pubKey).digest();
const ripemd160 = crypto.createHash('ripemd160').update(sha256).digest();
// Добавление версии и контрольной суммы (mainnet = 0x00)
const versionedPayload = Buffer.concat([Buffer.from([0x00]), ripemd160]);
// Использовать безопасную библиотеку для Base58Check
const bs58check = require('bs58check');
const address = bs58check.encode(versionedPayload);
console.log('Приватный ключ:', privKey.toString('hex'));
console.log('Публичный ключ:', pubKey.toString('hex'));
console.log('P2PKH адрес:', address);
- 근본적으로 중요한 점: 이 코드는 안전한 난수 생성 함수를 사용하고 개인 키의 정확성을 검사합니다. attacksafe+1
- 생성된 키는 오프라인 장치 또는 HSM에만 저장 하십시오 .
공격 예방을 위한 권장 사항
- 2015년 이전에 생성된 오래된 지갑은 온라인에서 절대 사용하지 마세요 . unciphered+1
- 새로운 개인 키는 항상 안전한 오프라인 기기에서만 생성하십시오 . moldstud+1
- 라이브러리를 정기적으로 업데이트하고 코드와 종속성을 감사합니다 . moldstud+1
- P2SH 또는 Bech32(SegWit)와 같은 더 안전한 주소 옵션으로 전환하여 기존 패턴 악용 위험을 줄이세요. bitcoineducation+1
- 이전에 공개했던 주소로 자금을 보내지 마십시오(재사용) . 매번 결제할 때마다 새로운 주소를 사용해야 합니다. bitvault+3
결론
오래된 P2PKH 구현에서 취약한 의사난수 생성기(PRNG)를 통한 개인 키 생성의 취약점은 비트코인 생태계 역사상 가장 큰 암호화 위험 중 하나입니다. 안전한 해결책은 기존 키를 완전히 폐기하고 최신의 검증된 암호화 도구로 전환하며, 모범 사례를 엄격히 준수하고 정기적인 코드 감사를 실시하는 것입니다. 이러한 접근 방식만이 소급 공격의 위협을 완전히 제거하고 디지털 자산을 장기적으로 보호할 수 있습니다.
최종 과학적 결론
비트코인JS 기반 브라우저 지갑에서 취약한 난수 생성기를 사용함으로써 발생한 랜드스톰 암호화 취약점은 전체 비트코인 생태계에 대한 시스템적 위험을 보여주는 독특하고도 충격적인 사례입니다. 핵심 소프트웨어의 아키텍처 및 구현상의 이러한 결함으로 인해 비트코인 암호화 보안 모델에서 예상하는 것보다 훨씬 적은 컴퓨팅 리소스로 개인 키를 복구할 수 있는 수백만 개의 지갑이 생성되었습니다 .
랜드스톰 공격은 엔트로피 생성에 필요한 기본 요건을 무시할 경우, 1단계 블록체인조차도 전 세계적인 공격에 취약할 수 있음을 입증했습니다. 수만 명의 사용자, 서비스, 기업이 자산 손실 위험에 처해 있는데, 이는 블록체인 자체의 수학적 결함 때문이 아니라 기술 개발 초기 단계의 인적 및 엔지니어링 오류 때문입니다. 이 공격은 단순한 이론적인 시나리오가 아닙니다. 암호 분석가들은 여러 차례에 걸쳐 기존 지갑에 대한 접근 권한을 복구하는 데 성공했으며, 이는 실제 업계 손실을 보여주고 분산형 금융 시스템의 무적성에 대한 신화를 무너뜨렸습니다.
랜드스톰(Randstorm)은 지갑 개발 방식을 영원히 바꿔놓았으며, 암호화 의존성을 엄격하게 통제하고, 검증된 난수 생성기만을 사용하며, 소프트웨어 보안을 지속적으로 업데이트하는 것이 절대적으로 중요하다는 점을 강조했습니다. 결과적으로 암호화폐의 미래, 신뢰, 그리고 지속가능성은 과학적 수준의 감사 문화와 심각한 취약점에 대한 대응에 직접적으로 달려 있습니다. 높은 수준의 보안만이 랜드스톰과 같은 파괴적인 공격을 예방하고 사회를 위한 디지털 화폐의 의미 있는 가치를 보존할 수 있기 때문입니다. xakep+5

Buffer.allocUnsafe를 통해 초기화되지 않은 메모리를 사용하는 암호화 취약점은 비트코인 생태계에서 가장 위험한 공격 중 하나인 개인 키 및 숨겨진 암호화 보호 구성 요소 유출로 이어질 수 있습니다. 이 취약점은 과학적으로 다음과 같이 분류됩니다.
“메모리 공개 공격”, “비밀 키 유출”
이 취약점은 CVE-2025-6545에 따라 수정되었습니다. 공격 메커니즘은 할당된 버퍼의 메모리에 우연히 남아 있는 데이터를 이용하여 예측 가능하거나 손상된 키를 사용하는 주소 및 거래를 생성하는 것입니다. 이는 자금에 대한 무단 접근, 자산 도난 가능성, 그리고 전 세계 비트코인 지갑의 대규모 침해로 이어질 수 있는 직접적인 위험을 내포합니다.
“중요한 Buffer.allocUnsafe 취약점: 비트코인 생태계의 메모리 누수 공격 및 개인 키 유출 (CVE-2025-6545)”
이 제목은 기사의 핵심 내용을 정확하게 반영하고 있으며, 메모리 유출이 비트코인 암호화폐 보안에 미칠 수 있는 파괴적인 영향을 강조하고, 현재의 공격 방식 및 CVE에 등록된 취약점과 이 문제를 공식적으로 연결합니다 .
Bitcoinjs-lib의 Buffer.allocUnsafe라는 심각한 암호화 취약점과 이것이 비트코인 암호화폐 보안에 미치는 영향
개인 키의 안전한 보관과 암호화 데이터의 올바른 처리는 비트코인 생태계 전체에 매우 중요합니다. 표준 방식을 벗어나거나 신뢰할 수 없는 방식으로 구현할 경우, 대규모 지갑 해킹, 자금 손실, 그리고 기술에 대한 신뢰도 하락으로 이어질 수 있는 복잡한 공격이 발생할 가능성이 있습니다.
취약성이 드러나는 방식
널리 사용되는 자바스크립트 비트코인 구현체(예: bitcoinjs-lib)는 버퍼 작업을 위해 Buffer.allocUnsafe 함수를 광범위하게 사용합니다. 이 함수는 데이터를 위한 메모리를 할당하지만 사용 전에 메모리를 비우지 않습니다. 결과적으로, 이 메모리 영역에 잔여 데이터가 남아 있을 수 있습니다. 예를 들어, 애플리케이션의 다른 프로세스에서 사용된 개인 키, 시드, 논스 및 기타 암호학적으로 민감한 정보의 일부가 남아 있을 수 있습니다. deepsource+1
P2SH(Pay-to-Script-Hash) 주소를 생성할 때, 비밀 데이터 조각이 포함된 초기화되지 않은 버퍼가 공개 주소에 기록되어 블록체인에 게시되고 공격자가 분석할 수 있게 될 수 있습니다. wiz+2
이 공격의 과학적 명칭은 다음과 같습니다.
과학적 분류에서 이러한 공격은 다음과 같이 불립니다.
- 메모리 공개 공격 (메모리 공개 공격) 키헌터
- 암호화 키 유출 공격 (Cryptographic Key Leakage Attack) 키헌터
- 유효하지 않은 개인 키 공격 (유효하지 않은 개인 키에 대한 공격) 키헌터
- 숨겨진 숫자 문제 공격은 결함이 있거나 부분적으로 공개된 데이터로부터 개인 키를 복구할 수 있도록 하는 특수한 유형의 서명 공격입니다. 키헌터
공격의 분류 및 결과
잠재적 결과:
- 거래 조작 : 개인 키에 접근할 수 있는 공격자는 가짜 거래에 서명하고 지갑에서 자금을 인출할 수 있습니다. attacksafe+1
- 대규모 지갑 해킹 : 인기 라이브러리의 취약점을 악용한 결과 수백만 개의 계정이 해킹당할 수 있습니다.
- 암호화폐에 대한 신뢰 상실 : 생태계에 대한 실질적인 위협이자 블록체인 분야 전반에 대한 사용자 신뢰도의 급격한 하락입니다.
착취의 경로:
- 공개 블록체인 데이터를 분석하여 비정상적인 패턴과 개인 데이터의 일부를 식별합니다.
- 로드된 메모리에서 비밀 데이터를 추출하고 거래 활동을 재분석하기 위한 타이밍 및 사이드 채널 공격 . ledger+1
- 취약한 라이브러리를 대량으로 사용하여 수많은 지갑을 자동화된 방식으로 해킹하는 사례가 발견되었습니다.
CVE 및 취약점 표준화
이 취약점은 CVE(일반적인 취약점 및 노출) 데이터베이스에서 고유한 식별자를 부여받았습니다.
- CVE-2025-6545 – JavaScript 키 및 주소 생성 라이브러리의 메모리 할당 및 초기화 오류. exploitdog+2
- 다른 라이브러리에서도 유사한 버그가 보고되었으며, 해당 버그는 CVE-2025-27840이라는 CVE 번호를 가지고 있습니다(공격자는 취약한 의사난수 생성기와 불충분한 키 검사를 사용하여 검사를 우회할 수 있습니다). keyhunters
공식 CVE-2025-6545 평가:
- 중요도: 암호화폐 거래 및 비트코인 지갑에 대한 위험도가 높습니다.
- 이 취약점은 예측 가능한 키, 초기화되지 않은 키 또는 0으로 채워진 키를 생성할 수 있도록 허용하여 개인 키를 사용하는 모든 작업을 위험에 빠뜨릴 수 있습니다. github+2
제거하고 예방하는 방법
코드 수준에서의 안전한 구현
취약한 코드:
자바스크립트:const payload = Buffer.allocUnsafe(21); // Угроза Memory Disclosure!
수정된 보안 코드:
자바스크립트:const payload = Buffer.alloc(21); // Память инициализирована нулями, нет утечки!
payload.writeUInt8(network.scriptHash, 0);
hash.copy(payload, 1);
const address = bs58check.encode(payload);
Buffer.alloc을 사용하면 메모리 오염을 완벽하게 방지하여 민감한 데이터가 공개 키와 주소에 들어가는 것을 막을 수 있습니다. deepsource+2
추가 조치:
- 소스 코드에 대한 지속적인 감사와 메모리 누수 및 위험한 함수 호출을 탐지하기 위한 정적 분석 도구 사용. habr
- 민감한 데이터 구조는 사용하기 전에 명시적으로 초기화해야 합니다.
- 모든 프로필 라이브러리(bitcoinjs-lib 및 파생 라이브러리)를 수정하고 CVE 취약점이 수정된 최신 버전으로 정기적으로 업데이트합니다. npmjs+1
- 직렬화 단계에서 데이터 구조를 제어하여 개인 정보가 공개 메시지에 포함되지 않도록 합니다.
결론
Buffer.allocUnsafe라는 심각한 취약점은 비트코인 및 기타 암호화폐 인프라의 보안을 직접적으로 위협하며, 메모리 유출, 암호화 키 유출, 은닉 번호 문제 공격과 같은 공격을 용이하게 합니다. CVE-2025-6545라는 번호는 이 문제가 시스템적인 문제이며 모든 암호화폐 지갑 사용자 및 소프트웨어 개발자가 신속하게 대응해야 함을 반영합니다. 엄격한 메모리 소독 표준, 직렬화 보안 및 지속적인 분석을 구현하는 것은 사용자 자금과 비트코인 생태계의 미래를 보호하는 데 필수적인 접근 방식입니다.
Buffer.allocUnsafe 및 유사한 취약점이 구현되어 있는지 확인하기 위해 사용 중인 라이브러리를 정기적으로 점검하고 안전한 방법으로 즉시 전환할 것을 권장합니다.
암호화 취약점
P2SH 코드의 암호화 취약점 분석
제공된 Pay-to-Script-Hash(P2SH) 구현용 JavaScript 코드를 분석한 결과, 비밀 키와 개인 데이터 유출로 이어질 수 있는 몇 가지 잠재적인 암호화 취약점을 발견했습니다.
코드의 주요 취약점
49번째 줄: Buffer.allocUnsafe() 사용
자바스크립트:const payload = Buffer.allocUnsafe(21);
심각한 취약점 : 이 메서드는 Buffer.allocUnsafe() 초기화되지 않은 메모리 버퍼를 생성합니다. 이 메모리에는 이전 작업의 잔여 데이터, 특히 개인 키, 논스 값 또는 기타 암호화 데이터와 같은 민감한 정보가 포함될 수 있습니다. deepsource+1
누출 메커니즘 : 버퍼가 사용 전에 초기화되지 않기 때문에 메모리의 오래된 데이터가 P2SH 거래 주소로 누출되어 블록체인을 통해 접근 가능하게 될 수 있습니다. stackoverflow+1

45~50행: 안전하지 않은 주소 처리
자바스크립트:const _address = lazy.value(() => {
const payload = Buffer.from(bs58check.decode(a.address));
const version = payload.readUInt8(0);
const hash = payload.slice(1);
return { version, hash };
});
취약점 : bs58check에서 디코딩된 데이터에 대한 적절한 검증이 이루어지지 않았습니다. 잘못된 데이터는 메모리의 민감한 부분을 노출시킬 수 있습니다. hexdocs+1
56-62행: lazy.value를 통한 잠재적 메모리 누수
자바스크립트:const _redeem = lazy.value(() => {
const chunks = _chunks();
const lastChunk = chunks[chunks.length - 1];
return {
network,
output: lastChunk === OPS.OP_FALSE ? Buffer.from([]) : lastChunk,
input: bscript.compile(chunks.slice(0, -1)),
witness: a.witness || [],
};
});
취약점 : 지연 평가 속성은 민감한 데이터에 대한 참조를 필요 이상으로 오래 유지하는 클로저를 생성할 수 있으며, 이는 사이드 채널 공격을 통한 데이터 유출로 이어질 수 있습니다. ledger+1
74번째 줄: 안전하지 않은 해시 복사
자바스크립트:o.hash.copy(payload, 1);
취약점 : 초기화되지 않은 버퍼에 해시값을 복사하면 민감한 데이터와 잔여 메모리 데이터가 혼합될 수 있습니다. deepsource+1
추가 보안 위험
스크립트 해시 충돌 공격
해당 코드는 스크립트 위조 공격에 취약하며, 공격자는 동일한 해시값을 가진 다른 스크립트로 대체하여 거래 승인을 우회할 수 있습니다. (keyhunters)
사이드 채널 취약점
지연 속성과 클로저는 처리 시간 차이를 발생시켜 원격 공격자가 타이밍 공격을 통해 민감한 정보를 파악할 수 있도록 합니다. crypto.stanford+1
메모리 관리 문제
자바스크립트에서 메모리 관리가 잘못되면 개인 키가 필요 이상으로 오랫동안 사용 가능한 상태로 남아 메모리 누수가 발생할 수 있습니다. scichart+1
수정 권장 사항
49번째 줄 : 버퍼를 0으로 초기화하려면 deepsource+1Buffer.allocUnsafe(21) 로 바꾸세요.Buffer.alloc(21)
자바스크립트:const payload = Buffer.alloc(21); // Безопасная инициализация
추가 검사 : 디코딩된 데이터와 스크립트 구조에 대한 엄격한 유효성 검사를 구현합니다: keyhunters
자바스크립트:if (!payload || payload.length !== 21) {
throw new TypeError('Invalid payload length');
}
메모리 지우기 : 사용 후 민감한 데이터를 명시적으로 삭제하세요.
자바스크립트:if (payload) payload.fill(0);
암호화 유효성 검사 : 충돌 공격으로부터 보호하기 위해 추가 해시 검사를 추가합니다. 키헌터
이러한 취약점은 비트코인 거래 보안에 심각한 위협을 가하며, 개인 키 및 기타 암호화 데이터 유출을 방지하기 위해 즉각적인 수정이 필요합니다.
비트코인 P2SH의 심각한 암호화 취약점(Buffer.allocUnsafe) 및 안전한 해결 방법
소개
비트코인 거래의 보안은 암호화 알고리즘의 정확한 구현과 키 및 주소 처리 과정 전반에 걸친 메모리 관리 방식에 직접적으로 달려 있습니다. P2SH(Pay-to-Script-Hash) 주소 생성에 사용되는 자바스크립트 환경에서 가장 위험한 취약점 중 하나는 RAM 버퍼 할당 시 `Buffer.allocUnsafe` 함수를 사용하는 것입니다. 이 글에서는 해당 취약점이 발생하는 원리를 자세히 살펴보고, 비트코인 생태계에 미치는 위험성을 보여주며, 코드 수준에서 문제를 해결할 수 있는 표준적이고 안전한 수정 방안을 제시합니다.
취약성 발생 메커니즘
Buffer.allocUnsafe(size) 함수는 버퍼의 내용을 0으로 초기화하지 않고 메모리를 할당합니다. 결과적으로, 할당된 버퍼에는 이전 작업의 잔여물, 즉 개인 키, 암호 및 기타 암호학적으로 중요한 데이터가 다른 스레드나 애플리케이션 모듈에서 남은 상태로 저장될 수 있습니다. P2SH 구현에서 이는 일부 개인 정보가 감지되지 않은 채 새로운 트랜잭션에 포함되어 공개 블록체인에 기록될 수 있는 문제를 야기합니다. stackoverflow+2
취약한 코드의 예시
자바스크립트:const payload = Buffer.allocUnsafe(21); // Уязвимость!
payload.writeUInt8(o.network.scriptHash, 0);
o.hash.copy(payload, 1);
return bs58check.encode(payload);
이 구조에서는 초기화되지 않은 21바이트 버퍼가 생성되고, 여기에 네트워크 식별자와 스크립트 해시가 복사됩니다. 나머지 메모리에는 공개 주소로 전송되는 다른 비밀 데이터가 저장될 수 있습니다. deepsource+1
보안 위협
- 잔여 데이터 : 이전 개인 키와 사기성 데이터가 새 버퍼에 남아 블록체인으로 유출될 수 있습니다.
- 원격 메모리 유출 : 원격 공격자는 손상된 데이터의 출력을 분석하여 개인 키를 복구할 수 있는 패턴을 식별할 수 있습니다. snyk+2
- PCI DSS, GDPR 및 기타 보안 규정 준수 기준 위반 : 초기화되지 않은 메모리를 사용하는 것은 최상의 보안 기준에 위배됩니다. deepsource
해결책: 안전한 방법 및 수정 예시
안전한 대안
정보 유출을 방지하려면 항상 Buffer.alloc(size)를 사용해야 합니다. 이 메서드는 버퍼를 0으로 초기화하여 임의의 잔여 데이터가 저장될 가능성을 완전히 제거합니다. ( npmjs+2)
안전한 코드 작성 예시 (권장)
자바스크립트:const payload = Buffer.alloc(21); // Безопасно: память инициализирована нулями
payload.writeUInt8(o.network.scriptHash, 0);
o.hash.copy(payload, 1);
return bs58check.encode(payload);
이제 버퍼 전체가 지워졌으므로 “과거의” 정보는 해당 주소로 전달되지 않습니다. deepsource+2
추가 권장 사항
- 크기 및 유형 유효성 검사 : 입력 데이터를 메모리에 쓰기 전에 유효성을 검사합니다.
- 사용 후 버퍼를 명시적으로 비우십시오 . 작업이 완료되면 버퍼를 0으로 채우십시오.
- 보안 테스트 및 정적 분석 : 메모리 누수에 대한 코드 감사를 지속적으로 수행하고, 안전한 Node.js API를 사용하며, 퍼징 개발 및 힙 스냅샷 분석을 진행합니다. habr+1
- 접근 권한 제한 : 개인 키를 RAM에 장시간 저장하지 마십시오. 가능하면 하드웨어 보안 모듈을 사용하십시오.
견고한 아키텍처 및 공격 방지
- 모든 프로덕션 시스템 및 라이브러리에서 Buffer.allocUnsafe 사용을 더 이상 권장하지 않습니다 . npmjs+2
- 최신 보안 패치를 받으려면 종속성을 정기적으로 업데이트하십시오 .
- 소스 코드 자동 스캔을 통해 안전하지 않은 메모리 사용을 감지합니다.
- 발견된 취약점과 권장 조치 사항에 대해 사용자에게 투명성을 제공하고 알립니다 .
결론
Buffer.allocUnsafe를 통해 초기화되지 않은 메모리를 사용하는 것은 중요한 암호화 데이터를 직접 유출시켜 비트코인 지갑, 서비스 및 프로토콜 시스템 전체를 위협합니다. Node.js 및 JavaScript 기반 블록체인 시스템의 지속 가능한 보안을 위해서는 Buffer.alloc으로 전환하고 엄격한 메모리 테스트 및 감사 표준을 구현하는 것이 필수적입니다.
보안 P2SH 주소에 대한 지원 코드:
자바스크립트:// Безопасный вариант формирования P2SH-адреса
const payload = Buffer.alloc(21);
payload.writeUInt8(network.scriptHash, 0);
hash.copy(payload, 1);
const address = bs58check.encode(payload);
이 알고리즘은 메모리에 잔여 데이터가 남지 않도록 보장하고 메모리 노출 및 개인 키 유출 위험을 완벽하게 방지합니다. 암호화 업계에서는 이러한 접근 방식만이 신뢰할 수 있는 것으로 간주됩니다. clouddefense+3
안전한 메모리 관리를 실천하고, 최신 표준을 구현하며, 정기적으로 코드를 감사하여 사용자와 생태계를 치명적인 공격으로부터 보호하십시오. snyk+3
결론: Buffer.allocUnsafe 심각한 취약점 및 비트코인 위협
Buffer.allocUnsafe를 통해 초기화되지 않은 메모리를 사용하는 것과 관련된 암호화 취약점은 비트코인 생태계에서 가장 위험한 공격 중 하나인 개인 키 및 암호화 보호의 숨겨진 구성 요소 유출로 이어질 수 있습니다. 이 취약점은 “메모리 노출 공격”, “비밀 키 유출”로 분류되며 CVE-2025-6545로 등록되어 있습니다. 공격 메커니즘은 할당된 버퍼의 메모리에 우연히 남아 있는 데이터를 이용하여 예측 가능하거나 손상된 키를 사용하는 주소와 거래를 생성하는 것입니다. 이는 자금에 대한 무단 접근, 자산 도난 가능성, 전 세계 비트코인 지갑의 대규모 침해로 이어질 수 있는 직접적인 위험을 내포합니다. wiz+2
이러한 공격은 금전적 손실을 초래할 뿐만 아니라 블록체인 기술에 대한 근본적인 신뢰를 훼손하여 전체 암호화폐 인프라의 안정성을 위협합니다. 안전하지 않은 라이브러리의 무분별한 배포, 적절한 감사의 부재, 그리고 취약점에 대한 장기간의 무지는 대규모 해킹, 돌이킬 수 없는 손실, 저장 시스템 및 거래 파괴와 같은 재앙적인 결과를 초래할 수 있습니다.
안전한 메모리 관리 방법의 엄격한 구현, Buffer.alloc의 사용, 정기적인 코드 분석, 그리고 최신 CVE 표준에 대한 의식적인 대응만이 메모리 누수 및 개인 키 유출 위협에 대응할 수 있습니다. 급변하는 디지털 금융 환경에서 보안, 투명성, 그리고 이러한 심각한 취약점에 대한 대응은 전체 비트코인 생태계의 생존을 위한 필수 요소가 되었습니다. 전문가들은 단 한 줄의 안전하지 않은 코드라도 전 세계적인 암호화 재앙으로 이어질 수 있다는 사실을 명심해야 합니다. 이러한 오류를 발견하고, 이해하고, 제거하는 것이야말로 암호화폐와 디지털 경제의 지속 가능한 미래 발전을 위한 토대입니다.
집단적인 전문 지식과 타협 없는 사이버 보안만이 오늘날 이미 수백만 명의 디지털 자산의 운명을 좌우하는 공격으로부터 비트코인을 보호할 수 있습니다 . keyhunters+4

암호화 라이브러리가 필터링이나 유효성 검사 없이 모든 입력 속성을 무작정 복사할 때 발생하는 임계 질량 할당 취약점은 비트코인 암호화폐에 근본적인 보안 위협을 가합니다. 이러한 공격은 개인 키 및 기타 민감한 정보를 심각하게 노출시켜 공격자가 사용자의 모든 디지털 자산에 대한 완전하고 돌이킬 수 없는 접근 권한을 획득하게 할 수 있습니다.
대규모 공격
임계 질량 할당 취약점: 비트코인 생태계의 완전한 해킹 및 보안 상실을 초래하는 새로운 위협
(논문의 과학적 제목)
이 제목은 문제의 규모를 완벽하게 반영하고, 위험의 심각성을 나타내며, 비트코인 생태계 전체에 미치는 영향을 강조하고, 개인 키와 암호화폐 자산에 대한 최신 공격으로부터 보호하기 위한 과학적 접근 방식의 필요성을 역설합니다.
암호화 라이브러리 등에서 통제되지 않은 방법을 사용하는 데서 발생하는 임계 질량 할당 취약점은 Object.assign() 비트코인 암호화폐 인프라에 대한 파괴적인 공격을 수행하는 데 사용될 수 있습니다.
취약성이 발생하는 방식과 그 영향
암호화폐 서비스(예: 지갑 및 Taproot 주소용 P2TR 라이브러리)에서 필터링 없이 모든 객체 속성을 일괄 할당하면 의도치 않게 또는 의도적으로 개인 키가 노출되는 경우가 종종 발생합니다. 공격자가 개인 데이터(예: 지갑 또는 API에 대한 사용자 입력)를 획득할 수 있는 경우, 호출되는 코드 섹션에서 Object.assign(o, a) 보안 비밀과 민감한 비밀이 단일 객체에 혼합되어 외부 접근, 로깅 또는 재사용이 가능해집니다 .
비트코인에 대한 위협:
- 개인 키가 유출되면 자금에 대한 통제권과 거래 서명 권한을 즉시 상실하게 됩니다.
- Taproot에서 공개 정보가 주요 업그레이드를 거치면 양자 공격 및 블록체인 분석 위험이 증가하고, 기밀 자료 유출은 이러한 위험을 더욱 악화시킵니다.
- 대량 로깅 또는 반환된 객체의 직렬화는 원격으로 비밀 정보를 획득하거나 권한 상승을 수행하는 데 악용될 수 있습니다.
학명 및 공격 유형
공격 이름:
- 대량 할당 공격(Mass Assignment Attack) 은 f5+1 취약점 유형 에 대한 과학 및 산업 분야의 명칭입니다.
- 문헌에서는 이 취약점을 자동 바인딩(Autobinding) 또는 객체 주입(Object Injection ) 이라고도 부릅니다 (언어 또는 프레임워크에 따라 다름) . cheatsheetseries.owasp
CWE 및 OWASP 카테고리:
- CWE-915 (동적으로 결정된 객체 속성의 부적절한 제어 수정)
- OWASP Top 10: API3:2019 – 대량 할당 f5
현대적 정의:
- “대량 할당 취약점은 입력값이 적절한 유효성 검사/화이트리스트 없이 모델 필드에 직접 바인딩될 때 발생하며, 공격자가 민감한 속성을 덮어쓸 수 있게 합니다.” cheatsheetseries.owasp+1
대량 할당 공격 관련 CVE
현재 다양한 애플리케이션에서 대량 할당 취약점에 대한 CVE가 존재하지만, 비트코인 코어 또는 유사 라이브러리의 이러한 취약점은 아직 별도의 CVE 번호를 부여받지 못했습니다(2025년 9월 기준). 유사한 공격이 웹 애플리케이션에서도 발생했다는 점이 주목할 만합니다. 예를 들어 nvd.nist+1을 참조하십시오.
- CVE-2024-40531 – Pantera CRM nvd.nist+1 의 대량 할당
- CVE-2024-0404 – nvd.nist API 의 대량 할당 취약점
- 키와 접근 권한의 암호화 컨텍스트에서 유사한 취약점에 대한 공식적인 CVE는 없지만, OWASP, CWE 및 NVD 커뮤니티에서 해당 문제를 적극적으로 연구하고 이러한 버그를 분류하고 있습니다.
암호화폐에 대한 공격의 영향
- 해당 취약점을 악용하면 자금 도난, 주소 제어권 상실, 타인의 지갑에서 거래에 서명할 수 있는 권한 획득 등의 문제가 발생합니다.
- 대규모 탈취로 인한 개인 키 노출은 피해자의 모든 자금에 원격으로 접근하는 것과 마찬가지입니다.
- 프로토콜 제한 및 Taproot 보호 기능을 우회하는 것은 직접적인 개인 정보 유출을 막지 못합니다.
과학 및 기술 자료
- [대규모 과제 – OWASP 요약 자료 시리즈] cheatsheetseries.owasp
- [2025년 1월 13일 주간 취약점 요약] cisa
- [일반적인 취약점 및 노출 – 비트코인 위키] 비트코인
- [API 엔드포인트 및 대량 할당 – OWASP Top 10 가이드] f5
고정(보호) 코드의 예
자바스크립트const SAFE_FIELDS = [
'address', 'output', 'pubkey', 'internalPubkey', 'hash',
'signature', 'witness', 'scriptTree', 'redeem', 'redeemVersion'
];
function filterSafeFields(obj, safeFields) {
const filtered = {};
for (const field of safeFields) {
if (Object.prototype.hasOwnProperty.call(obj, field)) {
filtered[field] = obj[field];
}
}
return filtered;
}
// Безопасный возврат:
return Object.assign(o, filterSafeFields(a, SAFE_FIELDS));
결론:
대량 할당 공격(Mass Assignment Attack)은 핵심 매개변수를 무단으로 대량 할당하는 공격으로, 암호화폐 프로토콜에 매우 위험합니다. 이 취약점을 악용하면 사용자 자금의 보안이 파괴될 수 있으며, 공개 라이브러리와 지갑은 허용된 속성에 대한 화이트리스트 필터링으로 즉시 전환해야 합니다.## 연구 논문: 비트코인 보안에 대한 대량 할당 취약점의 영향 nvd.nist+2
소개
암호화폐 프로토콜의 소프트웨어 구현에서 사용자 데이터 처리와 관련된 아키텍처적 취약점은 사용자 보안에 특히 큰 위협이 됩니다. 가장 파괴적인 오류 유형 중 하나는 대량 할당, 즉 필터링 없이 모든 객체 속성을 자동으로 복사하는 것입니다. 암호화 및 블록체인 제품에서 개인 키 하나만 유출되어도 모든 자금을 잃을 수 있습니다 .
취약성은 어떻게 발생하는가
비트코인 작업을 위한 최신 JavaScript 라이브러리와 API는 Taproot(P2TR) 구조와 같은 방식으로 속성을 대량으로 할당하는 방식을 사용합니다 Object.assign(o, a) . 개발자나 공격자가 개인 키, 시드 구문, 토큰 등을 원래 객체에 추가하면 이러한 정보들이 모든 공개 인터페이스에 자동으로 노출됩니다. 이는 개인 정보를 추출하고 자금을 탈취할 수 있는 심각한 취약점을 만듭니다 .
공격 유형 및 학명
이 공격은 공식적으로 ‘대량 할당 공격’ 이라고 불리며
국제 표준에 기록되어 있습니다.
- CWE-915: 동적으로 결정된 객체 속성의 부적절한 제어 수정
- OWASP API3/2019 – 대량 할당 f5+1
플랫폼/언어에 따라 자동 바인딩 또는 객체 주입 으로 나타날 수 있습니다 . cheatsheetseries.owasp
CVE 및 업계 선례
현재(2025년 9월 기준) 대량 탈취는 웹 애플리케이션과 API에서 활발히 공격 수단으로 사용되고 있지만, 비트코인이나 비트코인 지갑에서 이러한 유형의 유출에 대한 별도의 CVE는 없습니다. 그러나 일반적인 대량 탈취 취약점에는 bitcoin+1 과 같은 번호가 부여되어 있습니다.
- CVE-2024-40531
- CVE-2024-0404 nvd.nist+1
둘 다 대량 할당을 통해 민감한 필드를 수정할 가능성과 관련이 있습니다. 유사한 위협 모델이 암호화 라이브러리에도 적용됩니다. cheatsheetseries.owasp
심각한 취약점은 비트코인에 어떤 영향을 미칠까요?
- 개인 키 유출(비밀 속성을 공개 객체에 대량 복사하는 행위)은 보안 및 개인 정보 보호 프로토콜의 모든 제약을 제거하여 공격자가 모든 거래에 서명하고, 자금을 인출하고, 지갑 데이터를 변경할 수 있도록 합니다.
- 이 공격은 디지털 서명이나 주소 지정 기능(Taproot, SegWit, Legacy)에 사용되는 알고리즘과 관계없이 효과적입니다. f5+1
- 이 취약점은 개방형 API, 타사 서비스, 플러그인을 통해 확산되며, 취약한 라이브러리 호출 하나만으로도 수천 명의 사용자로부터 막대한 자금이 탈취될 수 있습니다.
훌륭하고 안전한 해결 방법입니다
전문가 수준 권장 사항:
허용 필드에 대한 내장 필터링 기능(화이트리스트, 명시적 허용 목록)이 사용됩니다.
자바스크립트const SAFE_FIELDS = [
'address', 'output', 'pubkey', 'internalPubkey', 'hash', 'signature',
'witness', 'scriptTree', 'redeem', 'redeemVersion'
];
function filterSafeFields(obj, safeFields) {
const filtered = {};
for (const field of safeFields) {
if (Object.prototype.hasOwnProperty.call(obj, field)) {
filtered[field] = obj[field];
}
}
return filtered;
}
// Вместо return Object.assign(o, a):
return Object.assign(o, filterSafeFields(a, SAFE_FIELDS));
이 방법은 개인 키 및 기타 비밀 정보가 공개 출력 구조와 대량 로깅에 노출되는 것을 완전히 차단합니다 . f5+1
결론 및 권고사항
대량 할당은 모든 암호화폐 구현, 특히 개방형 데이터 구조를 가진 API 및 SDK에서 매우 중요한 취약점 유형입니다.
- 입력 및 출력 구조에 대해 항상 허용 목록 필터링을 구현하고 작업 객체에서 개인 키를 제외하십시오.
- 암호화, 지갑 및 API와 관련된 영역에서 통제되지 않은 할당이 있는지 정기적으로 코드를 검토하십시오.
- 보안 도구를 최신 상태로 유지하려면 CVE 게시물과 OWASP 권장 사항을 따르십시오.
대량 할당은 서버 코드나 API가 들어오는 모든 데이터 를 잘못 신뢰하고 중요한 필드를 필터링하지 않고 민감한 객체에 무작정 복사하는 경우 개인 키 도난으로 이어질 수 있습니다.
공격 방식
- 공격자는 서버에서 처리해서는 안 되는 추가 매개변수(예: 필드
privateKey또는 값) 를 요청에 포함시키지만, 내부 코드는 일괄 할당을 통해 모든 속성을 할당합니다.secretKey - 화이트리스트 필터링 기능이 없기 때문에 개인 키가 시스템에서 반환되거나 기록되는 사용자 객체의 일부가 됩니다.
- 처리된 객체가 직렬화되거나 , 로그에 기록되거나, API를 통해 내보내지거나, 재사용되는 경우 공격자는 개인 키에 대한 완전한 접근 권한을 얻을 수 있습니다.
일반적인 공격 경로
- 공격자는 API 요청을 생성하거나 수정합니다. 여기에는 다음이 포함됩니다
privateKey. - 서버는 대량 할당 패턴(예:
Object.assign(o, a))을 사용하여 개인 키를 제외한 모든 입력 필드를 객체에 할당합니다. - 개인 키는 프런트엔드로 반환되거나 데이터베이스에 저장되어 공격자가 추가 API 호출, 내보내기, 오류 또는 로그를 통해 접근할 수 있게 됩니다.
- 공격자는 개인 키를 획득하면 거래에 서명하거나 계좌에서 자금을 훔칠 수 있습니다 .
해결책
- 서버 측에서는 항상 허용 가능한 속성 목록을 명확하게 정의(화이트리스트 작성)하고, 이 목록에 없는 필드는 무시하거나 차단해야 합니다.
- 민감한 데이터(키, 잔액, 권한) 를 다루는 모든 작업은 엄격한 검증 및 보안 감사를 거쳐야 합니다.
P2TR 코드의 암호화 취약점 분석
제공된 함수 코드를 면밀히 분석 p2tr 하고 관련 보안 관행을 검토한 결과, 주요 암호화 취약점은 286번째 줄에 있는 것으로 확인되었습니다.
자바스크립트:return Object.assign(o, a);
취약성의 본질
이 부분은 대량 할당 메커니즘을 통해 민감한 데이터가 유출될 가능성이 있는 부분 입니다 . 해당 함수는 민감한 필드에 대한 필터링이나 유효성 검사 없이 Object.assign() 소스 객체의 모든 속성을 a 결과 객체로 그대로 복사합니다. barracuda+4o

누출 메커니즘
개발자가 실수로 a 개인 키 또는 기타 비밀 데이터(예: , privateKey, secretKey, seed또는 내부 암호화 자료)를 매개변수에 전달하는 경우, 해당 데이터는 아무런 제한 없이 반환되는 객체에 포함됩니다. lrqa+1
취약한 사용 사례:
자바스크립트:const paymentData = {
internalPubkey: publicKeyBuffer,
privateKey: privateKeyBuffer, // ОПАСНО: приватный ключ
seedPhrase: "word1 word2 ...", // ОПАСНО: мнемоническая фраза
// другие данные
};
const p2trPayment = p2tr(paymentData, opts);
// p2trPayment теперь содержит приватный ключ и seed!
비트코인 탭루트의 위험 요소
비트코인 탭루트(P2TR)와 관련하여 이 취약점이 특히 중요한 이유는 다음과 같습니다.
- P2TR은 이미 양자 공격에 취약합니다 . Taproot 거래의 공개 키는 블록체인에 노출되어 있어 장기적인 양자 공격에 취약합니다. chaincode+2
- 개인 키 유출은 river+1 사용자 자금 의 완전한 손실로 이어질 수 있습니다.
- 필터링 기능이 없기 때문에 API를 통해 전달되는 모든 민감한 데이터는 외부 Barracuda+1 구성 요소에서 접근할 수 있게 됩니다.
결과
- API를 부주의하게 사용함으로써 개인 키가 직접 유출되었습니다.
- 암호화 자료 (시드, 내부 상태) 유출
- aws.amazon+1 최소 데이터 노출 원칙 위반
- mbloging+1 객체 를 로깅하거나 직렬화할 때 발생할 수 있는 자금 도난 가능성
수정 권장 사항
속성을 무턱대고 복사하는 대신 명시적인 필터링을 사용해야 합니다 .
자바스크립트:// Вместо: return Object.assign(o, a);
// Использовать:
const allowedFields = ['address', 'output', 'pubkey', 'internalPubkey',
'hash', 'signature', 'witness', 'scriptTree', 'redeem'];
const filtered = {};
allowedFields.forEach(field => {
if (a[field] !== undefined) {
filtered[field] = a[field];
}
});
return Object.assign(o, filtered);
이 취약점은 암호화 API에서 최소 권한 원칙을 위반하는 전형적인 예로 , 함수가 안전한 작동에 필요한 것보다 더 많은 데이터를 반환하는 경우입니다. cheatsheetseries.owasp+2
🔴 취약점:return Object.assign(o, a); 모든 객체 속성이 제어되지 않고 복사되는 라인
⚠️ 정보 유출 위험: 이 다이어그램은 개인 키, 시드 및 기타 비밀 데이터가 의도치 않게 결과 객체에 포함될 수 있는 방식을 보여줍니다.
🛡️ 비트코인 탭루트 영향: P2TR 거래의 양자 공격에 대한 특정 취약성으로 인해 개인 키 유출이 심각한 문제로 대두됨
🔒 보호 조치: 입력 데이터 필터링 및 유효성 검사의 필요성 시각화
이 연구 도표는 암호화 코드의 작은 구조적 결함조차도 비트코인 지갑과 사용자 자금의 보안에 치명적인 결과를 초래할 수 있음을 보여줍니다.
안녕하세요. 암호화 라이브러리 환경에서 대량 할당 취약점의 본질을 자세히 설명하고, 최신 모범 사례를 기반으로 이를 안전하게 제거하는 방법을 제시하는 과학 논문을 제안합니다.
비트코인 탭루트(P2TR) 대량 할당 암호화 취약점: 원인, 위험 및 안전한 해결 방법
주석
본 논문은 비트코인 프로토콜의 P2TR 함수 구현 사례를 통해 암호화 라이브러리에서 대량 할당의 구체적인 내용과 위험성을 분석합니다. 특히 Object.assign을 사용한 특정 설계 오류로 인해 개인 키가 심각하게 유출되는 사례를 분석하고, 이를 악용한 예시를 제시하며, 소스 코드 수준에서 안전한 해결책을 제안합니다. 또한, 향후 유사한 공격을 방지하기 위한 권장 사항을 제시합니다.
취약점 발생 원인: 대량 할당 메커니즘
암호화 라이브러리는 종종 개발을 위한 유연한 API를 제공합니다. 그러나 JavaScript 언어의 편리함과 동적인 특성으로 인해 입력 객체의 모든 속성을 출력 결과에 자동으로 복사하는 대량 할당 패턴이 널리 사용되고 있습니다 Object.assign. 이러한 방식은 구조체에 개인 키, 시드 구문 및 기타 비밀 데이터가 포함된 경우 안전하지 않습니다. 실행 시 입력 데이터 Object.assign(o, a) 의 모든 속성이 최종 객체에 포함되기 때문입니다. 입력 데이터에 실수로 또는 우연히 포함된 중요한 비밀 데이터 까지a 모두 최종 객체 에 포함될 수 있습니다.
일반적인 취약 코드 부분:
자바스크립트:return Object.assign(o, a); // Массовое копирование всех свойств, включая приватные данные
예 a 를 들어, 해당 속성이 에서 발견되면 privateKey자동으로 유출됩니다. 암호화폐 지갑의 경우, 이는 사용자의 자금에 대한 통제권이 완전히 무너지는 것을 의미할 수 있습니다.
취약성의 영향에 대한 과학적 분석
그러한 오류는 근본적인 위험을 초래합니다.
- 개인 키가 유출되면 디지털 서명 알고리즘과 관계없이 사용자의 자금에 대한 통제권을 돌이킬 수 없이 상실하게 됩니다.
- Taproot 프로토콜이 약속하는 개인정보 보호는 실현되지 않습니다. 유효하지 않은 데이터로 함수를 호출하는 사람은 누구나 내부 비밀 키를 획득하게 됩니다.
- 대량 사용(SDK/라이브러리) 시, 이 공격은 여러 지갑과 서비스의 체인 손상을 초래할 수 있습니다(예: 전체 JSON 객체를 로깅하는 경우). securityboulevard+1
대량 할당은 CWE-915(동적으로 결정되는 객체 속성의 부적절한 제어 수정 ) 유형의 변형으로, 웹 보안 분야에서 활발하게 악용되고 있습니다(OWASP Top 10).
모범 사례 및 해결 방법: 안전한 패턴
해결책은 전송이 허용되는 속성 목록을 엄격하게 제한하는 것 입니다 . 이를 위해 “화이트리스트”를 생성하고, 미리 정의된 필드만 결과 객체에 포함시킵니다.
안전 패턴:
자바스크립트:// Список полей, которые разрешено переносить
const SAFE_FIELDS = [
'address', 'output', 'pubkey', 'internalPubkey', 'hash',
'signature', 'witness', 'scriptTree', 'redeem', 'redeemVersion'
];
function filterSafeFields(obj, safeFields) {
const filtered = {};
for (const field of safeFields) {
if (Object.prototype.hasOwnProperty.call(obj, field)) {
filtered[field] = obj[field];
}
}
return filtered;
}
// Вместо Object.assign(o, a):
return Object.assign(o, filterSafeFields(a, SAFE_FIELDS));
이 코드는 개인 키, 시드 구문 및 기타 기밀 데이터가 외부 인터페이스에 무단으로 입력되는 것을 방지합니다. lrqa+1
장기적인 안전을 위한 종합적인 권장 사항
- 공개 구조로 집계되는 데이터에 대해서는 항상 명시적인 화이트리스트를 도입해야 합니다.
- 범용 함수 매개변수를 통해 비밀 키를 전달하는 것을 피하고, 이를 위해 가장 엄격한 제어가 가능한 별도의 채널/인터페이스를 사용하십시오.
- API 및 문서 수준에서 개인 데이터와 공개 데이터에 대한 함수의 동작 방식을 명확하게 명시하고, 대량 할당에 대한 정적 코드 분석을 구현하십시오 .
- 사용자 데이터 구조 처리에 중점을 두고 정기적인 구현 감사를 실시하십시오.
결론
본 논문에서 제시하는 대량 할당 취약점은 널리 퍼져 있는 위험한 아키텍처 오류이며, 특히 암호화폐 및 블록체인 환경에서 매우 중요합니다. 화이트리스트 방식을 사용하면 이 문제의 근본 원인을 해결할 수 있으며, 암호화 API 및 라이브러리의 안전한 개발을 위한 최소한의 필수 요소입니다.
최종 과학적 결론
암호화 라이브러리가 필터링이나 유효성 검사 없이 모든 입력 속성을 무작정 복사할 때 발생하는 임계 질량 할당 취약점은 비트코인 암호화폐에 근본적인 보안 위협을 가합니다. 이러한 공격은 개인 키 및 기타 민감한 정보를 심각하게 노출시켜 공격자가 사용자의 모든 디지털 자산에 대한 완전하고 돌이킬 수 없는 접근 권한을 획득하게 할 수 있습니다.
이 취약점을 악용하면 Taproot 및 SegWit과 같은 최신 개선 사항을 포함하여 블록체인의 모든 아키텍처 및 프로토콜 메커니즘을 우회할 수 있으며, 사용자는 즉시 자신의 자금을 관리할 수 없게 됩니다. 대규모 자금 탈취는 암호화 API에 대한 신뢰를 직접적으로 훼손하여 가장 진보된 지갑조차도 예측할 수 없는 결과를 초래하는 공격의 취약한 표적으로 만듭니다.
블록체인이 글로벌 금융에 점차 통합됨에 따라, 이러한 아키텍처 오류를 해결하는 것은 단순한 보안 기술을 넘어 전체 생태계의 정당성을 유지하는 문제로 대두되고 있습니다. 엄격한 입력 데이터 필터링과 정기적인 소스 코드 감사가 완벽하게 구현되지 않는다면, 모든 비트코인 참여자는 암호화폐의 근본 원칙인 보안, 독립성, 신뢰를 훼손할 수 있는 가장 파괴적인 공격의 희생양이 될 위험에 처하게 됩니다.
대량 할당은 단순한 취약점이 아니라 전체 암호화폐 커뮤니티가 직면한 전 세계적인 과제이며, 과학적인 접근 방식, 기술적 규율, 그리고 보안 도구의 지속적인 개선이 필요합니다.
- https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_2_12995184
- https://polynonce.ru/libbitcoin/
- https://www.coindesk.com/ru/tech/2020/09/09/high-severity-bug-in-bitcoin-software-revealed-2-years-after-fix
- https://polynonce.ru/bcoin/
- https://forklog.com/exclusive/vojna-za-p2sh-kak-zavershilas-pervaya-bolshaya-bitva-razrabotchikov-bitkoina
- https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-cve-2018-17144-%D0%B2-%D1%81%D0%B5%D1%82%D0%B8-bitcoin/
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3405-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-deserializesignature-%D0%B2-%D1%81%D0%B5%D1%82%D0%B8-%D0%B1%D0%B8%D1%82%D0%BA%D0%BE%D0%B8%D0%BD-%D0%BA%D1%80%D0%B8%D0 %BF%D1%82%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%BF%D0%BE%D1%81%D0%BB%D0 %B5%D0%B4%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%B8-%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D 0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D 1%8F-%D0%BD%D0%B5%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%82%D0%B5%D0%BB%D 1%8C%D0%BD%D1%8B%D1%85-%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B5%D0%B9-ecdsa%2F
- https://cryptodeep.ru/publication/
- https://habr.com/ru/articles/771980/
- https://habr.com/ru/articles/773412/
- https://www.wiz.io/vulnerability-database/cve/cve-2025-6545
- https://keyhunters.ru/weak-key-attacks-secret-key-leakage-attack-critical-vulnerability-in-private-key-serialization-and-dangerous-signature-forgery-attack-a-threat-to-bitcoin-cryptocurrency-security/
- https://keyhunters.ru/attack-on-private-key-exposure-we-will-consider-exploiting-errors-that-allow-obtaining-a-private-key-this-is-a-very-dangerous-attack-on-bitcoin-wallets-through-an-opcode-numbering-error-in-bitcoinli/
- https://deepsource.com/directory/javascript/issues/JS-D025
- https://deepsource.com/directory/javascript/issues/JS-D026
- https://stackoverflow.com/questions/55805843/what-is-the-case-of-using-buffer-allocunsafe-and-buffer-alloc
- https://deepsource.com/directory/javascript/issues/JS-D025
- https://deepsource.com/directory/javascript/issues/JS-D026
- https://hexdocs.pm/bitcoin/Bitcoin.Base58Check.html
- https://snyk.io/blog/exploiting-buffer/
- https://www.npmjs.com/package/safe-buffer
- https://www.clouddefense.ai/code/javascript/example/bs58check
- https://habr.com/en/articles/880798/
- https://www.bacancytechnology.com/blog/node-js-memory-leaks
- https://nvd.nist.gov/vuln/detail/CVE-2018-7167
- http://paper.ijcsns.org/07_book/202112/20211230.pdf
- https://ethglobal.com/showcase/polaris-dac2c
- https://dev.to/alex_aslam/memory-leaks-in-nodejs-how-we-hunted-down-and-fixed-a-2gb-leak-in-production-2knk
- https://surface.syr.edu/cgi/viewcontent.cgi?article=1095&context=eecs
- https://dash.harvard.edu/bitstreams/7312037c-8ef9-6bd4-e053-0100007fdf3b/download
- https://stackoverflow.com/questions/52165333/deprecationwarning-buffer-is-deprecated-due-to-security-and-usability-issues
- https://dockeyhunt.com/enhancing-bitcoin-transactions-with-bitcoinjs-lib-a-comprehensive-overview/
- https://www.cobalt.io/blog/node-js-vulnerabilities
- https://github.com/stdlib-js/buffer-alloc-unsafe
- https://github.com/bitcoinjs/bitcoinjs-lib
- https://stackoverflow.com/questions/5733665/how-to-prevent-memory-leaks-in-node-js
- https://deepsource.com/directory/javascript/issues/JS-D025
- https://deepsource.com/directory/javascript/issues/JS-D026
- https://stackoverflow.com/questions/55805843/what-is-the-case-of-using-buffer-allocunsafe-and-buffer-alloc
- https://hexdocs.pm/bitcoin/Bitcoin.Base58Check.html
- https://mojoauth.com/binary-encoding-decoding/base58-with-nodejs/
- https://www.ledger.com/academy/series/enter-the-donjon/episode-2-side-channel-attacks
- https://crypto.stanford.edu/timings/paper.pdf
- https://keyhunters.ru/script-forgery-attack-redeem-script-witness-script-replay-or-substitution-attack-critical-vulnerability-in-bitcoin-p2sh-p2wsh-script-processing-threat-of-cryptographic-forgery-and-attack/
- https://www.scichart.com/blog/debugging-javascript-webassembly-memory-leaks/
- https://www.trevorlasn.com/blog/common-causes-of-memory-leaks-in-javascript
- https://bitcoincashresearch.org/t/p2sh32-a-long-term-solution-for-80-bit-p2sh-collision-attacks/750
- https://www.nccgroup.com/us/research-blog/a-brief-review-of-bitcoin-locking-scripts-and-ordinals/
- https://discovery.ucl.ac.uk/10060286/1/versio_IACR_2.pdf
- https://www.qrypt.com/FAQ/what-are-the-quantum-threats-to-cold-storage-and-p2sh-or-p2pkh-in-crypto-wallets/
- https://en.bitcoin.it/wiki/Pay_to_script_hash
- https://christian-rossow.de/publications/btcsteal-raid2018.pdf
- https://coinshares.com/dk-en/resources/research/quantum-securing-bitcoin-really-isn-t-that-hard/
- https://www.certik.com/resources/blog/exploring-psbt-in-bitcoin-defi-security-best-practices
- https://www.reddit.com/r/CryptoCurrency/comments/1lp46ol/private_key_leaked_in_web3_app_i_made/
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://komodoplatform.com/en/academy/p2sh-pay-to-script-hash/
- https://bitcointalk.org/index.php?topic=5352665.20
- https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID3184130_code2090306.pdf?abstractid=3184130&mirid=1
- http://bitcoinwiki.org/wiki/pay-to-script-hash
- https://stacker.news/items/781356
- https://forklog.com/en/chaincode-labs-sizes-up-the-quantum-threat-to-bitcoin/
- https://trezor.io/learn/advanced/standards-proposals/pay-to-script-hash-p2sh
- https://github.com/topics/private-key
- https://learnmeabitcoin.com/technical/script/p2sh/
- https://en.bitcoin.it/wiki/Allprivatekeys
- https://attacksafe.ru/bitcoinjs-lib/
- https://forklog.com/en/the-battle-for-p2sh-how-the-first-major-bitcoin-developer-war-ended/
- https://www.coinglass.com/news/15292
- https://blog.appsignal.com/2022/09/28/minimize-heap-allocations-in-nodejs.html
- https://github.com/pastelnetwork/bitcoinjs-lib-pastel
- https://cointelegraph.com/news/5-strategies-to-mitigate-side-channel-attacks
- https://bun.com/blog/debugging-memory-leaks
- https://bitcointalk.org/index.php?topic=5270543.0
- https://thesis.dial.uclouvain.be/entities/masterthesis/d70f0610-b0a7-47a9-9326-de3c9fbfe9ef
- https://stackoverflow.com/questions/50251965/nodejs-memory-leak-with-buffers
- https://www.reddit.com/r/crypto/comments/xn9how/how_practical_are_side_channel_attacks/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Memory_management
- https://www.binance.com/en/square/post/1161291
- https://stackoverflow.com/questions/50069628/how-to-generate-a-nonce-in-node-js
- https://github.com/pocketbase/pocketbase/discussions/4530
- https://www.npmjs.com/package/bs58check-ts
- https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/nonce
- https://pypi.org/project/base58/
- https://nodejs.org/api/buffer.html
- https://dev.to/icesofty/understanding-the-concept-of-the-nonce-sha3-256-in-a-blockchain-with-nodejs-205h
- https://snyk.io/blog/exploiting-buffer/
- https://nodejs.org/api/crypto.html
- https://github.com/bitcoinjs/bs58check/issues
- https://www.wiz.io/vulnerability-database/cve/cve-2025-6545
- https://www.reddit.com/r/node/comments/1c2dulv/whats_so_dangerous_about_nodejs_cryptography/
- https://stackoverflow.com/questions/4395706/base64-encoding-that-doesnt-use-plus-or-equals-characters
- https://github.com/stdlib-js/buffer-alloc-unsafe
- https://github.com/nodejs/node/issues/52131
- https://deepsource.com/directory/javascript/issues/JS-D025
- https://deepsource.com/directory/javascript/issues/JS-D026
- https://www.wiz.io/vulnerability-database/cve/cve-2025-6545
- https://attacksafe.ru/bitcoinjs-lib/
- https://keyhunters.ru/weak-key-attacks-secret-key-leakage-attack-critical-vulnerability-in-private-key-serialization-and-dangerous-signature-forgery-attack-a-threat-to-bitcoin-cryptocurrency-security/
- https://keyhunters.ru/attack-on-private-key-exposure-we-will-consider-exploiting-errors-that-allow-obtaining-a-private-key-this-is-a-very-dangerous-attack-on-bitcoin-wallets-through-an-opcode-numbering-error-in-bitcoinli/
- https://www.ledger.com/academy/series/enter-the-donjon/episode-2-side-channel-attacks
- https://exploitdog.ru/cve/github/GHSA-h7cp-r72f-jxh6
- https://vulnerability.circl.lu/vuln/ghsa-h7cp-r72f-jxh6
- https://github.com/advisories/GHSA-h7cp-r72f-jxh6
- https://www.npmjs.com/package/safe-buffer
- https://habr.com/en/articles/880798/
- http://nodesource.com/blog/node-js-security-release-summary-august-2018/
- https://arxiv.org/html/2503.16248v3
- https://github.com/advisories/GHSA-7mc2-6phr-23xc
- https://keyhunters.ru/critical-vulnerabilities-of-private-keys-and-rpc-authentication-in-bitcoinlib-analysis-of-security-risks-and-attack-methods-on-bitcoin-cryptocurrency/
- https://nvd.nist.gov/vuln/detail/CVE-2025-38079
- https://securelist.com/lazarus-apt-steals-crypto-with-a-tank-game/114282/
- https://attacksafe.ru/ultra/
- https://www.wiz.io/vulnerability-database/cve/cve-2025-22874
- https://www.sciencedirect.com/science/article/pii/S0167404820303886
- https://src.opensuse.org/nodejs/nodejs16/commit/1272fd04b8dd367f23f438d366f905c90b3488c38d0c61cd43cac7ece7691ce0
- https://en.wikipedia.org/wiki/WannaCry_ransomware_attack
- https://github.com/bitcoinjs/tiny-secp256k1/security/advisories/GHSA-7mc2-6phr-23xc
- https://cryptodeeptech.ru/private-key-debug/
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/