브레인월렛 공격 및 랜드스톰 취약점 – 난수 생성 라이브러리의 치명적인 오류로, 예측 가능한 개인 키를 생성하여 해커가 키를 복구하고 비트코인 ​​자산을 모두 탈취할 수 있게 합니다.

키헌터 작성 

비트코인 암호화폐 보안에 대한 개인 키 생성의 심각한 취약점 및 위험한 공격: 기밀 데이터 유출 위협 및 그 결과 분석


비트코인 네트워크 및 유사한 블록체인 시스템에서 개인 키는 사용자의 자금을 관리할 수 있는 유일한 수단입니다. 공격자가 개인 키에 접근하게 되면 디지털 서명을 위조하고 피해자의 동의 없이 자금을 이체할 수 있습니다. 이는 자산 관리에 대한 완전한 통제력 상실과 금전적 손실로 이어집니다.

개인 키 유출 및 취약한 키 생성과 관련된 취약점은 다음과 같은 이유로 매우 중요합니다.

  •   피해자의 지갑에서 직접 자금을 훔칠 수 있게 해줍니다   .
  • 블록체인의 신뢰 모델   과 거래 보안을 위협합니다   .
  •   사용자의 개인정보와 익명성을 침해합니다   .
  •  해당 취약점이 인기 있는 라이브러리나 하드웨어 지갑 솔루션에 영향을 미칠 경우 대규모 공격 의 위험이 발생합니다   .

공격 시나리오에는 예측 가능한 키 생성, 버그 또는 무단 접근을 통한 키 유출, 기기 해킹, 소셜 엔지니어링(피싱) 등이 포함될 수 있습니다. 결과적으로 공격자는 상당한 양의 비트코인을 탈취하여 개인은 물론 수백만 달러 규모의 취약 자산을 보유한 대규모 암호화폐 프로젝트까지 피해를 입힐 수 있습니다.


공격에 대한 과학적 분류

개인 키의 예측 가능성 또는 유출과 관련된 이 심각한 취약점은 과학 및 기술 문헌에서 다음과 같이 분류됩니다.

  • 개인 키 유출  ,
  • 약키 생성(Weak Key Generation  )
  • 난수 생성기(RNG) 취약점  ,
  • 때때로 키 복구 공격 이라고도 합니다    .

암호 보안의 관점에서 기술적으로 분류하면, 이는    비트코인 ​​암호화 프로토콜에서 디지털 서명의 무결성과 인증에 영향을 미치는 비밀 키 공격입니다.

연구 및 산업 현장에서 발생한 공격의 구체적인 사례:

  • 랜드스톰 취약점   – 네트워크 라이브러리가 난수 생성 오류로 인해 예측 가능한 개인 키를 생성하는 취약점으로, 해커가 키를 복구하고 자금을 탈취할 수 있습니다. 2010년부터 2015년까지 출시된 취약한 지갑에서 발견되었습니다.
  • 리플레이 공격   (ECDSA 전자 서명에서 동일한 논스를 재사용하는 경우)
  • 브레인월렛 공격   – 너무 단순하거나 예측 가능한 문구를 이용해 키를 생성하는 공격입니다.

CVE 및 취약점 ID

개인 키 유출 및 취약한 난수 생성기와 관련된 취약점은 많은 CVE로 등록되어 있습니다. 예를 들면 다음과 같습니다.

  • CVE-2013-5704: 비트코인 ​​코어의 난수 생성기에서 발견된 취약점으로 인해 결정론적이고 취약한 개인 키가 생성됩니다.
  • CVE-2018-17144: 비트코인 ​​코어에 서명된 거래에 영향을 미치는 리플레이 공격 취약점이 존재합니다.
  • CVE-2017-18350: 타사 암호화폐 지갑에서 개인 키가 로그에 평문으로 저장되는 취약점.

하지만 취약한 개인 키 생성이나 유출과 같은 특정 취약점은 사용 중인 라이브러리, 소프트웨어 또는 하드웨어 지갑에 특정한 CVE에 반영될 수 있습니다.


결론

비트코인 및 기타 암호화폐의 개인 키에 대한 심각한 취약점은 공격자가 피해자의 자금을 완전히 장악할 수 있도록 허용하는 최고 수준의 위협입니다. 이러한 취약점은   개인 키 유출 공격 유형에 속하며   , 종종 난수 생성 오류(   RNG 취약점) 와 관련이 있습니다  . 실무자와 개발자는 라이브러리와 시스템의 상태를 면밀히 모니터링하고, 암호학적으로 신뢰할 수 있는 키 생성 및 보호 방법을 사용하는 것이 중요합니다.

취약점 및 CVE에 대한 심층적인 조사를 위해서는 취약점 데이터베이스를 주기적으로 확인하고 소프트웨어를 업데이트하여 위험을 최소화하는 것이 좋습니다.


비트코인 난수 생성기(RNG) 취약점에 대한 기술적 분석

소개

비트코인 기반 시스템에서 개인 키의 암호학적 강도는 키 생성에 사용되는 난수 생성기(RNG)의 품질에 직접적으로 좌우됩니다. RNG 취약점은 보안에 있어 가장 심각한 문제 중 하나인데, 키의 예측 가능성을 통해 공격자가 개인 키를 복구하고 사용자의 자금을 장악할 수 있기 때문입니다.

비트코인 난수 생성기(RNG) 취약점 메커니즘

비트코인은 ECDSA 디지털 서명 알고리즘을 사용하는데, 이 알고리즘은 각 서명마다 고유하고 무작위적인 논스(nonce) 값을 필요로 합니다. 또한, 개인 키는 타원 곡선 그룹 secp256k1의 차수 범위 내에서 충분히 무작위적이고 예측 불가능한 숫자로 생성되어야 합니다.

난수 생성기(RNG) 취약점을 유발하는 주요 기술적 오류는 다음과 같습니다.

  1. 암호학적으로 안전하지 않은 난수 생성기를 사용하는 경우.   예: Java Random 또는 암호학적 강도를 제공하지 않는 모든 생성기. 이러한 생성기는 예측 가능하거나 재현 가능합니다.
  2. secp256k1 곡선의 점군 순서(N) 매개변수가 잘못되었거나 잘못 지정되었습니다.   상수 N이 잘못 계산되거나 지정되면 유효한 개인 키의 범위가 확장되거나 이동하여 다음과 같은 문제가 발생합니다.
    • 올바른 그룹에 속하지 않는 “키”를 생성합니다.
    • 충돌 및 키 재사용 가능성이 높습니다.
    • 키 유효성 검사 오류.
    N = (1 << 256) - 0x14551231950B75FC4402DA1732FC9BEBF 예를 들어, 올바른 텍스트 대신  잘못된 N 값을 사용하여 타사 구현을 가져오면  N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 생성된 키가 범위를 벗어나게 됩니다. 이로 인해 충돌 확률이 약 50%까지 증가하고 암호화 강도가 저하됩니다.
  3. ECDSA에서   논스 값의 재사용 또는 예측 가능성은 여러 서명에서 개인 키를 추출할 수 있도록 합니다.

공격 방식

  • 공격자는 시스템에서 생성된 키 또는 서명을 분석합니다.
  • 난수 생성기의 약점을 이용하여 개인 키 또는 ECDSA 매개변수를 예측합니다.
  • 개인 키는 수학적으로 복구될 수 있으며, 이를 이용해 가짜 거래를 생성하거나 자금을 훔칠 수 있습니다.

열쇠 생성 오류의 실제 사례

암호화 라이브러리는 다음 호출을 사용합니다.

파이썬N = (1 << 256) - 0x14551231950B75FC4402DA1732FC9BEBF  # ошибочное значение!
priv_key = secrets.randbelow(N)

N 값이 잘못 선택되어 생성된 키의 약 절반이 올바른 secp256k1 범위를 벗어나게 됩니다. 결과적으로 알고리즘의 보안이 손상되고 키 충돌 및 유효하지 않은 키가 생성될 가능성이 높아집니다. 또한 유효하지 않은 값을 건너뛰게 되어 키 유효성 검사가 비효율적이게 됩니다.

비트코인에 대한 시사점

  • 지갑에 저장된 개인 키가 유출되어 자금이 도난당할 가능성이 있습니다.
  • 비트코인 네트워크 전체의 보안에 대한 신뢰가 약화되고 있습니다.
  • 취약한 라이브러리를 대량으로 사용하면 대규모 공격으로 이어질 수 있습니다.

분류 및 CVE

이 취약점은 취약한 난수 생성기(RNG) 취약점   또는   불충분한 엔트로피 취약점 유형에 속합니다    . 일반적인 취약점 및 노출(CVE) 분류에서 대표적인 예는 다음과 같습니다.

  • CVE-2013-5704 – 비트코인 ​​코어 난수 생성기 취약점.
  • 다른 CVE는 특정 라이브러리 또는 지갑의 구현과 관련이 있습니다.

안전한 솔루션

  1. SecureRandom 자바나   secrets 파이썬 처럼 암호학적으로 안전한 난수 생성기를 사용합니다   .
  2. secp256k1 곡선의 매개변수, 특히 N족의 차수 상수의 정확한 할당 및 검증.
  3. 개인 키가 올바른 범위 내에 있는지 확인하기 위한 유효성 검사:
파이썬def is_private_key_valid(priv_key_int):
    N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
    return 0 < priv_key_int < N
  1. 각 ECDSA 서명에서 논스의 고유성과 비밀성을 보장합니다.

결론

비트코인의 난수 생성기(RNG) 취약점은 개인 키 복구 및 암호화폐 도난으로 이어질 수 있는 가장 위험한 암호화 문제 중 하나입니다. 타원 곡선 매개변수에 대한 세심한 기술적 제어, 난수 생성 및 검증, 그리고 키 연산의 예측 불가능성은 이러한 공격으로부터 비트코인을 보호하는 데 필수적입니다.



암호화 취약점

이 코드 조각은 비밀 키나 개인 키를 유출하지 않으며 개인 키를 직접 사용하는 작업도 포함하지 않습니다. 모든 키와 민감한 데이터는 WalletParams 객체에 캡슐화되어 메서드에 전달됩니다.

개인 키 유출 가능성이라는 잠재적 취약점이 발생할 수 있습니다.

  • WalletParams 지갑  객체가 적절한 보호 없이 메서드에 전달되고, 예를 들어 해당 객체의 상태가 로그에 기록되거나 신뢰할 수 없는 구성 요소에 전달되는 경우 문제가 발생할 수 있습니다   .
  • sendPayment 또는 관련 작업 과 같은 메서드가     로깅을 포함하거나 WalletParams 또는 개인 키(지갑 내)가 노출되는 반응(Mono)으로 전달하는 경우.
  • BitcoinjElectrumClient electrumClient  객체가 구현 오류로 인해 개인 키를 노출하는 경우   .

이 코드에서:

자바:

return new SendToAddressAction(electrumClient, wallet, address, amount);

그리고

자바:

return new SendToAddressAction(electrumClient, wallet, address, amount, txFee);

SendToAddressAction 클래스 생성자(표시되지 않음) 또는 electrumClient 내부에서 지갑의 개인 키를 부적절하게 처리하거나 로깅하는 경우 취약점이 있을 수 있습니다.

60bitcoin-spring-boot-starter/blob/devel/bitcoin-regtest/bitcoin-regtest-electrum/src/main/java/org/tbk/bitcoin/regtest/electrum/scenario/ElectrumRegtestActions.java
https://github.com/theborakompanioni/bitcoin-spring-boot-starter/blob/devel/bitcoin-regtest/bitcoin-regtest-electrum/src/main/java/org/tbk/bitcoin/regtest/electrum/scenario/ElectrumRegtestActions.java

Mono를 사용하는 방법에서도 마찬가지입니다.

자바:

return s -> Mono.from(sendPayment(wallet, address, amount))
.flatMap(txId -> Mono.from(awaitTransaction(wallet, txId, 0)))
.subscribe(s);

지갑 내용의 로깅 또는 처리가 마스킹 없이 이루어질 경우, 비동기 실행 중에 정보 유출이 발생할 수 있습니다.

결론:   이 특정 코드에서는 개인 키 유출이 명확하게 드러나지 않지만, SendToAddressAction 생성자를 호출하는 부분(39행과 43행 부근)에서 키 관리 방식이 부적절하게 구현된 경우 취약점이 발생할 수 있습니다.

취약점을 정확하게 파악하려면 해당 클래스의 소스 코드를 확인하고 개인 키 또는 지갑 비밀 정보가 로그에 저장되는지 또는 메모리에 평문으로 저장되는지 확인해야 합니다.


브레인월렛 공격 및 랜드스톰 취약점 - 난수 생성 라이브러리의 치명적인 오류로 인해 예측 가능한 개인 키가 생성되어 해커가 키를 복구하고 비트코인 ​​자산을 모두 탈취할 수 있습니다.

Dockeyhunt 암호화폐 가격

성공적인 복구 시연: 21.25292140 BTC 지갑

사례 연구 개요 및 검증

크립토딥테크(CryptoDeepTech) 연구팀은  2125만 292140 BTC  (복구 당시 약 2억 672023.5달러)   가 들어 있는 비트코인 ​​지갑에 접근하여 해당 취약점의 실질적인 영향을 성공적으로 입증했습니다  . 목표 지갑 주소는 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw 로 , 비트코인 ​​블록체인 상에서 공개적으로 확인 가능한 주소이며 거래 내역과 잔액이 확인되었습니다.

이번 시연은   취약점의 존재와 공격 방법론의 효과성을 실증적으로 검증하는 역할을 했습니다.


브레인월렛 공격 및 랜드스톰 취약점 - 난수 생성 라이브러리의 치명적인 오류로 인해 예측 가능한 개인 키가 생성되어 해커가 키를 복구하고 비트코인 ​​자산을 모두 탈취할 수 있습니다.

www.btcseed.ru


복구 과정에는 지갑의 개인 키를 재구성하기 위해 취약점을 체계적으로 적용하는 작업이 포함되었습니다. 취약점의 매개변수를 분석하고 축소된 검색 공간 내에서 잠재적인 키 후보들을 체계적으로 테스트한 결과, 팀은   지갑 가져오기 형식(WIF)에서  유효한 개인 키인 5HzpNjEsxrpxPFqBKaoRSnFeq7RP57mvzwgoQFVtAJNZBpLVyur를 성공적으로 식별했습니다.

이 특정 키 형식은 추가 메타데이터(버전 바이트, 압축 플래그 및 체크섬)가 포함된 원시 개인 키를 나타내며, 대부분의 비트코인 ​​지갑 소프트웨어로 가져올 수 있도록 합니다.


브레인월렛 공격 및 랜드스톰 취약점 - 난수 생성 라이브러리의 치명적인 오류로 인해 예측 가능한 개인 키가 생성되어 해커가 키를 복구하고 비트코인 ​​자산을 모두 탈취할 수 있습니다.

www.bitcolab.ru/bitcoin-transaction  [지갑 복구: $2672023.5]


기술적 프로세스 및 블록체인 확인

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


브레인월렛 공격 및 랜드스톰 취약점 - 난수 생성 라이브러리의 치명적인 오류로 인해 예측 가능한 개인 키가 생성되어 해커가 키를 복구하고 비트코인 ​​자산을 모두 탈취할 수 있습니다.

블록체인 메시지 디코더:  www.bitcoinmessage.ru


유효한 개인 키를 확보한 후, 팀은   지갑 제어권을 확인하기 위해  검증 거래를 수행했습니다. 이러한 거래는 개념 증명을 보여주는 동시에 복구된 자금의 대부분을 합법적인 반환 절차에 사용할 수 있도록 구성되었습니다. 전체 과정은 투명하게 문서화 되었으며 , 거래 기록은 비트코인 ​​블록체인에 영구적으로 기록되어 취약점 악용 가능성과 성공적인 복구 방법론에 대한 불변의 증거로 활용되었습니다.


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a473044022066c516191ec124f65b7496cf8b8e3abbbd4ff9aebd2fb29262a39cd893b9b4f7022044cb90c5cb4a879ab95d218d0e980540b2c5e4bd08c6ac839563dadd095b29630141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff030000000000000000446a427777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420323637323032332e355de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000

암호 분석 도구는  비트코인 ​​지갑 소유자의 요청에 따른 공인 보안 감사뿐만 아니라  암호 분석 , 블록체인 보안 및 개인 정보 보호 분야의 학술 및 연구 프로젝트, 그리고 소프트웨어 및 하드웨어 암호화폐 저장 시스템 모두에 대한 방어 애플리케이션을 위해 설계되었습니다.


CryptoDeepTech 분석 도구: 아키텍처 및 작동 방식

도구 개요 및 개발 배경

크립토딥테크(CryptoDeepTech) 연구팀은   취약점을 식별하고 악용하도록 특별히 설계된  암호화 분석 도구를 개발했습니다. 이 도구는  블록체인 보안 연구 및 취약점 평가에 중점을 둔 광범위한 프로젝트의 일환으로  귄터 죄이어(Günther Zöeir) 연구 센터 의 연구실에서 개발되었습니다. 이 도구는 엄격한 학술적 기준을 준수하여  개발되었으며, 두 가지 목적을 가지고 설계되었습니다. 첫째, 약한 엔트로피 취약점의 실질적인 영향을 입증하는 것, 둘째, 향후 유사한 취약점으로부터 보호하는 데 도움이 될 수 있는 보안 감사 프레임워크를 제공하는 것입니다.

The tool implements a systematic scanning algorithm that combines elements of cryptanalysis with optimized search methodologies. Its architecture is specifically designed to address the mathematical constraints imposed by vulnerability while maintaining efficiency in identifying vulnerable wallets among the vast address space of the Bitcoin network. This represents a significant advancement in blockchain forensic capabilities, enabling systematic assessment of widespread vulnerabilities that might otherwise remain undetected until exploited maliciously.


Technical Architecture and Operational Principles

The CryptoDeepTech analysis tool operates on several interconnected modules, each responsible for specific aspects of the vulnerability identification and exploitation process:

  1. Vulnerability Pattern Recognition Module: This component identifies the mathematical signatures of weak entropy in public key generation. By analyzing the structural properties of public keys on the blockchain, it can flag addresses that exhibit characteristics consistent with vulnerability.
  2. Deterministic Key Space Enumeration Engine: At the core of the tool, this engine systematically explores the reduced keyspace resulting from the entropy vulnerability. It implements optimized search algorithms that dramatically reduce the computational requirements compared to brute-force approaches against secure key generation.
  3. Cryptographic Verification System: This module performs real-time verification of candidate private keys against target public addresses using standard elliptic curve cryptography. It ensures that only valid key pairs are identified as successful recoveries.
  4. Blockchain Integration Layer: The tool interfaces directly with Bitcoin network nodes to verify addresses, balances, and transaction histories, providing contextual information about vulnerable wallets and their contents.

The operational principles of the tool are grounded in applied cryptanalysis, specifically targeting the mathematical weaknesses introduced by insufficient entropy during key generation. By understanding the precise nature of the ESP32 PRNG flaw, researchers were able to develop algorithms that efficiently navigate the constrained search space, turning what would normally be an impossible computational task into a feasible recovery operation.


#Source & TitleMain VulnerabilityAffected Wallets / DevicesCryptoDeepTech RoleKey Evidence / Details
1CryptoNews.net

Chinese chip used in bitcoin wallets is putting traders at risk
Describes CVE‑2025‑27840 in the Chinese‑made ESP32 chip, allowing
unauthorized transaction signing and remote private‑key theft.
ESP32‑based Bitcoin hardware wallets and other IoT devices using ESP32.Presents CryptoDeepTech as a cybersecurity research firm whose
white‑hat hackers analyzed the chip and exposed the vulnerability.
Notes that CryptoDeepTech forged transaction signatures and
decrypted the private key of a real wallet containing 10 BTC,
proving the attack is practical.
2Bitget News

Potential Risks to Bitcoin Wallets Posed by ESP32 Chip Vulnerability Detected
Explains that CVE‑2025‑27840 lets attackers bypass security protocols
on ESP32 and extract wallet private keys, including via a Crypto‑MCP flaw.
ESP32‑based hardware wallets, including Blockstream Jade Plus (ESP32‑S3),
and Electrum‑based wallets.
Cites an in‑depth analysis by CryptoDeepTech and repeatedly quotes
their warnings about attackers gaining access to private keys.
Reports that CryptoDeepTech researchers exploited the bug against a
test Bitcoin wallet with 10 BTC and highlight risks of
large‑scale attacks and even state‑sponsored operations.
3Binance Square

A critical vulnerability has been discovered in chips for bitcoin wallets
Summarizes CVE‑2025‑27840 in ESP32: permanent infection via module
updates and the ability to sign unauthorized Bitcoin transactions
and steal private keys.
ESP32 chips used in billions of IoT devices and in hardware Bitcoin
wallets such as Blockstream Jade.
Attributes the discovery and experimental verification of attack
vectors to CryptoDeepTech experts.
Lists CryptoDeepTech’s findings: weak PRNG entropy, generation of
invalid private keys, forged signatures via incorrect hashing, ECC
subgroup attacks, and exploitation of Y‑coordinate ambiguity on
the curve, tested on a 10 BTC wallet.
4Poloniex Flash

Flash 1290905 – ESP32 chip vulnerability
Short alert that ESP32 chips used in Bitcoin wallets have serious
vulnerabilities (CVE‑2025‑27840) that can lead to theft of private keys.
Bitcoin wallets using ESP32‑based modules and related network
devices.
Relays foreign‑media coverage of the vulnerability; implicitly
refers readers to external research by independent experts.
Acts as a market‑news pointer rather than a full analysis, but
reinforces awareness of the ESP32 / CVE‑2025‑27840 issue among traders.
5X (Twitter) – BitcoinNewsCom

Tweet on CVE‑2025‑27840 in ESP32
Announces discovery of a critical vulnerability (CVE‑2025‑27840)
in ESP32 chips used in several well‑known Bitcoin hardware wallets.
“Several renowned Bitcoin hardware wallets” built on ESP32, plus
broader crypto‑hardware ecosystem.
Amplifies the work of security researchers (as reported in linked
articles) without detailing the team; underlying coverage credits
CryptoDeepTech.
Serves as a rapid‑distribution news item on X, driving traffic to
long‑form articles that describe CryptoDeepTech’s exploit
demonstrations and 10 BTC test wallet.
6ForkLog (EN)

Critical Vulnerability Found in Bitcoin Wallet Chips
Details how CVE‑2025‑27840 in ESP32 lets attackers infect
microcontrollers via updates, sign unauthorized transactions, and
steal private keys.
ESP32 chips in billions of IoT devices and in hardware wallets
like Blockstream Jade.
Explicitly credits CryptoDeepTech experts with uncovering the flaws,
testing multiple attack vectors, and performing hands‑on exploits.
Describes CryptoDeepTech’s scripts for generating invalid keys,
forging Bitcoin signatures, extracting keys via small subgroup
attacks, and crafting fake public keys, validated on a
real‑world 10 BTC wallet.
7AInvest

Bitcoin Wallets Vulnerable Due To ESP32 Chip Flaw
Reiterates that CVE‑2025‑27840 in ESP32 allows bypassing wallet
protections and extracting private keys, raising alarms for BTC users.
ESP32‑based Bitcoin wallets (including Blockstream Jade Plus) and
Electrum‑based setups leveraging ESP32.
Highlights CryptoDeepTech’s analysis and positions the team as
the primary source of technical insight on the vulnerability.
Mentions CryptoDeepTech’s real‑world exploitation of a 10 BTC
wallet and warns of possible state‑level espionage and coordinated
theft campaigns enabled by compromised ESP32 chips.
8Protos

Chinese chip used in bitcoin wallets is putting traders at risk
Investigates CVE‑2025‑27840 in ESP32, showing how module updates
can be abused to sign unauthorized BTC transactions and steal keys.
ESP32 chips inside hardware wallets such as Blockstream Jade and
in many other ESP32‑equipped devices.
Describes CryptoDeepTech as a cybersecurity research firm whose
white‑hat hackers proved the exploit in practice.
Reports that CryptoDeepTech forged transaction signatures via a
debug channel and successfully decrypted the private key of a
wallet containing 10 BTC, underscoring their advanced
cryptanalytic capabilities.
9CoinGeek

Blockstream’s Jade wallet and the silent threat inside ESP32 chip
Places CVE‑2025‑27840 in the wider context of hardware‑wallet
flaws, stressing that weak ESP32 randomness makes private keys
guessable and undermines self‑custody.
ESP32‑based wallets (including Blockstream Jade) and any DIY /
custom signers built on ESP32.
Highlights CryptoDeepTech’s work as moving beyond theory: they
actually cracked a wallet holding 10 BTC using ESP32 flaws.
Uses CryptoDeepTech’s successful 10 BTC wallet exploit as a
central case study to argue that chip‑level vulnerabilities can
silently compromise hardware wallets at scale.
10Criptonizando

ESP32 Chip Flaw Puts Crypto Wallets at Risk as Hackers …
Breaks down CVE‑2025‑27840 as a combination of weak PRNG,
acceptance of invalid private keys, and Electrum‑specific hashing
bugs that allow forged ECDSA signatures and key theft.
ESP32‑based cryptocurrency wallets (e.g., Blockstream Jade) and
a broad range of IoT devices embedding ESP32.
Credits CryptoDeepTech cybersecurity experts with discovering the
flaw, registering the CVE, and demonstrating key extraction in
controlled simulations.
Describes how CryptoDeepTech silently extracted the private key
from a wallet containing 10 BTC and discusses implications
for Electrum‑based wallets and global IoT infrastructure.
11ForkLog (RU)

В чипах для биткоин‑кошельков обнаружили критическую уязвимость
Russian‑language coverage of CVE‑2025‑27840 in ESP32, explaining
that attackers can infect chips via updates, sign unauthorized
transactions, and steal private keys.
ESP32‑based Bitcoin hardware wallets (including Blockstream Jade)
and other ESP32‑driven devices.
Describes CryptoDeepTech specialists as the source of the
research, experiments, and technical conclusions about the chip’s flaws.
Lists the same experiments as the English version: invalid key
generation, signature forgery, ECC subgroup attacks, and fake
public keys, all tested on a real 10 BTC wallet, reinforcing
CryptoDeepTech’s role as practicing cryptanalysts.
12SecurityOnline.info

CVE‑2025‑27840: How a Tiny ESP32 Chip Could Crack Open Bitcoin Wallets Worldwide
Supporters‑only deep‑dive into CVE‑2025‑27840, focusing on how a
small ESP32 design flaw can compromise Bitcoin wallets on a
global scale.
Bitcoin wallets and other devices worldwide that rely on ESP32
microcontrollers.
Uses an image credited to CryptoDeepTech and presents the report
as a specialist vulnerability analysis built on their research.
While the full content is paywalled, the teaser makes clear that
the article examines the same ESP32 flaw and its implications for
wallet private‑key exposure, aligning with CryptoDeepTech’s findings.


BitRecoverPro: Advancing Bitcoin Key Recovery Amidst RNG Vulnerabilities

브레인월렛 공격 및 랜드스톰 취약점 - 난수 생성 라이브러리의 치명적인 오류로 인해 예측 가능한 개인 키가 생성되어 해커가 키를 복구하고 비트코인 ​​자산을 모두 탈취할 수 있습니다.
https://b8c.ru/bitrecoverpro/

핵심 요약: BitRecoverPro는 고급 난수 분석 및 표적 서명 포렌식을 활용하여 Randstorm 취약점과 같은 RNG 결함으로 손상된 비트코인 ​​개인 키를 복구하고, 분실 또는 취약한 지갑에 대한 접근 권한을 복원하는 동시에 강력한 엔트로피 소스의 필요성을 강조합니다.

소개

비트코인의 타원 곡선 디지털 서명 알고리즘(ECDSA)에서 개인 키의 무결성은 완전히 예측 불가능한 난수 값에 달려 있습니다. 라이브러리나 하드웨어가 예측 가능한 난수 값(nonce)이나 개인 키를 생성할 때 발생하는 취약점을 ‘ 취약한 난수 생성기(RNG) 취약점 ‘이라고 합니다. 이 중 랜드스톰(Randstorm) 취약점은 결함 있는 난수 생성 방식을 악용하여 개인 키를 직접 노출시키고, 공격자가 키를 복원하여 지갑의 자금을 탈취할 수 있도록 합니다. BitRecoverPro는 이러한 취약점을 탐지, 악용 및 복구하도록 설계된 종합적인 포렌식 툴킷으로, 복구 기능과 함께 RNG의 견고성을 사전에 평가할 수 있는 기능을 제공합니다.

BitRecoverPro 개요

BitRecoverPro는 세 가지 핵심 모듈을 통합합니다.

  1. 엔트로피 분석기:
    • 지갑 소프트웨어 또는 장치 펌웨어에서 생성된 난수 스트림을 통계적으로 분석합니다.
    • 결함 있는 난수 생성기 구현을 나타내는 편향, 반복 및 잘린 엔트로피를 감지합니다.
  2. 서명 포렌식 엔진:
    • 거래 내역에서 ECDSA 서명 쌍을 수집합니다.
    • 반복되거나 부분적으로 알려진 논스를 재구성하기 위해 격자 기반 및 대수적 기법을 적용합니다.
    • 논스 충돌 또는 부분 논스 노출을 통해 개인 키를 찾아냅니다.
  3. 복구 및 검증 제품군:
    • nonce 취약점이 식별되면 키 재구성을 자동화합니다.
    • 복구된 키를 알려진 주소 및 거래 지문과 비교하여 유효성을 검사합니다.
    • 안전한 가져오기를 위해 표준 지갑 형식으로 키를 내보냅니다.

기술적 기초

RNG 약점 악용

BitRecoverPro는 두 가지 주요 난수 생성기(RNG) 결함을 대상으로 합니다.

  • 예측 가능한 시드 초기화:
    난수 생성기가 엔트로피가 낮거나 타임스탬프 기반 시드(예: Java Random또는 잘못 구성된 secrets.randbelow시드)를 사용하는 경우, 분석기는 시드 공간의 크기가 불충분할 수 있음을 표시합니다.
  • 그룹 순서 오류(랜스스톰):
    흔히 발생하는 코딩 오류로 인해 secp256k1 그룹 순서 매개변수 N이 잘못 설정되어 키 범위가 변경되거나 확장됩니다. BitRecoverPro의 엔트로피 분석기는 관찰된 개인 키 흔적을 올바른 그룹 범위와 비교하여 약 50%의 충돌 확률로 범위를 벗어난 값을 감지합니다.

격자 공격 및 부분 논스 공격

반복되거나 부분적으로 예측 가능한 논스를 감지하면 BitRecoverPro는 여러 ECDSA 방정식을 나타내는 모듈러 정수 격자를 구축합니다. ri≡(ki−1(zi+rid)) mod Nr_i \equiv (k_i^{-1} (z_i + r_i d)) \bmod Nri≡(ki−1(zi+rid))modN

브레인월렛 공격 및 랜드스톰 취약점 - 난수 생성 라이브러리의 치명적인 오류로 인해 예측 가능한 개인 키가 생성되어 해커가 키를 복구하고 비트코인 ​​자산을 모두 탈취할 수 있습니다.

여기서 rir_iri는 서명 구성 요소, kik_iki는 논스, ziz_izi는 메시지 해시, ddd는 개인 키입니다. LLL과 같은 격자 축소 알고리즘을 사용하여, 랜드스톰(Randstorm) 컨텍스트에서처럼 논스가 상위 비트를 공유하거나 완전히 반복되는 경우에도 ddd를 복구할 수 있습니다.

비트코인 보안에 미치는 영향

Applications vulnerable to Randstorm or similar RNG flaws produce keys with partial predictability that BitRecoverPro can exploit in minutes. Wallets affected between 2010–2015 remain at risk if archival signatures or key dumps exist. Successful key recovery leads to:

  • Immediate Fund Theft: Attackers can generate valid signatures and empty wallets.
  • Mass-Scale Exfiltration: Library or firmware flaws in popular wallets propagate vulnerabilities to thousands of users.
  • Erosion of Trust: High-profile breaches undermine confidence in Bitcoin’s cryptographic guarantees.

Mitigation and Best Practices

While BitRecoverPro excels at recovery and forensic analysis, prevention remains paramount:

  • Use Cryptographically Secure RNGs: Employ vetted CSPRNGs (e.g., SecureRandom, Python’s secrets) with proper entropy sources.
  • Verify Elliptic-Curve Parameters: Ensure the secp256k1 group order constant matches the official specification.
  • Enforce Nonce Uniqueness: Adopt deterministic nonce schemes such as RFC 6979 to eliminate RNG-based nonce generation.
  • Regular Audits: Integrate BitRecoverPro’s entropy analyzer into development pipelines for continuous validation.

Conclusion

BitRecoverPro stands as an essential tool for both recovering compromised Bitcoin wallets and auditing cryptographic implementations against RNG weaknesses like the Randstorm vulnerability. By combining entropy analysis, signature forensics, and automated key rebuilding, it empowers security teams to both remediate past exposures and fortify future key-generation processes, safeguarding user funds and reinforcing Bitcoin’s foundational trust model.


Cryptographic vulnerabilities of private key leakage in cryptographic software: causes, examples and secure solutions

Introduction

Cryptographic keys, especially private keys in blockchain-based systems (e.g. Bitcoin), are critical to secure asset management. Leakage or compromise of private keys leads to complete loss of control over crypto assets and serious financial losses. Despite their importance, many vulnerabilities are related to improper generation, storage, or transmission of private keys. This article will discuss how such vulnerabilities arise, provide an example of a common error, and offer practical and secure ways to fix it with code examples.

Vulnerabilities Emerging: Reasons for Private Key Leaks

The main reasons and mechanisms for private key leakage in crypto code:

  • Incorrect random number generation : A cryptographically secure random number generator (CSPRNG) is used to generate private keys. Using an inappropriate or predictable generator (such as Math.random() in JavaScript or incorrect initialization of entropy sources) weakens the keys, making them easy to crack.
  • 로깅 및 디버깅 버그  : 개인 키 또는 비밀 매개변수가 실수로 로그에 기록될 경우 공격자가 해당 정보에 접근할 수 있게 됩니다.
  • 메모리나 디스크에 키를 안전하지 않게 저장하는 경우  : 예를 들어, 기밀성이 확보되지 않은 형식으로 키를 저장하거나, 암호화 및 데이터 격리가 부족한 경우.
  • 잘못된 직렬화/역직렬화  : 서명, 키, 트랜잭션 처리 오류는 정보 유출이나 위조로 이어질 수 있습니다.
  • 비동기 코드 및 콜백 오류  : 안전하지 않은 채널 또는 콜백을 통한 키의 무단 전송.

예를 들어, BitcoinJS 라이브러리(2011-2015)의 잘 알려진 취약점은 부적절한 난수 생성기(특히, 안전하지 않은 Math.random을 사용하여 개인 키를 생성함)를 사용한 데서 비롯되었으며, 이로 인해 공격자가 키를 예측하고 자금을 탈취할 수 있었습니다.  bluescreen+1

취약한 코드의 예시 (간소화됨)

자바// Пример небезопасной генерации ключа (псевдокод)
Random random = new Random(); // НЕ криптографически безопасный генератор
byte[] privKeyBytes = new byte;
random.nextBytes(privKeyBytes);
PrivateKey privKey = new PrivateKey(privKeyBytes); // Приватный ключ с недостаточной энтропией

이 코드는 엔트로피가 낮고 예측 가능성이 높은 개인 키를 생성하므로 무차별 대입 공격에 취약합니다.

키를 생성하고 보호하는 안전한 방법

  1. SecureRandom 자바에 있는 것과 같은 암호학적으로 안전한 난수 생성기(CSPRNG)를 사용하십시오   .
자바import java.security.SecureRandom;

SecureRandom secureRandom = new SecureRandom();
byte[] privKeyBytes = new byte; // 256 бит
secureRandom.nextBytes(privKeyBytes);
PrivateKey privKey = new PrivateKey(privKeyBytes);
  1. 개인 키나 민감한 데이터는 절대 로그에 기록하지 마십시오. 모든 로그에는 공개 데이터 또는 익명화된 데이터만 포함되어야 합니다.
  2. 개인 키는 안전한 저장소(하드웨어 보안 모듈(HSM), 암호화 기능이 있는 소프트웨어 금고 등)에 보관하고, 최소한의 권한으로 접근하도록 설정하십시오.
  3. 공개 콜백이나 안전하지 않은 스레드에 키를 전달하지 않도록 하여 비동기 데이터 처리를 제어하세요.
  4. 정기적인 업데이트와 안전한 설정을 갖춘 검증된 라이브러리를 사용하십시오.

질문에 제시된 예시를 사용하여 취약점을 수정합니다.

검토 중인 Java 코드에서 개인 키가 포함된 WalletParams 객체를 전달하고 처리할 때, 특히 해당 데이터가 실수로 로그에 기록되거나 범위를 벗어날 경우 취약점이 발생할 수 있습니다. 이를 안전하게 수정하려면 다음과 같이 하는 것이 좋습니다.

  • WalletParams 내부에 개인 키를 캡슐화하는 작업을 완료하세요.
  • toString() 및 로깅을 통한 개인 데이터 출력을 비활성화합니다.
  • 모든 키 처리 방식이 보안 스트림과 최소한의 접근 권한을 사용하도록 보장하십시오.
  • 보안 생성기를 사용하고 인증서 또는 하드웨어 모듈에서 WalletParams를 로드하십시오.

안전한 처리 예시:

자바public final class WalletParams {
    private final byte[] encryptedPrivateKey; // Хранение в зашифрованном виде

    public WalletParams(byte[] encryptedPrivateKey) {
        this.encryptedPrivateKey = Arrays.copyOf(encryptedPrivateKey, encryptedPrivateKey.length);
    }

    // Получить приватный ключ безопасно для использования в подписи,
    // без раскрытия в логах или в нечаянном выводе
    public PrivateKey getDecryptedPrivateKey(char[] passphrase) {
        byte[] decryptedBytes = decrypt(encryptedPrivateKey, passphrase);
        return new PrivateKey(decryptedBytes);
    }

    @Override
    public String toString() {
        return "WalletParams{encryptedPrivateKey=PROTECTED}";
    }

    private byte[] decrypt(byte[] encrypted, char[] passphrase) {
        // Реализация безопасного AES-расшифрования с проверкой целостности
    }
}

WalletParams를 사용한 호출은 엄격하게 통제된 환경에서만 개인 키에 대한 getter를 사용해야 하며, 다른 곳에는 개인 데이터를 전달해서는 안 됩니다.

결론

개인 키 유출로 이어지는 암호화 취약점은 대개 부실한 키 생성, 안전한 저장 및 데이터 처리 오류와 관련이 있습니다. 이러한 취약점을 방지하려면 다음 사항을 준수해야 합니다.

  • 암호학적으로 안전한 난수 생성기를 사용하십시오.
  • 개인 정보의 기록 및 우발적인 유출을 방지하십시오.
  • 키는 암호화되고 안전한 형태로만 보관하십시오.
  • 가시성 영역 및 중요 데이터 전송을 제어합니다.

이러한 관행을 구현하고 보안 소프트웨어를 신중하게 설계하면 암호화 시스템에 대한 공격 위험을 크게 줄이고 사용자의 디지털 자산을 보호할 수 있습니다.

이러한 접근 방식은 코드에도 적용되며, WalletParams 객체의 전송 및 저장은 엄격한 보안 캡슐화, 로그를 통한 정보 유출 방지, 그리고 내부에서의 안전한 키 생성과 함께 이루어져야 합니다.

필요하다면, 프로젝트의 특정 메서드를 수정하는 데 도움이 되는 더 자세한 코드 예제를 제공해 드릴 수 있습니다.


이 기사는 비트코인 ​​암호화폐의 난수 생성기(RNG)에 심각한 취약점이 존재하며, 이는 타원 곡선 그룹 secp256k1의 순서 매개변수가 잘못 할당된 것과 관련되어 있어 상당수의 유효하지 않고 예측 가능한 개인 키가 생성된다는 점을 강조하며 결론을 맺습니다. 이는 암호화 강도를 크게 저하시키고, 공격자가 거래 서명 생성에 사용된 반복되거나 취약한 값을 분석하여 개인 키를 복원할 수 있는 공격을 가능하게 합니다.

이 위험한 취약점은 전형적인 개인 키 유출 공격의 예이며, 종종 취약하거나 결함이 있는 난수 생성기(취약한 RNG 취약점)를 통해 발생합니다. 이러한 결함으로 인한 결과는 심각합니다. 자금 관리 능력 상실, 대규모 도난, 그리고 비트코인 ​​네트워크 전체의 보안에 대한 신뢰도 하락으로 이어질 수 있습니다.

이러한 공격을 방지하기 위해서는 암호화 매개변수에 대한 엄격한 기술적 제어, 암호학적으로 강력한 난수 생성기 사용, 그리고 secp256k1 곡선 매개변수 결정에 대한 공식 표준의 엄격한 준수가 필수적입니다. 또한 신뢰할 수 있는 키 유효성 검사와 개인 키의 안전한 저장도 구현되어야 합니다.

따라서 이 취약점은 신뢰할 수 있는 자산 보호와 사용자 신뢰를 보장하기 위해 블록체인 시스템에서 기본적인 암호화 구성 요소가 완벽하게 구현되는 것이 얼마나 중요한지를 보여줍니다.

이번 중대한 사건은 암호화폐 지갑 및 블록체인 애플리케이션 전문가와 개발자들에게 개인 키 생성 및 관리 오류를 기반으로 한 공격을 방지하기 위해 지속적인 보안 감사와 소프트웨어 업데이트가 필요하다는 경고를 던집니다.

이러한 근본적인 취약점을 해결하지 않으면 비트코인 ​​및 유사한 암호화폐 시스템의 보안은 심각한 경제적 결과를 초래할 수 있는 위험한 공격에 노출될 위험이 있습니다.


오프라인 암호 크래킹(무차별 대입 공격) – 공격자는 암호화된 데이터에 접근하여 대상 시스템과 상호 작용하지 않고 무제한 무차별 대입 공격을 수행할 수 있습니다.

비트코인 지갑 보안의 심각한 취약점: 취약한 비밀번호를 이용한 오프라인 무차별 대입 공격 및 대규모 자금 탈취 위협

아래는 비트코인 ​​지갑 암호화에 취약하거나 고정된 비밀번호를 사용하는 것과 관련된 심각한 취약점이 비트코인 ​​암호화폐에 대한 공격(과학적으로는 이러한 공격이라고 함)에 어떤 영향을 미칠 수 있는지 자세히 설명하는 광범위한 연구 논문이며, 이러한 취약점과 관련된 기존 CVE에 대한 정보도 포함되어 있습니다.


취약한 비밀번호가 비트코인 ​​암호화폐 보안에 미치는 영향: 알려진 CVE에 대한 취약점 분류 및 분석

소개

비트코인은 탈중앙화된 암호화폐로, 자금 접근을 제어하는 ​​개인 키를 포함한 강력한 암호화 메커니즘에 기반한 보안을 자랑합니다. 개인 키는 유출을 방지하기 위해 암호화되지만, 강력한 비밀번호를 사용하는 것이 매우 중요합니다. 약하거나 고정된 비밀번호를 사용하면 다양한 공격에 취약해져 자금 손실을 초래할 수 있습니다.

이 글에서는 해당 취약점의 본질, 비트코인 ​​보안 모델에 미치는 영향, 공격의 과학적 명칭, 그리고 알려진 공통 취약점(CVE)과 이러한 문제와의 관계에 대한 분석을 살펴봅니다.

취약점의 특성과 비트코인 ​​암호화폐에 미치는 영향

비트코인 지갑의 개인 키를 암호화할 때 취약하거나 쉽게 예측 가능한 비밀번호를 사용하면 저장소의 암호화 강도가 저하됩니다. 이는 무차별 대입 공격 의 가능성을 열어주며     , 공격자는 이러한 공격을 통해 개인 키에 접근하여 해당 지갑의 모든 자금을 장악할 수 있습니다.

구체적인 결과는 다음과 같습니다.

  • 자금 탈취  : 탈취된 지갑에 대한 완전한 통제권을 확보하면 모든 자금이 공격자의 주소로 인출됩니다.
  • 다수의 지갑에 미치는 대규모 영향  : 시스템에 동일하거나 유사한 취약한 비밀번호를 사용하는 지갑이 많을 경우, 공격은 대규모로 확산될 수 있습니다.
  • 암호화폐 생태계에 대한 신뢰 훼손  : 도난 자금 비율 증가로 인해 전체 네트워크의 평판과 보안이 저하됩니다.

비트코인 보안 모델에서 이러한 유형의 취약점은     유출로 분류되며, 이는 모든 암호 시스템의 근본적인 측면입니다.

공격의 과학적 명칭

암호화폐 지갑에서 암호화 키를 보호하기 위해 취약한 비밀번호를 사용하는 것의 위험성은 다음과 같은 공격 유형을 의미합니다.

  • 무차별 대입 공격(암호 검색)   은 올바른 암호를 찾을 때까지 가능한 모든 암호를 시도하는 고전적인 공격 방식입니다.
  • 오프라인 암호 크래킹(무차별 대입 공격)   – 공격자는 암호화된 데이터에 접근하여 대상 시스템과 상호 작용하지 않고 무제한 무차별 대입 공격을 수행할 수 있습니다.
  • 취약한 비밀번호 복구 공격   – 비밀번호의 품질이 너무 낮아 키를 빠르게 복구(또는 선택)할 수 있습니다.
  • 키 추출 공격   – 암호를 무차별 대입 공격으로 성공적으로 해독하면 개인 키에 직접 접근할 수 있습니다.

따라서 가장 일반적이고 엄밀한 명칭은   취약한 암호로 보호된 암호화 키에 대한 오프라인 무차별 대입 공격 입니다  .

관련 CVE 및 분석

CVE 취약점 데이터베이스에는 유사한 시나리오로 식별된 사례들이 포함되어 있습니다.

  • CVE-2024-0676   — 비트코인 ​​ATM 소프트웨어의 취약한 비밀번호 요구 사항으로 인해 로컬 공격자가 비밀번호를 추측하여 장치를 제어할 수 있습니다.
  • CVE-2023-39910   — 암호화폐 지갑에서 취약한 난수 생성기와 낮은 엔트로피의 암호를 사용하는 것과 관련된 취약점(Libbitcoin Explorer의 Milk Sad 문제).
  • CVE-2024-23660   — 일부 공개 애플리케이션에서 암호화폐 지갑의 개인 키에 대한 엔트로피 생성 과정에서 위반 사항이 발견되어 무차별 대입 공격이 더 쉬워집니다.
  • 일반 범주인 CWE-521(취약한 암호 요구 사항)은   불충분한 암호 정책으로 인해 발생하는 취약점을 나타냅니다.

이러한 CVE는 암호화 애플리케이션에서 취약한 암호 문제가 널리 퍼져 있음을 보여주고 강력한 보안 조치의 필요성을 강조합니다.

결론 및 권고사항

비트코인 지갑 보호에 고정적이고 취약한 비밀번호를 사용하는 것과 관련된 치명적인 취약점은 암호화폐 보안에 심각한 위협을 가합니다. 과학적으로 이러한 취약점은 오프라인 무차별 대입 공격 가능성으로 설명되며    , 이는 국제 취약점 데이터베이스에도 등재되어 있습니다.

이러한 공격을 방지하기 위해 다음과 같은 조치를 권장합니다.

  • 암호학적으로 강력하고 엔트로피가 높은 무작위로 생성된 비밀번호를 사용하십시오.
  • PBKDF2, Argon2와 같은 최신 솔트 키 유도 알고리즘을 사용하십시오.
  • 소스 코드에 비밀번호를 하드코딩하는 것을 피하세요.
  • 암호화폐 애플리케이션에 대한 보안 감사 및 모니터링 프로세스를 구현하십시오.

따라서 보안 측면에서 이 공격은 취약한 암호로 보호된 암호화 키에 대한 오프라인 무차별 대입 공격 이라고 하며    , CVE-2024-0676 및 CVE-2023-39910과 같은 특정 CVE가 데이터베이스에 등록되어 있어 이 문제의 관련성과 심각성을 확인하는 데 도움이 됩니다.

필요하다면 실제 상황에서 발생한 특정 공격 사례에 대한 기술적 분석을 도와드릴 수 있습니다.



암호화 취약점

이 코드의 암호화 취약점은   지갑 암호화에 고정된 취약한 비밀번호를 사용하고   ,   각 지갑마다 동일한 간단한 비밀번호를 반복해서 사용한다는 점입니다  . 이는 키 암호화의 보안을 약화시킵니다.

58bitcoin-spring-boot-starter/blob/devel/bitcoin-regtest/bitcoin-regtest-electrum/src/integTest/java/org/tbk/bitcoin/regtest/electrum/faucet/SimpleElectrumRegtestFaucetWithMultipleWalletsTest.java
https://github.com/theborakompanioni/bitcoin-spring-boot-starter/blob/devel/bitcoin-regtest/bitcoin-regtest-electrum/src/integTest/java/org/tbk/bitcoin/regtest/electrum/faucet/SimpleElectrumRegtestFaucetWithMultipleWalletsTest.java

주요 문제는 setUp() 메서드에서 지갑을 생성할 때 “faucet”이라는 비밀번호를 하드코딩하는 부분입니다.

자바:

WalletParams.builder()
.walletPath("faucet_%s".formatted(this.getClass().getSimpleName()))
.password("faucet")
.build()

또한, itShouldFundMultipleWallets() 테스트는 “ANY_PASSWORD_i” 형식의 비밀번호를 사용합니다.

자바:

.password("ANY_PASSWORD_%d".formatted(i))

이러한 비밀번호는 고정적이고 단순하여 암호화 취약점이 됩니다. 그 이유는 다음과 같습니다.

  • 비밀번호는 쉽게 추측할 수 있습니다.
  • 하나의 비밀번호가 유출되면 모든 지갑이 위험에 처하게 됩니다.
  • 안전한 비밀번호 생성기나 고유한 무작위 비밀번호를 사용하지 않습니다.

취약점을 제거하려면 다음을 사용해야 합니다.

  • 각 지갑마다 무작위로 생성된 강력한 비밀번호가 사용됩니다.
  • 비밀번호를 안전하게 저장합니다(예: 환경 변수 또는 비밀번호 관리자 사용).
  • 가능하다면 암호를 코드로 저장하지 마십시오.

따라서 취약점은 다음 줄에 있습니다.

  • setUp() 메서드에서:
자바:

.password("faucet")
  • itShouldFundMultipleWallets() 메서드에서:
자바:

.password("ANY_PASSWORD_%d".formatted(i))

배경 설명: 이는 테스트 환경에서 지갑 개인 키의 암호화 보안을 저하시킵니다.


수정하려면:

아래는 암호화폐 지갑 암호화에 정적이고 취약한 비밀번호를 사용할 때 발생하는 암호화 취약점에 대한 광범위한 과학적 설명입니다. 이 글에서는 취약점의 원인, 결과, 그리고 자바 예제를 통해 취약한 코드를 안전하게 수정하는 방법을 제시합니다. 문제에 대한 공식적인 설명, 이론 및 실제적인 내용, 그리고 이러한 공격을 방지하기 위한 권장 사항을 포함하고 있습니다.


비트코인 지갑 암호화 시 고정 비밀번호의 암호화 취약점 및 안전한 제거 방법

소개

최신 블록체인 시스템에서 개인 키의 안전한 저장은 사용자 자금의 안전을 보장하는 데 매우 중요한 과제입니다. 일반적으로 지갑의 개인 키는 비밀번호로 암호화되어 무단 접근으로부터 보호됩니다. 그러나 고정적이고 취약하거나 예측 가능한 비밀번호를 사용하면 시스템의 암호화 강도가 약화되어 침입자가 성공적으로 공격할 수 있는 환경이 조성됩니다.

이 글에서는 부적절한 비밀번호 사용과 관련된 취약점의 본질을 살펴보고, 그러한 취약점이 실제 코드에서 어떻게 나타나는지 보여주며, 이러한 오류를 안전하게 완화하기 위한 효과적인 조치와 지갑 보호를 위한 모범 사례를 제시합니다.

취약점의 근원: 고정적이고 간단한 비밀번호가 위험한 이유

비트코인 지갑 암호화는 대칭 암호화 연산의 키 역할을 하는 암호를 사용합니다. 암호가 취약한 경우(예: “faucet”과 같은 간단한 단어 또는 “ANY_PASSWORD_i”와 같은 패턴) 무차별 대입 공격, 사전 기반 공격 또는 레인보우 테이블을 이용한 사전 계산으로 쉽게 해독될 수 있습니다.

고정 비밀번호의 단점

  • 무작위성 부족  : 서로 다른 인스턴스에서 동일한 비밀번호를 사용하면 반복적인 공격 지점이 생깁니다.
  • 추측하기 쉬움  : 비밀번호는 흔히 인기 있거나 쉽게 예측할 수 있는 문구로 만들어집니다.
  • 연결된 모든 지갑의 보안이 손상될 수 있습니다  . 하나의 비밀번호가 해킹되면 해당 비밀번호를 사용하는 모든 지갑이 해킹될 수 있습니다.
  • 오프라인 무차별 대입 공격에 취약함  : 솔트 부족 및 취약한 비밀번호로 인해 시스템과 상호 작용하지 않고도 매우 효과적인 공격이 수행될 수 있습니다.

암호학적 관점에서 암호화 강도는 비밀번호의 엔트로피(무작위성) 정도와 암호화 키를 생성하는 데 사용된 해싱/키 유도 방법의 품질에 따라 결정됩니다.

취약한 비밀번호를 공격하는 메커니즘

암호화된 데이터나 지갑 파일에 접근 권한을 얻은 공격자는 다음과 같은 방법을 사용할 수 있습니다.

  • 무차별 대입 공격  : 사전이나 옵션 집합에서 가능한 모든 암호를 시도하는 공격.
  • 레인보우 테이블  : 빠른 매칭을 위한 사전 계산된 해시 테이블(솔트가 없는 비밀번호에 효과적).
  • 여러 지갑에서 반복적으로 사용되는 비밀번호를 분석하여  검색을 최적화하고 여러 지갑을 해킹하는 속도를 높일 수 있습니다.

따라서 하드코딩된 비밀번호의 취약점은 시스템을 직접적인 위협에 노출시킵니다.

소스 코드의 취약점을 보여주는 실제 시연

문제의 자바 코드(SimpleElectrumRegtestFaucetWithMultipleWalletsTest)는 고정된 비밀번호를 사용합니다.

자바.password("faucet")

그리고

자바.password("ANY_PASSWORD_%d".formatted(i))

이는 비밀번호가 반복되고, 높은 엔트로피를 제공하지 않으며, 쉽게 추측될 수 있기 때문에 보안을 저하시킵니다. 결과적으로 다음과 같은 문제가 발생합니다.

  • 개인 지갑 키는 해독에 취약합니다.
  • 동일하거나 유사한 비밀번호를 사용하는 여러 지갑에 대한 공격이 가능합니다.
  • 사용자 거래의 기밀성과 무결성이 침해됩니다.

안전한 해결책: 강력한 비밀번호 생성 및 사용

안전성을 향상시키기 위해서는 다음과 같은 조치를 취해야 합니다.

  1.   높은 엔트로피를 가진 암호학적으로 강력한 무작위 비밀번호 생성 .
  2. 주요 추론 알고리즘(예: PBKDF2, Argon2)에서 솔트(salt)를 사용하여   레인보우 테이블 사용을 방지합니다.
  3. 암호를 소스 코드에 직접 저장하지 마십시오   . 대신 안전한 저장소나 환경 변수를 사용하십시오.
  4. 비밀번호 변경 및 관리  , 특히 다중 사용자 시스템 및 자동화 시스템에서의 관리가 중요합니다.

자바 코드의 취약점을 수정하는 예시

다음은 Java SecureRandom과 비밀번호를 저장하는 안전한 래퍼를 사용하여 각 지갑에 대해 고유하고 강력한 비밀번호를 생성하는 안전한 예입니다.

자바import java.security.SecureRandom;
import java.util.Base64;

public class WalletPasswordGenerator {
    private static final SecureRandom secureRandom = new SecureRandom();
    private static final int PASSWORD_LENGTH_BYTES = 24; // 192 бит, достаточно для пароля

    public static String generateSecurePassword() {
        byte[] randomBytes = new byte[PASSWORD_LENGTH_BYTES];
        secureRandom.nextBytes(randomBytes);
        return Base64.getUrlEncoder().withoutPadding().encodeToString(randomBytes);
    }
}

이 세대를 테스트에 사용해 보겠습니다.

자바void itShouldFundMultipleWallets() {
    String walletPrefix = SimpleElectrumRegtestFaucetWithMultipleWalletsTest.class.getSimpleName();
    List<WalletParams> walletParamList = Stream.of(0, 1, 2)
        .map(i -> WalletParams.builder()
            .walletPath("%s_%d".formatted(walletPrefix, i))
            .password(WalletPasswordGenerator.generateSecurePassword())
            .build())
        .toList();
    createAndLoadWalletsOrThrow(walletParamList);
    // дальше код работы с кошельками
}

setUp 메서드에서 비밀번호 “faucet”을 임의의 비밀번호로 바꾸세요.

자바@BeforeEach
void setUp() {
    String securePassword = WalletPasswordGenerator.generateSecurePassword();
    this.sut = new SimpleElectrumRegtestFaucet(electrumClient,
            bitcoinRegtestActions,
            WalletParams.builder()
                    .walletPath("faucet_%s".formatted(this.getClass().getSimpleName()))
                    .password(securePassword)
                    .build());
}

추가 보안 조치

  • Argon2 또는 PBKDF2와 같은 최신 키 유도 함수를 사용하고, 무차별 대입 공격 속도를 늦추는 설정을 적용합니다.
  • 하드웨어 보안 모듈(HSM)을 사용하여 키를 생성하고 저장합니다.
  • 하드코딩된 비밀 키와 취약점을 검사하고 감사합니다.
  • CICD 및 개발 환경에 안전한 암호 및 비밀 정보 관리 정책을 구현하십시오.

결론

고정적이고 취약한 비밀번호를 사용하여 비트코인 ​​지갑을 암호화하면 심각한 암호화 취약점이 발생하여 공격자가 해킹하고 자금을 탈취하기가 더 쉬워집니다. 이러한 취약점을 완화하기 위한 안전한 방법은 지갑을 생성할 때마다 고유하고 높은 엔트로피의 비밀번호를 생성하는 것뿐만 아니라, 핵심 데이터를 강력하게 보호하기 위해 최신 암호화 기능을 지원하는 것입니다.

제공된 코드 예제는 SecureRandom을 사용하여 Java에서 안전한 암호를 생성하는 방법을 보여줍니다. SecureRandom은 공격 성공 위험을 크게 줄이고 암호화폐 시스템에 필요한 수준의 정보 보안을 제공합니다.


다음은 비트코인 ​​암호화폐의 심각한 취약점과 위험한 공격의 핵심을 명확하고 이해하기 쉬우며 유익하게 요약한 기사 내용입니다.


최종 결론

비트코인 지갑의 개인 키를 암호화하는 데 취약하고 고정된 비밀번호를 사용하는 것과 관련된 치명적인 취약점은 전체 암호화폐 생태계의 보안에 심각한 위협을 가합니다. 이처럼 단순하고 예측 가능한 비밀번호 관리 방식은 공격자가 오프라인 무차별 대입 공격을 통해 지갑을 해킹하고 자금을 탈취하는 것을 용이하게 합니다.

이 공격은 과학적으로   ‘취약한 암호로 보호된 암호화 키에 대한 오프라인 무차별 대입 공격’ 이라고 불리며  , 저렴한 비용으로 개인 키에 무단 접근하여 해당 주소에 저장된 모든 암호화폐를 인출할 수 있게 합니다. 유사하거나 취약한 암호가 대량으로 사용되면 확장 가능한 공격 지점이 생성되어 막대한 사용자 손실을 초래하고 비트코인 ​​네트워크에 대한 신뢰를 약화시킬 수 있습니다.

실제 발생한 사건과 등록된 CVE 취약점 분석 결과, 이 문제는 심각하며 반드시 예방 조치가 필요하다는 것이 확인되었습니다. 이러한 공격을 방지하고 보호하기 위해서는 암호학적으로 강력하고 엔트로피가 높은 무작위 암호를 생성하고, 최신 키 유도 알고리즘을 사용하며, 소스 코드에 암호를 저장하지 않는 것이 필수적입니다.

암호화 보호 및 비밀번호 관리에 대한 포괄적인 접근 방식만이 증가하는 사이버 위협 속에서 비트코인 ​​지갑의 안정적인 보안을 보장하고 자금의 무결성과 기밀성을 유지할 수 있습니다.


하드코딩된 자격 증명 사용 – 일렉트럼 비트코인 ​​지갑의 치명적인 취약점: 개인 키에 대한 위험한 공격 및 대규모 암호화폐 도난 위험

일렉트럼 하드코딩 비밀번호 악용: 비트코인 ​​개인 키 보안에 치명적인 공격 벡터

개인 키 유출로 이어지는 취약점의 존재와 그것이 비트코인 ​​생태계에 미치는 위험성. 명확하고 이해하기 쉬우며 기술적으로 정확한 제목은 연구원과 보안 전문가들의 관심을 끌 것입니다.  rbc


일렉트럼 지갑의 하드코딩된 비밀번호 취약점이 비트코인 ​​보안에 미치는 영향 및 공격 분류

소개

일렉트럼(Electrum) 암호화폐 지갑은 개인 키 관리 및 거래 서명에 널리 사용되는 인기 있는 경량 비트코인 ​​클라이언트 중 하나입니다. 자금 접근을 직접적으로 제어하는 ​​개인 키의 보안은 매우 중요합니다. 이러한 맥락에서, 지갑에 하드코딩된 암호문과 관련된 취약점은 정보 보안 분야에서 심각한 위험으로 이어집니다. 이 글에서는 해당 오류가 비트코인 ​​보안에 미치는 영향, 해당 공격 유형의 과학적 명칭, 그리고 CVE 데이터베이스에 등록되어 있는지 여부를 분석합니다.

비트코인 보안 취약점의 본질과 영향

일렉트럼에서 지갑을 생성할 때 하드코딩된 비밀번호/암호를 사용하면 개인 키가 유출될 위험이 있습니다. 공격자가 이 비밀번호를 이용해 소스 코드나 실행 파일에 접근할 수 있다면 암호화된 개인 키를 해독하여 자금을 완전히 장악할 수 있습니다.

비트코인의 경우, 이는 사용자의 모든 코인을 훔칠 수 있는 직접적인 가능성을 의미합니다. 개인 키만이 거래에 서명할 수 있는 유일한 수단이기 때문입니다. 이러한 취약점은 비트코인의 모든 암호화 보호 기능을 사실상 무력화시키고, 개인 키를 신뢰할 수 있는 암호화 알고리즘의 보호에서 제외시켜 공개 정보로 만들어 버립니다.

공격의 과학적 명칭 및 분류

하드코딩된 비밀 키를 악용하는 공격은   OWASP Top 10  분류 및 국제 취약점 시스템 에서    하드코딩된 암호 사용” 범주   에 속합니다.

  • 일반적인 취약점 열거(CWE) 용어로 이 취약점은 CWE-798: 하드코딩된 자격 증명 사용 으로 코드화됩니다    .
  • 고전적인 정보 보안 용어로 말하자면, 이는 기밀 데이터 관리 부실로 인한 기밀 데이터 공격으로 분류됩니다.

공격자가 이러한 비밀번호를 해킹하면 키 추출 공격을 수행하게 되는데, 비트코인 ​​생태계에서 이는 자금 탈취로 이어집니다.

CVE 번호 또는 알려진 CVE 링크의 제공 여부

검색 결과에 따르면, 하드코딩된 암호와 관련된 Electrum 특정 취약점에 대한 CVE는 공식 데이터베이스에 기록되어 있지 않습니다. 그러나 원인이 유사한 취약점(예: JSON-RPC 인증 부족, 암호 노출)은 다음과 같습니다.

  • CVE-2018-1000022 – Electrum의 JSON-RPC 인터페이스에 존재하는 무단 취약점으로 인해 원격 공격 및 지갑 접근이 가능합니다.  nvd.nist
  • 전반적으로 “하드 코딩된 비밀번호 사용”은 널리 퍼진 잘못된 보안 관행으로 인식되며, 특정 사고 발생 시 CVE의 근거가 될 수 있습니다.

따라서 이 취약점은 CVE에 별도로 등록되지 않고, 근본적으로 알려진 위협 범주에 속합니다.

비트코인 생태계 보안에 미치는 영향

이러한 취약점을 악용하면 공격자는 다음과 같은 일을 할 수 있습니다.

  • 개인 키를 가져오세요.
  • 피해자를 대신하여 거래에 서명하고 전송하십시오.
  • 피해자의 주소록을 완전히 비우세요.

이는 직접적인 보안 침해이며, 이러한 버그가 수정되지 않으면 일렉트럼과 비트코인 ​​전반에 대한 신뢰도가 떨어질 것입니다.

결론

일렉트럼(Electrum)의 심각한 취약점인 “하드 코딩된 비밀번호 사용”은 개인 키 관리의 기본 원칙을 위반하여 암호화된 키 유출을 통한 비트코인 ​​도난 위험을 증가시킵니다. 이 취약점은 CWE-798(하드 코딩된 자격 증명 사용)로 분류되며, OWASP 표준에 따라 “하드 코딩된 비밀번호 사용” 유형에 속합니다. 일렉트럼에서 이 취약점에 대한 정확한 CVE 번호는 없지만, 유사한 결과를 초래하는 유사 취약점들이 알려져 있으며 종종 CVE로 보고됩니다.

이러한 공격을 방지하려면 소스 코드 외부에 비밀번호를 저장하고 전용 개인정보 관리 시스템을 사용하는 등 안전한 개인정보 보호 관행을 구현해야 합니다.


필요하다면 추가적인 기술 세부 정보나 유사한 CVE 및 그 영향에 대한 개요를 제공할 준비가 되어 있습니다. 일렉트럼 비트코인 ​​지갑의 하드코딩된 암호와 관련된 심각한 취약점으로 인해 소스 코드 또는 바이너리에 접근 권한이 있는 공격자는 개인 키를 쉽게 해독할 수 있습니다. 이는 관리 주소의 자금이 완전히 유출되고 암호화폐가 도난당하는 결과를 초래합니다. 정보 보안 측면에서 이러한 취약점은 “하드코딩된 암호 사용”으로 분류되며, CWE 데이터베이스에서는 CWE-798(하드코딩된 자격 증명 사용)로 표준 지정됩니다.

이 취약점을 악용하는 것은 개인 키의 기밀성을 공격하는 행위, 즉 비트코인 ​​용어로 개인 키 탈취 공격에 해당합니다. 일렉트럼의 이 특정 취약점에 대한 별도의 CVE 식별자는 없지만, 일렉트럼의 RPC 인터페이스의 보안 결함과 같은 유사하거나 관련된 문제들이 CVE-2018-1000022 등의 항목으로 보고되고 있습니다.

따라서 이 취약점은 암호화폐 애플리케이션에 적용될 경우 매우 심각한 문제로, 공격자가 사용자 자금에 접근하여 탈취하는 것을 막기 위해 즉각적인 수정과 안전한 암호 및 암호문 관리 방안 시행이 필요한 전형적이고 위험한 비밀 관리 오류입니다.  (eweek+3)


일렉트럼 비트코인 ​​지갑에서 발견된 심각한 취약점은 JSON-RPC 인터페이스의 안전하지 않은 구현과 관련되어 있으며, 사용자 보안에 심각한 영향을 미치고 대량의 비트코인 ​​탈취로 이어질 뻔했습니다. JSON-RPC 인터페이스는 적절한 인증 및 보호 장치 없이 작동하여, 공격자가 악성 웹사이트를 통해 사용자의 실행 중인 지갑에서 임의의 명령을 실행할 수 있도록 허용했습니다. 단, 지갑이 열려 있고 비밀번호로 보호되지 않은 경우에 한합니다.

이 취약점은 2016년부터 활발하게 악용되어 왔으며 공격자는 다음과 같은 행위를 할 수 있습니다.

  • 브라우저를 통해 원격으로 지갑을 관리하세요.
  • 사용자가 작업하는 동안 수취인 주소와 지불 금액을 변경할 수 있습니다.
  • 지갑을 무력화시키고 공격자의 주소로 강제로 자금을 인출합니다.
  • 사용자가 악성 사이트에 접속하는 순간 자금 유출이 발생했습니다.

공개적으로 알려진 성공적인 탈취 사례는 없지만, 위험성은 매우 높았습니다. 지갑을 업데이트하지 않은 많은 일렉트럼 사용자는 키 유출 및 비트코인 ​​손실 위험에 처해 있었습니다. 이 취약점은 2018년 1월에 출시된 3.0.4~3.0.5 버전에서 수정되었으며, 이후 지갑에는 업데이트된 JSON-RPC 보호 메커니즘이 적용되었습니다.

이 취약점은 특히 비트코인에 심각한 문제를 야기하는데, 비트코인은 편리성과 속도 때문에 널리 사용되는 “라이트” 지갑을 통한 사용자 자금 공격의 주요 경로 중 하나로 알려져 있기 때문입니다. 일렉트럼 코드를 기반으로 하는 다른 많은 지갑들도 이 취약점에 노출되었습니다.

주요 결과:

  • 일렉트럼 JSON-RPC 취약점이 비트코인 ​​도난에 미치는 영향은 엄청나며, 잠재적으로 수백만 달러의 손실이 발생할 수 있습니다.
  • 주요 공격 경로는 안전하지 않은 JSON-RPC를 통한 원격 명령 실행입니다.
  • 지갑에 비밀번호가 없을 때 가장 큰 위협이 됩니다.
  • 클라이언트 업데이트 및 비밀번호 보호가 즉시 필요합니다.

따라서 일렉트럼 JSON-RPC 취약점은 비트코인 ​​소유 및 보안 역사상 가장 주목할 만하고 위험한 사건 중 하나가 되었으며, 시기적절한 업데이트와 사용자 키의 철저한 보호가 얼마나 중요한지를 강조합니다.  securenews+3


암호화 취약점


제시된 코드는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점을 직접적으로 드러내지는 않습니다. 그러나 비밀 데이터 유출로 이어질 수 있는 잠재적으로 위험한 관행에 주의를 환기시킬 수 있습니다.

주요 취약점은 createWalletIfNecessaryOrThrow 메서드에 하드코딩된 암호문입니다.

자바:

.passphrase("faucet")

이것이 취약점인 이유:

  • 지갑 생성 코드에는 암호   "faucet" 로 사용되는 문자열이 하드코딩되어 있습니다.
  • 만약 이 암호문이나 비밀번호를 알고 있거나 간단한 경우, 지갑 파일(walletPath)에 접근 권한이 있는 공격자는 쉽게 키를 해독할 수 있습니다.
  • 비밀 데이터(비밀번호, 비밀 문구)를 소스 코드에 직접 저장하는 이러한 접근 방식은 전형적인 보안 오류입니다.
  • 소스 코드 유출이나 바이너리 파일 접근이 발생한 경우, 이 암호를 통해 개인 키를 복구할 수 있습니다.
59bitcoin-spring-boot-starter/blob/devel/bitcoin-regtest/bitcoin-regtest-electrum/src/main/java/org/tbk/bitcoin/regtest/electrum/faucet/SimpleElectrumRegtestFaucet.java
https://github.com/theborakompanioni/bitcoin-spring-boot-starter/blob/devel/bitcoin-regtest/bitcoin-regtest-electrum/src/main/java/org/tbk/bitcoin/regtest/electrum/faucet/SimpleElectrumRegtestFaucet.java

추가 사항:

  • walletParams.getPassword().orElse(null) 이 코드는 지갑을 암호화하는 방법을 사용합니다   .
  • 이 값을 사용할 수 없는 경우(null), “faucet”이라는 암호만 사용할 수 있는데, 이는 보안성이 매우 떨어집니다.
  • 신뢰할 수 있는 보호 조치가 부족하면 개인 키와 자금이 유출될 수 있습니다.

결론:

해당 취약점은 지갑 생성 시 암호를 설정하는 부분에 있습니다.

자바:

.passphrase("faucet")

고정된 공개 문구를 암호로 사용하는 것은 개인 키 유출 및 보안 손상의 잠재적 위험 요소입니다. 암호와 비밀번호는 안전한 설정에서 관리하고, 비밀 관리자를 사용하며, 소스 코드에 직접 입력하지 않는 것이 좋습니다.


수정하려면:

Regtest를 이용한 비트코인 ​​일렉트럼 월렛 비밀 키 관리 취약점 분석

소개

현대 암호화폐 시스템에서 개인 키 관리 및 관련 정보의 보안은 매우 중요합니다. 지갑 소프트웨어에서 비밀번호와 암호를 잘못 처리하면 개인 키 유출로 이어져 자금 손실을 초래할 수 있습니다. Regtest의 비트코인 ​​일렉트럼 수도꼭지 구현 예시에서 흔히 볼 수 있는 보안 오류, 즉 지갑 생성 시 암호를 하드코딩한 사례를 확인할 수 있습니다. 이 글에서는 이러한 취약점의 특성, 발생 메커니즘, 결과에 대해 분석하고, 안전한 해결 방법과 향후 유사 오류를 방지하기 위한 권장 사항을 제시합니다.

취약성의 본질

지갑 생성 코드에서 암호문 문자열은 하드코딩되어 있습니다.

자바.passphrase("faucet")

이는 수도꼭지 지갑이 생성될 때마다 동일한 비밀 문자열이 사용된다는 것을 의미합니다   "faucet". 이러한 관행은 비밀 관리의 기본 원칙을 위반하는 것입니다.

  • 지갑 인스턴스마다 비밀 키는 고유해야 하며 기밀로 유지되어야 합니다.
  • 비밀 정보는 개발자나 잠재적 공격자가 접근할 수 있는 소스 코드에 포함되어서는 안 됩니다.
  • 고정된 비밀 키를 사용하면 코드 유출, 바이너리 배포 또는 저장소에 대한 우발적인 접근으로 인한 보안 침해 위험이 증가합니다.

공격자가 지갑과 코드가 저장된 파일 시스템에 접근 권한을 얻으면, 알려진 암호를 사용하여 개인 키를 해독할 수 있습니다. 이는 자금에 대한 완전한 통제권 상실로 이어집니다.

발생 기전

암호학적으로, 일렉트럼 지갑은 디스크에 저장된 키를 암호화하기 위해 암호를 사용합니다. 지갑을 로드하거나 생성할 때 이 암호가 사용됩니다. 만약 암호가 하드코딩되어 있다면, 소프트웨어에 접근 권한이 있는 사람이라면 누구나 알 수 있게 됩니다. 만약:

  • 소스 코드가 공개되었습니다.
  • 해당 저장소는 보호되지 않습니다.
  • 이 애플리케이션은 동적 구성 없이 여러 노드에 분산되어 있습니다.

그러면 마침내 그 취약점이 악용 사례로 드러나게 됩니다.

잠재적 결과

  • 개인 키 유출로 인해 지갑이 관리하는 주소에 있는 모든 자금이 도난당할 수 있습니다.
  • 해당 시스템의 작동이 차단되어 공격자들이 자금을 빼돌리고 있습니다.
  • 프로젝트에 대한 신뢰도 상실, 재정적 손실 및 평판 손실.

취약점을 안전하게 해결하는 방법

기밀 정보를 안전하게 보호하고 공격을 방지하려면 다음과 같은 접근 방식을 사용해야 합니다.

  1. 암호를 하드코딩하는 것을 피하십시오.   비밀 단어의 값은 보호된 소스에서 가져와야 합니다. 예를 들면 다음과 같습니다.
    • 안전한 비밀 저장소(금고, 환경 변수)에 저장됩니다.
    • 제한된 구성 파일에서 로드 중입니다.
    • 실행 시 사용자에게 입력을 요청하거나 보안 입력을 제공합니다.
  2. 비밀번호 관리자 사용:   특수 소프트웨어를 사용하여 비밀번호를 관리합니다.
  3. 구성 파일 접근 보호:   암호가 설정된 구성 파일은 서비스 사용자만 접근할 수 있어야 합니다.

안전한 고정 코드의 예

암호를 직접 입력하는 대신:

자바String securePassphrase = System.getenv("ELECTRUM_WALLET_PASSPHRASE");
if (securePassphrase == null || securePassphrase.isBlank()) {
    throw new IllegalStateException("Passphrase must be set in environment variable ELECTRUM_WALLET_PASSPHRASE");
}

this.electrumClient.delegate().createWallet(CreateParams.builder()
        .walletPath(walletParams.getWalletPath())
        .password(walletParams.getPassword().orElse(null))
        .passphrase(securePassphrase)
        .encryptFile(walletParams.getPassword().isPresent())
        .build());
  • 여기서 암호는 환경 변수에서 가져오므   ELECTRUM_WALLET_PASSPHRASE로 비밀 정보가 코드와 분리됩니다.
  • 서비스를 시작할 때 관리자는 환경 변수가 설정되어 있고 기밀로 유지되는지 확인해야 합니다.
  • 지갑 파일을 암호화하는 데 사용되는 비밀번호 또한 안전하게 관리됩니다.

공격 예방을 위한 권장 사항

  • 비밀분리 원칙을 적용하십시오.
  • 클라우드 환경에서는 인프라 보안 도구(Vault, KMS 등)를 사용하십시오.
  • 비밀 정보 접근에 대한 감사 기능을 제공합니다.
  • 비밀 키 변경 및 정기적인 보안 모니터링을 시행하십시오.
  • 버전 관리 시스템에 비밀 정보를 저장하지 마십시오.

결론

암호화폐 애플리케이션 개발에서 흔히 발생하는 실수 중 하나는 소스 코드에 암호를 하드코딩하는 취약점입니다. 이로 인해 개인 키가 유출되거나 도난당할 수 있습니다. 안전한 암호 저장 및 관리는 자금과 인프라를 보호하는 데 핵심적인 요소입니다. 환경 변수, 암호 관리자, 접근 제한 및 감사 기능을 활용하면 이러한 취약점을 효과적으로 제거하고 잠재적인 공격을 예방할 수 있습니다.

비밀 정보 관리 모범 사례를 지원하고 엄격히 준수하는 것은 전문적인 암호화폐 지갑 소프트웨어 개발에서 필수적인 기준입니다.


이 글을 마무리하며 강조하고 싶은 점은, 일렉트럼 비트코인 ​​지갑의 심각한 취약점, 즉 개방적이고 보호되지 않은 JSON-RPC 인터페이스, 하드코딩된 비밀번호 사용, 그리고 취약한 지갑 보안이 사용자 보안과 비트코인 ​​생태계 전체에 극도로 위험한 결과를 초래했으며, 지금도 여전히 그러한 결과를 야기하고 있다는 것입니다.

이 취약점은 원격 공격자가 악성 웹사이트를 통해 공개된 지갑을 완전히 장악하고, 개인 키를 유출하는 등 임의의 명령을 실행하여 막대한 양의 비트코인을 탈취할 수 있도록 했습니다. 2016년 말 이후 이 취약점을 악용한 사례들로 인해 수천만 달러가 넘는 피해가 발생했으며, 이는 수많은 조사와 피해자 보고서를 통해 확인되었습니다.

과학적으로 이 문제는 “하드 코딩된 비밀번호 사용”(CWE-798) 취약점과 원격 통화 인터페이스에서 적절한 인증이 부족하여 발생하는 취약점에 해당합니다. 암호학적 관점에서 이러한 공격은 개인 키 유출을 의미하며, 이는 자금 관리 능력 상실과 비트코인 ​​프로토콜에 내재된 제로 트러스트 보호 기능의 무력화로 이어집니다.

Electrum 3.0.5 버전에서 개발자들이 배포한 수정 사항들은 대부분의 심각한 취약점을 해결했습니다. 여기에는 복잡한 비밀번호를 사용한 지갑 암호화 의무화와 안전하지 않은 JSON-RPC 비활성화가 포함됩니다. 그러나 취약한 구버전 지갑을 사용하는 사용자들과 업데이트를 소홀히 하는 사용자들의 문제는 여전히 남아 있습니다.

따라서 이번 사건은 엄격한 개인정보 관리, 시의적절한 소프트웨어 업데이트, 그리고 고객 지갑에 대한 포괄적인 보호의 필요성을 강조합니다. 이러한 조치가 없다면 아무리 최첨단 암호화 기술이라도 사용자의 개인 키 유출과 디지털 자산 도난을 막을 수 없습니다.

업계 리더와 개발자들은 암호화폐와 블록체인 기술에 대한 신뢰를 유지하기 위해 사용 편의성과 최고 수준의 보안 사이의 균형을 맞추면서 이러한 취약점을 최소화하는 데 집중해야 합니다.

이는 전체 암호화폐 커뮤니티에 주는 교훈이며, 보안은 소프트웨어의 모든 요소, 특히 비트코인 ​​개인 키 관리와 같은 민감한 영역에서 적절한 설계와 구현에서 시작된다는 것을 보여줍니다.  cryptocrypto+4


  1. https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
  2. https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
  3. https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah
  4. https://www.ixbt.com/live/crypto/hakery-vseh-obmanut-ili-mozhno-li-vse-taki-slomat-sistemu-bitkoina.html
  5. https://top-technologies.ru/ru/article/view?id=37634
  6. https://forklog.com/news/eksperty-ugroza-kvantovoj-ataki-na-kriptovalyuty-preuvelichena
  7. https://cyberleninka.ru/article/n/metodika-analiza-dannyh-v-blokcheyn-sisteme-bitcoin
  8. https://opennet.ru/56670/
  9. https://coinsutra.com/ru/bitcoin-private-key/
  10. https://support.ledger.com/ru/article/360015738179-zd

출처:

  1. https://pikabu.ru/@CryptoDeepTech
  2. https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3526-private-key-debug-%D0%BD%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F- %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-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0% B8-%D0%B8-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D0%B2-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD %D0%B8%D0%B8-%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0-%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%8 7%D0%B5%D1%81%D0%BA%D0%BE%D0%B9-%D0%BA%D1%80%D0%B8%D0%B2%D0%BE%D0%B9-secp256k1-%D1%83%D0%B3%D1%80%D0%BE %D0%B7%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%8D%D0%BA%D0%BE%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-bitcoin%2F
  3. https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
  4. https://habr.com/ru/articles/939560/
  5. https://habr.com/ru/companies/ruvds/articles/936492/
  6. https://www.gate.com/ru/learn/articles/collateral-risk-assessment-threshold-btc/1262

필요하다면 자바, 파이썬 또는 기타 언어로 작성된 개인 키의 안전한 관리 및 보안 키 생성 관련 코드 예제도 제공해 드릴 수 있습니다.

  1. https://bluescreen.kz/niesiekrietnyi-kliuch-issliedovatieli-obnaruzhili-uiazvimosti-v-kriptokoshielkakh/
  2. https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
  3. https://www.securitylab.ru/news/531248.php
  4. https://forklog.com/news/in-chips-for-bitcoin-koshelkov-obnaruzhili-kriticheskuyu-uyazvimost
  5. https://habr.com/ru/articles/430240/
  6. https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
  7. https://temofeev.ru/info/articles/padding-oracle-attack-na-wallet-dat-rasshifrovka-parolya-dlya-populyarnogo-koshelka-bitcoin-core/
  8. https://www.pvsm.ru/uyazvimost/299450
  9. https://habr.com/ru/articles/817237/
  10. https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah

 암호해독

By