캐시 포이즈닝 공격 및 데이터 무결성 위반 — 비트코인 ​​노드에 RPC 암호를 저장하는 과정에서 심각한 암호화 취약점 발견: 개인 키 유출 및 비트코인 ​​암호화폐 네트워크에 대한 위험한 공격 가능성

키헌터 작성 

비트코인 JSON-RPC에서 치명적인 캐시 포이즈닝 취약점 발견: 보안 문제 및 핵심 데이터 보호 방안  .  비트코인 ​​무결성 공격: Sha256Hash 처리 오류로 인한 치명적인 트랜잭션 및 블록 캐싱 취약점  .  비트코인 ​​암호화 붕괴: 치명적인 Sha256Hash 캐시 취약점 및 캐시 포이즈닝 공격 가능성

RPC 암호 취약점이 비트코인 ​​암호화폐에 대한 위험한 공격의 원인이 되어 제어권 탈취 및 자금 도난으로 이어질 수 있다는 주장은 과학적이고 유익하며 보안 문제에 대한 관심을 불러일으킵니다.


Java 애플리케이션에서 RPC 암호를 평문으로 저장하고 전송하는 것과 관련된 암호화 취약점은 과학 문헌 및 정보 보안 실무에서   보호되지 않은 원격 프로시저 호출 공격(RPC 인젝션/무단 RPC 액세스) 으로 알려진 심각한 공격으로 이어질 수 있습니다  .

비트코인 암호화폐에 대한 취약점 공격의 영향

RPC 암호 구성의 취약점을 이용하여 공격자는 다음과 같은 작업을 수행할 수 있습니다.

  • 비트코인 노드의 RPC 인터페이스에 무단으로 접근합니다.
  • 사용자를 대신하여 잔액 이체, 거래 생성 및 전송 등 임의의 작업을 수행할 수 있습니다.
  • 암호화 키와 지갑에 대한 제어권을 탈취당하면 자금 도난 으로 이어질 수 있습니다    .
  • 거래 및 네트워크 변경을 포함하여 무결성과 기밀성을 침해하는 행위.

비트코인 암호화폐의 맥락에서 이는 사용자 자금 및 인프라 보안에 대한 직접적인 위협을 의미하며, 여기에는 키 저장 및 전송에 대한 완전한 통제권 확보가 포함됩니다.

공격의 과학적 명칭

과학 및 기술 용어로 이러한 공격은 다음과 같이 분류됩니다.

  • 무단 RPC 접근/RPC 인젝션 공격   – RPC 인증을 우회하거나 손상시켜 원격 프로시저 호출을 공격하는 방식입니다.
  • 자격 증명 유출 공격은   자격 증명의 저장 및 관리상의 취약점으로 인해 발생하는 공격입니다.
  • RPC를 통한 원격 코드 실행(RCE)   – 취약점으로 인해 임의의 코드가 원격으로 실행될 수 있는 경우.

CVE 링크

관련 취약점 및 CVE 데이터베이스를 검토한 결과, 비트코인 ​​자바 라이브러리에서 RPC 암호를 잘못 저장하는 특정 취약점은 고유한 CVE 번호가 없지만, 메커니즘 측면에서 유사한 RPC 취약점은 CVE로 광범위하게 분류되어 있음을 알 수 있습니다.

  • 예를 들어,     CVSS 점수 9.8점을 받은 마이크로소프트 RPC의 심각한 무인증 원격 코드 실행 취약점인 CVE-2022-26809는 이러한 공격의 영향을 보여  줍니다 .
  • RPC 비밀 키 및 접근 제어 침해 취약점은 일반적으로 CWE-284(부적절한 접근 제어) 및 CWE-285(부적절한 권한 부여)로 분류됩니다.

결론

RPC 암호의 부적절한 저장 및 전송으로 인해 발생하는 암호화 취약점은 위험한 공격으로 이어지는데, 이는 과학 및 산업계에서   무단 RPC 접근   또는   RPC 주입 공격 으로 분류됩니다  . 비트코인 ​​암호화폐의 경우, 이는 지갑의 완전한 탈취와 자금 손실 가능성을 의미합니다. 이 자바 라이브러리에 대한 별도의 CVE는 없지만, 등록된 RPC 취약점과 마찬가지로 이러한 유형의 취약점은 매우 심각하며 즉각적인 제거가 필요합니다.


관심 있으시면 위협 요인과 보호 방법을 심층적으로 분석한 상세한 과학 연구 논문을 작성하여 출판하는 데 도움을 드릴 수 있습니다.


암호화 취약점

이 코드의 암호화 취약점은 비밀/개인 데이터, 특히 RPC 암호와 사용자 이름의 처리 및 저장과 관련이 있습니다.

잠재적으로 가장 취약한 부분은 RPC 암호를 구성 객체에 전달하는 부분입니다.

자바:

.password(properties.getRpcpassword())

해당 내용은 메서드 내에 있습니다.

자바:

RpcConfig bitcoinJsonRpcConfig(NetworkParameters bitcoinNetworkParameters,
ObjectProvider<RpcConfigBuilderCustomizer> rpcConfigBuilderCustomizer) {
RpcConfigBuilder rpcConfigBuilder = new RpcConfigBuilder(bitcoinNetworkParameters, properties.getRpchost(), properties.getRpcport())
.username(properties.getRpcuser())
.password(properties.getRpcpassword()); // <-- Здесь
rpcConfigBuilderCustomizer.orderedStream().forEach(customizer -> customizer.customize(rpcConfigBuilder));
return rpcConfigBuilder.build();
}
43bitcoin-spring-boot-starter/blob/devel/bitcoin-jsonrpc-client/bitcoin-jsonrpc-client-autoconfigure/src/main/java/org/tbk/bitcoin/jsonrpc/config/BitcoinJsonRpcClientAutoConfiguration.java
https://github.com/theborakompanioni/bitcoin-spring-boot-starter/blob/devel/bitcoin-jsonrpc-client/bitcoin-jsonrpc-client-autoconfigure/src/main/java/org/tbk/bitcoin/jsonrpc/config/BitcoinJsonRpcClientAutoConfiguration.java

취약한 이유:

  • RPC 암호는 구성 속성에서 가져온 다음 RpcConfigBuilder 객체에 직접 전달됩니다.
  • 암호가 암호화되지 않은 평문으로 저장되는 경우   properties (예: 설정 파일), 이는 암호화 없이 비밀 데이터를 저장하는 취약점입니다.
  • 값이   properties.getRpcpassword() 로그에 기록되거나 텍스트 형태로 로그에 전달될 수 있는 경우에도 취약점이 발생할 수 있으며, 이는 오류 발생 시 또는 디버깅 중에 자주 발생합니다.
  • 코드에 암호 보호나 마스킹 처리가 되어 있지 않아 비밀 키 유출 가능성이 있습니다.

권장 사항:

  • RPC 암호를 안전한 암호 저장소(예: Hashicorp Vault, AWS Secrets Manager)에 저장하십시오.
  • 비밀번호를 평문으로 전송하지 말고 암호화하여 안전하게 처리하십시오.
  • 비밀번호를 로그나 예외 처리에 기록하지 마십시오.
  • 비밀 키를 사용하여 구성 파일에 대한 접근 제어를 구현하십시오.

이 코드에서는 개인 키가 유출될 수 있는 다른 직접적인 부분이 없습니다. 왜냐하면 작업이 클라이언트의 RPC 구성 수준에서 수행되기 때문입니다.

만약 특정 비트코인 ​​키 유출에 관심이 있다면, 이 코드는 비트코인 ​​개인 키를 직접 다루는 방법을 보여주는 것이 아닙니다.


보정

아래는 자바 애플리케이션에서 RPC 암호 처리 시 발생하는 암호화 취약점에 대한 과학 논문입니다. 이 논문은 취약점의 원인 분석, 안전한 해결 방법, 수정된 코드 예시, 그리고 유사 공격 방지를 위한 권장 사항을 제시합니다.


캐시 포이즈닝 공격 및 데이터 무결성 위반 — 비트코인 ​​노드에 RPC 암호를 저장하는 과정에서 심각한 암호화 취약점 발견: 개인 키 유출 및 비트코인 ​​암호화폐 네트워크에 대한 위험한 공격 가능성

Dockeyhunt 암호화폐 가격


성공적인 복구 시연: 2,099,50000 BTC 지갑

사례 연구 개요 및 검증

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

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


캐시 포이즈닝 공격 및 데이터 무결성 위반 — 비트코인 ​​노드에 RPC 암호를 저장하는 과정에서 심각한 암호화 취약점 발견: 개인 키 유출 및 비트코인 ​​암호화폐 네트워크에 대한 위험한 공격 가능성

www.bitseed.ru


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

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


캐시 포이즈닝 공격 및 데이터 무결성 위반 — 비트코인 ​​노드에 RPC 암호를 저장하는 과정에서 심각한 암호화 취약점 발견: 개인 키 유출 및 비트코인 ​​암호화폐 네트워크에 대한 위험한 공격 가능성

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


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

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


캐시 포이즈닝 공격 및 데이터 무결성 위반 — 비트코인 ​​노드에 RPC 암호를 저장하는 과정에서 심각한 암호화 취약점 발견: 개인 키 유출 및 비트코인 ​​암호화폐 네트워크에 대한 위험한 공격 가능성

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


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


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a47304402204cdebda8f2ebceb8f4f924a1ec853800f662f716c134bc1490f4d5ca9e3a2e7402201b354b725c4fda7c1343e3b18486650eab08e7128dcef227d94c87a1b4777b4501410498bb2db5dec852a32bd2a90f33fca36651e46e164816baa730523199747d5a0552f6a824a9ad6cd34ab9df67d18f39f64a9246559e88f5df00b2d97c8484ba42ffffffff030000000000000000446a427777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a2024203236333935392e36335de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a91409b508bae503da42f05575891866d0072bcf65f688ac00000000

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


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

도구 개요 및 개발 배경

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

이 도구는   암호 분석 요소와 최적화된 검색 방법론을 결합한  체계적인 스캔 알고리즘을 구현합니다. 이 도구의 아키텍처는 비트코인 ​​네트워크의 방대한 주소 공간에서 취약한 지갑을 효율적으로 식별하는 동시에 취약점으로 인해 발생하는 수학적 제약을 해결하도록 특별히 설계되었습니다. 이는 블록체인 포렌식 기능 에 있어 중요한 진전을 의미하며 , 악의적인 공격에 의해 악용될 때까지 발견되지 않을 수 있는 광범위한 취약점을 체계적으로 평가할 수 있게 해줍니다.


기술 아키텍처 및 운영 원칙

CryptoDeepTech 분석 도구는 여러  상호 연결된 모듈 로 구성되어 있으며 , 각 모듈은 취약점 식별 및 악용 과정의 특정 측면을 담당합니다.

  1. 취약점 패턴 인식 모듈 : 이 구성 요소는 공개 키 생성 과정에서 나타나는 약한 엔트로피의 수학적 특징을 식별합니다. 블록체인 상의 공개 키 구조적 특성을 분석하여 취약성과 일관된 특성을 보이는 주소를 표시할 수 있습니다.
  2. 결정론적 키 공간 열거 엔진 : 이 도구의 핵심인 이 엔진은 엔트로피 취약점으로 인해 축소된 키 공간을 체계적으로 탐색합니다. 보안 키 생성에 대한 무차별 대입 방식과 비교하여 계산 요구 사항을 획기적으로 줄이는 최적화된 검색 알고리즘을 구현합니다.
  3. 암호화 검증 시스템 : 이 모듈은 표준 타원 곡선 암호화를 사용하여 대상 공개 주소에 대해 후보 개인 키를 실시간으로 검증합니다. 이를 통해 유효한 키 쌍만 성공적인 복구로 식별되도록 보장합니다.
  4. 블록체인 통합 레이어 : 이 도구는 비트코인 ​​네트워크 노드와 직접 연동하여 주소, 잔액 및 거래 내역을 검증하고, 취약한 지갑과 그 내용에 대한 상황 정보를 제공합니다.

이 도구의 작동 원리는  응용 암호 분석 에 기반을 두고 있으며 , 특히 키 생성 과정에서 엔트로피 부족으로 인해 발생하는 수학적 취약점을 표적으로 삼았습니다. ESP32 의사난수 생성기(PRNG) 결함의 정확한 특성을 이해함으로써 연구원들은 제한된 검색 공간을 효율적으로 탐색하는 알고리즘을 개발할 수 있었고, 일반적으로 불가능한 계산 작업을 실행 가능한 복구 작업으로 전환할 수 있었습니다.


#출처 및 제목주요 취약점영향을 받는 지갑/기기크립토딥테크 역할주요 증거/세부 사항
1크립토뉴스닷컴(CryptoNews.net) 보도

: 비트코인 ​​지갑에 사용되는 중국산 칩이 거래자들을 위험에 빠뜨리고 있다.
중국산 ESP32 칩에서 발견된 CVE-2025-27840 취약점에 대해 설명합니다. 이 취약점은
무단 거래 서명 및 원격 개인 키 탈취를 허용합니다.
ESP32 기반 비트코인 ​​하드웨어 지갑 및 ESP32를 사용하는 기타 IoT 장치.
크립토딥테크는 화이트햇 해커들이 칩을 분석하고 취약점을 발견한 사이버 보안 연구 회사라고 소개합니다 .
크립토딥테크(CryptoDeepTech)가 거래 서명을 위조하고
10 BTC가 들어 있는 실제 지갑의 개인 키를 복호화하여
해당 공격이 실현 가능하다는 것을 입증했다는 점에 주목하십시오.
2Bitget 뉴스:

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 지갑을 대상으로 테스트했습니다.
4Poloniex Flash

Flash 1290905 – ESP32 칩 취약점
비트코인 지갑에 사용되는 ESP32 칩에 심각한
취약점(CVE-2025-27840)이 있어 개인 키 도난으로 이어질 수 있다는 짧은 경고입니다.
ESP32 기반 모듈 및 관련 네트워크
장치를 사용하는 비트코인 ​​지갑.
해당 취약점에 대한 해외 언론 보도를 전달하고,
독자들에게 독립적인 전문가들의 외부 연구 자료를 참조하도록 암묵적으로 안내합니다.
완전한 분석이라기보다는 시장 뉴스 지표 역할을 하지만,
거래자들 사이에서 ESP32/CVE-2025-27840 문제에 대한 인식을 높이는 데 도움이 됩니다.
5X(트위터) – BitcoinNewsCom이

ESP32의 CVE-2025-27840에 대해 트윗했습니다.

여러 유명 비트코인 ​​하드웨어 지갑에 사용되는 ESP32 칩에서 심각한 취약점(CVE-2025-27840)을 발견했다고 발표합니다 .
ESP32 기반의 “여러 유명 비트코인 ​​하드웨어 지갑”과 더
넓은 암호화폐 하드웨어 생태계.
(링크된 기사에 보도된) 보안 연구원들의 연구 성과를 강조하지만
, 연구팀에 대한 자세한 정보는 제공하지 않습니다. 기본 정보는
CryptoDeepTech에서 가져왔습니다.
X에 대한 신속한 뉴스 배포 수단으로, CryptoDeepTech의 익스플로잇 시연 및 10 BTC 테스트 지갑에
대한 자세한 내용을 담은 장문의 기사 로 트래픽을 유도합니다.
6ForkLog (EN)

비트코인 ​​지갑 칩에서 심각한 취약점 발견
ESP32의 CVE-2025-27840 취약점을 통해 공격자가 업데이트를 이용해 마이크로컨트롤러를 감염시키고
, 승인되지 않은 거래에 서명하고,
개인 키를 탈취하는 방법에 대한 자세한 내용입니다.
ESP32 칩은 수십억 개의 IoT 기기와
Blockstream Jade와 같은 하드웨어 지갑에 사용됩니다.
해당 문서에서는 크립토딥테크(CryptoDeepTech) 전문가들이 결함을 발견하고,
다양한 공격 방식을 테스트하며, 실제 익스플로잇을 수행했다고 명시적으로 밝히고 있습니다.
이 글에서는 CryptoDeepTech의 스크립트를 사용하여 유효하지 않은 키를 생성하고,
비트코인 ​​서명을 위조하고, 소규모 그룹
공격을 통해 키를 추출하고, 가짜 공개 키를 제작하는 방법을 설명하며,
실제 10 BTC 지갑에서 검증한 결과를 제시합니다.
7AInvest

비트코인 ​​지갑, 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가 들어 있는 지갑의 개인 키를 성공적으로 해독했다는 보고가 나왔는데
, 이는 그들의 뛰어난
암호 분석 능력을 보여주는 것이다.
9CoinGeek

의 Blockstream Jade 지갑과 ESP32 칩 내부에 숨겨진 위협
이 보고서는 CVE-2025-27840을 하드웨어 지갑
결함의 더 넓은 맥락에서 다루며, ESP32의 취약한 난수성으로 인해 개인 키를
추측하기 쉽고 자체 보관 보안을 약화시킨다는 점을 강조합니다.
ESP32 기반 지갑(Blockstream Jade 포함) 및
ESP32로 제작된 모든 DIY/맞춤형 서명 도구.
CryptoDeepTech의 연구가 이론을 넘어 실제 행동으로 이어졌음을 강조합니다. 그들은
ESP32의 취약점을 이용해 10 BTC가 들어 있는 지갑을 해킹했습니다.
크립토딥테크(CryptoDeepTech)의 10 BTC 지갑 해킹 성공
사례를 중심으로, 칩 수준의 취약점이
하드웨어 지갑을 대규모로 조용히 손상시킬 수 있음을 주장합니다.
10ESP32 칩 결함 으로

암호화폐 지갑이 해킹 위험에 노출됨…

CVE-2025-27840은 취약한 의사난수 생성기(PRNG), 유효하지 않은 개인 키 허용, 그리고
위조된 ECDSA 서명 및 키 도용을 허용하는 Electrum 관련 해싱 버그 의 조합으로 분석됩니다 .
ESP32 기반 암호화폐 지갑(예: Blockstream Jade) 및
ESP32가 내장된 다양한 IoT 장치.
해당 취약점을 발견하고
, CVE를 등록하고,
통제된 시뮬레이션에서 키 추출을 시연한 CryptoDeepTech의 사이버 보안 전문가들에게 공로를 돌립니다.

이 글은 크립토딥테크(CryptoDeepTech)가 10 BTC가 들어 있는 지갑에서 개인 키를 어떻게 은밀하게 추출했는지 설명하고 ,
일렉트럼(Electrum) 기반 지갑과 전 세계 IoT 인프라에 미치는 영향에 대해 논의합니다.
11ForkLog (RU)

В чипах для биткоин‑кошельков обнаружили критическуу уязвимость
ESP32의 CVE-2025-27840 취약점에 대한 러시아어 보도 자료입니다. 이 자료에서는
공격자가 업데이트를 통해 칩을 감염시키고, 승인되지 않은
거래에 서명하고, 개인 키를 탈취할 수 있다고 설명합니다.
ESP32 기반 비트코인 ​​하드웨어 지갑(Blockstream Jade 포함)
및 기타 ESP32 기반 장치.

크립토딥테크 전문가들이 해당 칩의 결함에 대한 연구, 실험 및 기술적 결론 의 출처라고 설명합니다 .
영어 버전과 동일한 실험 목록을 제공합니다. 유효하지 않은 키
생성, 서명 위조, ECC 하위 그룹 공격 및 가짜
공개 키 등 모든 실험은 실제 10 BTC 지갑에서 테스트되었으며, 이는
CryptoDeepTech가 실무 암호 분석가로서의 역할을 강화합니다.
12SecurityOnline.info

CVE-2025-27840: 초소형 ESP32 칩으로 전 세계 비트코인 ​​지갑을 해킹할 수 있는 방법
후원자 전용 심층 분석 영상입니다.
ESP32 설계의 작은 결함이 어떻게 전 세계 비트코인 ​​지갑을 위협할 수 있는지 집중적으로 다룹니다
. (CVE-2025-27840 관련 내용)
전 세계의 비트코인 ​​지갑 및 기타 장치들은 ESP32
마이크로컨트롤러에 의존합니다.
CryptoDeepTech에서 제공한 이미지를 사용하고 있으며, 해당 보고서를
그들의 연구를 기반으로 한 전문적인 취약점 분석으로 제시합니다.
전체 내용은 유료 구독자만 볼 수 있지만, 예고편을 통해
해당 기사가 CryptoDeepTech의 조사 결과와 마찬가지로 ESP32 결함과 이로 인한
지갑 개인 키 노출 문제를 다루고 있음을 알 수 있습니다.


심각한 취약점 분석: BingSec256k1 – 비트코인 ​​RPC 인증 시스템에 대한 ECDSA 논스 재사용 공격

캐시 포이즈닝 공격 및 데이터 무결성 위반 — 비트코인 ​​노드에 RPC 암호를 저장하는 과정에서 심각한 암호화 취약점 발견: 개인 키 유출 및 비트코인 ​​암호화폐 네트워크에 대한 위험한 공격 가능성
https://b8c.ru/BingSec256k1/

제공된 RPC 암호 취약점 관련 기사와 포괄적인 도구 목록을 분석한 결과, 본 논문에서는 BingSec256k1을 주요 연구 대상으로 선정했습니다. 이 도구는 비트코인 ​​암호화 인프라의 핵심 취약점, 특히 개인 키 추출 및 지갑 복구에 악용될 수 있는 ECDSA nonce 재사용 취약점을 정교하게 악용하는 방식을 보여줍니다.

추상적인

본 논문은 BingSec256k1 도구와 이 도구가 비트코인의 타원 곡선 디지털 서명 알고리즘(ECDSA) 구현에서 발견되는 심각한 암호화 취약점을 악용하는 방식에 대한 종합적인 분석을 제시합니다. 본 연구는 Elliptic JavaScript 라이브러리에서 부적절한 nonce 생성 방식이 어떻게 개인 키의 완전한 유출과 비트코인 ​​지갑에 대한 무단 접근으로 이어질 수 있는 악용 가능한 취약점을 만들어내는지를 살펴봅니다. 이러한 취약점이 안전하지 않은 RPC 암호 저장 방식과 결합되어 비트코인 ​​암호화 인프라의 근본적인 보안 가정을 ​​위협하는 복합적인 공격 벡터를 형성하는 방식을 보여줍니다. b8c

소개

비트코인 및 기타 암호화폐의 보안은 근본적으로 타원 곡선 암호화, 특히 secp256k1 곡선과 ECDSA 서명 방식의 수학적 특성에 달려 있습니다. 그러나 수학적으로 완벽한 알고리즘이라 할지라도 구현이 부적절하거나 보조 보안 조치가 실패할 경우 취약해질 수 있습니다. 본 논문에서는 두 가지 핵심 취약점, 즉 ECDSA nonce 재사용 공격과 RPC 인증 시스템에서 평문 자격 증명 저장 문제를 집중적으로 분석합니다.

최근 연구에 따르면 ECDSA 구현은 난수 값 k가 예측 가능하거나, 재사용되거나, 편향될 경우 공격에 특히 취약한 것으로 나타났습니다. 이러한 취약점은 실제 공격에 악용되었으며, 비트코인 ​​거래에서 취약한 서명 생성을 통해 개인 키를 복구한 사례가 보고되었습니다. BingSec256k1 도구는 이러한 공격 기법을 고도로 구현한 것으로, 특히 널리 사용되는 Elliptic JavaScript 라이브러리의 취약점을 표적으로 합니다. notsosecure+4

기술적 배경: ECDSA 취약성 기초

ECDSA에서 Nonce 보안의 핵심적인 역할

ECDSA 서명 생성 과정은 각 서명마다 암호학적으로 안전한 난수 k (nonce)를 필요로 합니다. nonce, 개인 키, 서명 구성 요소 간의 수학적 관계는 BingSec256k1에서 악용된 근본적인 취약점을 만들어냅니다.

ECDSA 서명 (r, s) 의 경우 , 다음과 같습니다.

  • r = (k × G).x mod n (k×G의 x좌표)
  • s = k⁻¹(H(m) + r × d) mod n (서명 증명)

두 개의 서로 다른 서명에서 동일한 논스 k가 사용되는 경우, 공격자는 대수적 조작을 통해 개인 키 d를 수학적으로 유도할 수 있습니다 . 이러한 공격 방식은 암호화폐 생태계에서 광범위하게 보고되고 악용되어 왔습니다. github+1

BingSec256k1 : 취약점 공격 방법론

BingSec256k1은 정교한 암호 분석 기술을 사용하여 비트코인 ​​거래에서 nonce 관련 취약점을 식별하고 악용합니다. 이 도구는 b8c를 포함한 여러 주요 공격 벡터를 통해 작동합니다.

논스 재사용 감지 : 이 도구는 블록체인 트랜잭션을 분석하여 동일한 k 값이 여러 번 사용된 서명을 식별합니다. 이렇게 하면 개인 키 복구가 수학적으로 매우 쉬워집니다. b8c

예측 가능한 난수 생성 : BingSec256k1은 Elliptic 라이브러리의 의사 난수 생성기(PRNG)의 취약점을 악용합니다. 이 취약점은 불충분한 엔트로피 또는 알고리즘적 결함으로 인해 예측 가능한 논스 시퀀스를 생성합니다. b8c

격자 기반 공격 : 부분적인 논스 유출이나 편향이 있는 경우, 이 도구는 고급 격자 축소 기법을 사용하여 불완전한 정보로부터 개인 키를 복구합니다. research.kudelskisecurity+2

복합 공격 벡터: RPC 인증 취약점

원문 기사에서 다룬 RPC 암호 저장 취약점은 ECDSA nonce 공격과 결합될 경우 복합적인 공격 시나리오를 만들어냅니다. Java Spring Boot 구현 사례는 이러한 심각한 취약점을 보여줍니다.

자바private String rpcpassword; // Plaintext storage vulnerability

.password(properties.getRpcpassword()) // Unprotected transmission

이 취약점 분류는 자격 증명 유출 공격 에 해당 하며 다음과 같은 공격 체인을 생성합니다: github

  1. 초기 접근 : 공격자는 구성 파일에 저장된 평문 RPC 자격 증명에 접근합니다.
  2. RPC 인터페이스 침해 : 공격자는 획득한 자격 증명을 사용하여 비트코인 ​​노드의 RPC 인터페이스에 대한 제어권을 확보했습니다.
  3. 거래 모니터링 : 공격자는 ECDSA 취약점을 찾기 위해 나가는 거래를 모니터링하고 분석합니다.
  4. 논스 분석 : BingSec256k1은 거래 서명에서 취약하거나 재사용된 논스를 식별합니다.
  5. 개인 키 추출 : 개인 키를 수학적으로 복구하면 지갑 전체를 탈취할 수 있습니다.

CVE 컨텍스트 및 위협 분류

BingSec256k1 공격 방식에 대한 특정 CVE는 존재하지 않지만, 몇 가지 관련 취약점을 통해 위협의 심각도를 파악할 수 있습니다.

CVE-2024-31497 : PuTTY의 ECDSA 논스 편향 취약점으로 인해 약 60개의 서명만으로 개인 키를 복구할 수 있습니다. 이는 실제 구현 환경에서 논스 기반 공격이 실현 가능하다는 것을 보여줍니다. cvedetails+1

CVE-2022-26809 : CVSS 점수 9.8의 심각한 RPC 취약점으로, RPC 기반 공격을 통해 원격 코드 실행이 가능한 방법을 보여줍니다. 이는 RPC 인증 우회를 심각한 취약점으로 분류하는 선례를 제공합니다. sangfor+1

CVE-2024-13176 : ECDSA 서명 계산에서 최근 발견된 타이밍 사이드 채널 취약점으로, 개인 키 복구가 가능하며, 이는 ECDSA 구현상의 취약점에 대한 지속적인 연구 및 발견을 보여줍니다. exploitdog+1

RPC 인증 우회 및 ECDSA nonce 취약점을 모두 악용하는 복합 공격은 다음과 같은 이유로 CVSS 점수 9.0~9.8(심각) 등급을 받을 가능성이 높습니다.

  • 원격 공격 기능
  • 시스템 전체 손상 가능성
  • 사용자 상호 작용이 필요하지 않습니다.
  • 기밀성, 무결성 및 가용성에 큰 영향을 미칩니다.

공격 실행 및 실제 영향

BingSec256k1 운영 방법론

이 도구는 비트코인 ​​지갑 복구를 목표로 하는 다단계 공격 프로세스를 구현합니다: b8c

1단계: 취약점 식별

  • 논스 재사용을 나타내는 수학적 관계를 보여주는 서명을 찾기 위해 블록체인 트랜잭션을 스캔합니다.
  • 타이밍 패턴과 통계적 분포를 분석하여 의사난수 생성기의 약점을 탐지합니다.
  • 취약한 거래가 여러 건 있는 대상 지갑을 식별합니다.

2단계: 암호해독 처리

  • 수학적 기법을 적용하여 서명 쌍에서 논스 값을 추출합니다.
  • 부분 정보 공격에 대한 격자 축소 알고리즘을 구현합니다. cryptodeep+1
  • 복구된 논스 데이터와 공개 서명 정보를 사용하여 개인 키를 계산합니다.

3단계: 지갑 복구

  • 암호 분석 결과를 이용하여 완전한 개인 키를 재구성합니다.
  • 서명 검증을 통해 키 복구의 유효성을 확인합니다.
  • 해킹당한 비트코인 ​​주소를 완벽하게 제어할 수 있습니다.

실제 착취 증거

문서화된 사례들은 이러한 공격 방법론의 실질적인 효과를 입증합니다. 브라이트너와 헤닝거의 연구는 실제 비트코인 ​​블록체인 데이터에서 취약한 거래를 식별했으며, 취약한 ECDSA 구현을 통해 개인 키를 성공적으로 복구했습니다. 주소 15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E 에 대한 거래 08d917f0fee48b0d765006fa52d62dd3d704563200f2817046973e3bf6d11f1f 는 래티스 공격이 성공적으로 구현되어 지갑이 완전히 탈취된 사례로 문서화되었습니다. github+2

복합적인 취약성이 비트코인 ​​보안에 미치는 영향

RPC 자격 증명 노출과 ECDSA nonce 취약점의 결합은 여러 가지 심각한 공격 시나리오를 만들어냅니다.

시나리오 1: 지갑 직접 해킹

  • 공격자가 자격 증명 유출을 통해 RPC 접근 권한을 획득했습니다.
  • dumpprivkey 명령어를 사용하여 개인 키를 직접 추출합니다.
  • 서명에 대한 암호해독 공격의 필요성을 우회합니다.

시나리오 2: 거래 조작

  • RPC 접근을 통해 실시간 거래 모니터링 및 수정이 가능합니다.
  • 공격자는 지갑 잠금 해제 패턴과 타이밍을 관찰할 수 있습니다.
  • 거래 서명 과정에서 타이밍 기반 공격의 가능성을 만듭니다.

시나리오 3: 인프라 전반의 손상

  • 취약한 RPC 구성을 사용하는 상업용 비트코인 ​​서비스는 체계적인 공격에 직면하고 있습니다.
  • 공격자는 대규모 거래 데이터 세트를 대상으로 BingSec256k1을 배포할 수 있습니다.
  • 여러 지갑 시스템을 동시에 자동화된 방식으로 악용할 가능성

탐지 및 완화 전략

기술적 대응책

보안 RPC 구성 :

자바// Secure implementation example
private final SecretKeySpec aesKey;

private String decryptPassword(String encryptedPassword) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, aesKey);
    byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(encryptedPassword));
    return new String(decrypted);
}

ECDSA 강화 조치 :

  • RFC 6979 결정론적 논스 생성 구현 cryptobook.nakov
  • 하드웨어 보안 모듈을 사용하여 키 생성 및 서명을 수행합니다.
  • 통계적 이상 징후를 파악하기 위한 거래 서명에 대한 정기적인 감사
  • nonce 기반 취약점을 제거하기 위해 가능한 경우 Ed25519 서명으로 마이그레이션합니다. (portswigger)

조직 보안 통제

접근 제어 구현 :

  • RPC 인터페이스 접근에 대한 최소 권한 원칙
  • 고액 거래에 대한 다중 서명 요구 사항
  • 즉각적인 악용을 방지하기 위한 시간 잠금 거래 메커니즘
  • 정기적인 키 교환 및 보안 감사

모니터링 및 감지 :

  • nonce 재사용 탐지를 위한 시그니처 패턴의 통계적 분석
  • RPC 접근 패턴 및 이상 징후의 실시간 모니터링
  • 취약한 거래 서명을 식별하기 위한 블록체인 분석

연구의 함의 및 향후 방향

BingSec256k1 도구와 관련된 취약점은 향후 암호화폐 보안 연구에서 몇 가지 중요한 영역을 부각합니다.

고급 암호해독 기법 : 유출된 정보의 양이 적더라도 이를 활용할 수 있는 더욱 정교한 격자 기반 공격 개발. 장기적인 암호화 위협에 대응하기 위한 양자 내성 서명 체계 연구. arxiv+2

구현 보안 : 암호화폐 라이브러리 및 구현을 위한 체계적인 감사 프레임워크. 주요 암호화 연산에 대한 형식적 검증 방법 개발.

복합 공격 모델링 : 다양한 취약점 유형을 결합한 다중 벡터 공격 시나리오 연구. 암호화 및 구현상의 취약점을 모두 고려한 포괄적인 위협 모델 개발.

결론

BingSec256k1 및 관련 취약점 분석은 비트코인 ​​보안이 기본 암호화 알고리즘의 수학적 강도뿐만 아니라 구현 품질 및 지원 인프라에도 달려 있음을 보여줍니다. RPC 자격 증명 노출과 ECDSA nonce 취약점을 결합한 복합 공격 벡터는 비트코인 ​​지갑 보안에 심각한 위협이 되므로 암호화폐 커뮤니티의 즉각적인 관심이 필요합니다.

주요 결과는 다음과 같습니다.

  1. 심각한 취약점 분류 : 평문 RPC 암호 저장과 ECDSA nonce 재사용이 결합되어 악용 가능한 공격 벡터를 생성하며, 이는 CVSS 점수 9.0 이상(심각)에 해당합니다.
  2. 실제 공격 가능성 : BingSec256k1과 같은 도구는 이러한 공격이 단순히 이론적인 것이 아니라 실제 비트코인 ​​인프라에 대해 성공적으로 구현될 수 있음을 보여줍니다.
  3. 체계적 위험 : 취약한 라이브러리와 설정 방식이 널리 사용됨에 따라 비트코인 ​​생태계 전반에 걸쳐 체계적 위험이 발생합니다.
  4. 완화 요구 사항 : 이러한 취약점을 해결하려면 암호화 구현, 구성 관리 및 운영 보안 관행을 포함한 여러 계층에 걸쳐 조정된 노력이 필요합니다.

암호화폐 업계는 이러한 정교한 공격 방식에 대응하기 위해 포괄적인 보안 감사, 안전한 구현 방식, 그리고 심층 방어 전략을 우선시해야 합니다. 암호 이론과 실제 구현 보안 모두에 체계적인 관심을 기울여야만 비트코인 ​​네트워크는 진화하는 위협 속에서도 근본적인 보안을 유지할 수 있습니다.

감사의 말씀

본 연구는 암호화 취약점 분석 분야의 광범위한 선행 연구, 특히 ECDSA 구현 취약점 및 비트코인 ​​보안 인프라를 조사한 연구자들의 기여를 바탕으로 합니다. 다양한 CVE 데이터베이스, 학술 연구, 그리고 실제 보안 구현 사례를 종합하여 현재의 위협 환경에 대한 포괄적인 평가를 제공합니다.


본 논문에 제시된 견해는 연구 및 교육 목적으로만 사용될 수 있습니다. 취약점 악용 도구 분석은 방어 능력 향상을 위한 것이며, 암호화폐 시스템에 대한 무단 접근에 사용되어서는 안 됩니다.


Java 애플리케이션에서 RPC 암호를 사용할 때 발생하는 암호화 취약점 분석 및 제거

소개

비트코인 노드 및 기타 서비스와 상호 작용하는 최신 시스템은 원격 프로시저 호출(RPC) 메커니즘을 널리 사용합니다. RPC 클라이언트는 일반적으로 로그인과 비밀번호를 사용하여 인증되는데, 이러한 정보는 종종 구성 파일에 저장되고 애플리케이션 내에서 평문으로 전송됩니다. 이는 잠재적인 암호화 취약점을 야기하여 기밀 데이터 유출 및 애플리케이션 제어권 탈취로 이어질 수 있습니다. 특히 Java 애플리케이션에서 이러한 취약점은 RPC 비밀번호의 지원되지 않거나 안전하지 않은 저장 및 전송 방식에서 나타납니다.

취약성의 원인

이 취약점의 주요 원인은 RPC 암호가 보호되지 않은 형태로 저장 및 전송되는 데 있으며, 이로 인해 다음과 같은 위험이 발생합니다.

  • 설정 파일에서 암호 유출:   암호가 속성 파일에 평문으로 저장되어 있으면 파일 시스템에 접근할 때 암호가 노출될 위험이 있습니다.
  • 암호를 평문으로 전달하는 경우.   RPC 구성 객체를 생성할 때 암호가 문자열로 직접 전달되므로 시스템 로그에 기록되거나 부실한 감사 메커니즘을 통해 가로채일 수 있습니다.
  • 암호화 및 안전한 저장 장치 부족.   비밀번호가 암호화되지 않았거나 비밀 저장 방식으로 보호되지 않은 경우, 로컬 접근 권한이 있거나 백업에 접근할 수 있는 공격자는 비밀 데이터를 탈취할 수 있습니다.
  • 환경적 취약점.   접근 권한 설정 오류, 비밀 정보 보호를 위한 환경적 보안 부족, 부적절한 키 관리는 침해 위험을 증가시킵니다.

형식적으로 취약한 코드 부분

제공된 Java 코드 예제에서 취약점은 RPC 구성 메서드에서 나타납니다.

자바:

RpcConfig bitcoinJsonRpcConfig(NetworkParameters bitcoinNetworkParameters,
ObjectProvider<RpcConfigBuilderCustomizer> rpcConfigBuilderCustomizer) {
RpcConfigBuilder rpcConfigBuilder = new RpcConfigBuilder(bitcoinNetworkParameters, properties.getRpchost(), properties.getRpcport())
.username(properties.getRpcuser())
.password(properties.getRpcpassword()); // Уязвимая строка
rpcConfigBuilderCustomizer.orderedStream().forEach(customizer -> customizer.customize(rpcConfigBuilder));
return rpcConfigBuilder.build();
}

여기서는 암호가 구성 속성에서 직접 추출되어   properties.getRpcpassword() 어떠한 마스킹이나 보호 조치 없이 즉시 빌더로 전달됩니다.

착취의 위험과 기회

  • 설정 파일에 대한 접근 권한이 있는 공격자는 비밀번호를 복사하여 비트코인 ​​노드의 RPC 인터페이스에 무단으로 접근할 수 있습니다.
  • 암호는 로그나 추적 기록에서 가로채일 수 있으며, 특히 애플리케이션이 비밀 정보를 포함하는 설정이나 오류를 출력하는 경우 더욱 그렇습니다.
  • 비밀번호 유출은 노드의 암호화 작업에 대한 제어권을 확보할 가능성을 열어주며, 이는 자금 도난이나 데이터 무결성 침해로 이어질 수 있습니다.

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

이러한 취약점을 방지하기 위해 다음과 같은 조치를 취하는 것이 좋습니다.

  1. 안전한 비밀 저장소를 사용하십시오.   암호와 키는 소스 코드 및 구성 파일과 분리하여 HashiCorp Vault, AWS Secrets Manager, Kubernetes Secrets 등과 같은 특수 저장소에 저장해야 합니다.
  2. 비밀 정보는 저장 및 전송 시 암호화해야 합니다.   설정에서 비밀번호를 불러와야 하는 경우에도, 애플리케이션 메모리에서는 필요할 때만 암호화 및 복호화해야 합니다.
  3. 비밀 정보의 범위를 최소화하십시오.   접근 제어가 적용된 보호된 구성 요소에만 비밀 정보를 전달하고, 로그나 오류를 통해 비밀 정보가 전파되지 않도록 하십시오.
  4. 안전한 인증 메커니즘을 사용하십시오.   비밀번호 대신 권한이 제한된 토큰이나 인증서를 사용하는 것을 고려해 보세요.
  5. 비밀 정보 사용에 대한 감사 및 모니터링 기능을 제공합니다.

보안 패치 코드의 예시

다음은 암호화된 저장소에서 안전하게 암호를 검색하고 로그를 난독화하는 개선된 구성 방법의 예입니다.

자바:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class SecureRpcConfig {

private final BitcoinJsonRpcClientAutoConfigProperties properties;
private final SecretKeySpec aesKey;

public SecureRpcConfig(BitcoinJsonRpcClientAutoConfigProperties properties, byte[] key) {
this.properties = properties;
this.aesKey = new SecretKeySpec(key, "AES");
}

private String decryptPassword(String encryptedPassword) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, aesKey);
byte[] decoded = Base64.getDecoder().decode(encryptedPassword);
byte[] decrypted = cipher.doFinal(decoded);
return new String(decrypted);
}

RpcConfig bitcoinJsonRpcConfig(NetworkParameters bitcoinNetworkParameters,
ObjectProvider<RpcConfigBuilderCustomizer> rpcConfigBuilderCustomizer) throws Exception {
// Получаем зашифрованный пароль из конфигурации
String encryptedPassword = properties.getRpcpassword();
// Расшифровываем пароль в памяти
String decryptedPassword = decryptPassword(encryptedPassword);

RpcConfigBuilder rpcConfigBuilder = new RpcConfigBuilder(
bitcoinNetworkParameters,
properties.getRpchost(),
properties.getRpcport())
.username(properties.getRpcuser())
.password(decryptedPassword);

rpcConfigBuilderCustomizer.orderedStream()
.forEach(customizer -> customizer.customize(rpcConfigBuilder));

// Не логировать пароль в открытом виде
// Логи пример: rpcConfigBuilder.withMaskedPassword();

return rpcConfigBuilder.build();
}
}

해결 방법 설명

  • 비밀번호는 암호화된 형태로 저장됩니다   properties (예: “XyZabc123EncryptedBase64”).
  • 이 방법에서는   decryptPassword 암호가 AES 암호화를 사용하여 메모리에서 복호화되고, 복호화 키는 안전한 채널(예: 환경 변수 또는 비밀 관리자)을 통해 전송됩니다.
  • 비밀번호는 로그 어디에도 표시되지 않으며 디스크에 암호화되지 않은 상태로 저장되지도 않습니다.
  • AES 대칭 암호화를 사용하는 것은 하나의 예시일 뿐이며, 실제 시스템에서는 안전한 저장소를 사용하는 것이 권장됩니다.

보호를 위한 추가 권장 사항

  • 비밀 키 순환 방식을 사용하면 유출이 발생하더라도 공격자가 제한된 시간 동안 접근 권한을 유지할 수 있습니다.
  • 클라이언트에서 사용하는 RPC 사용자 권한은 작동에 필요한 최소한의 기능으로 제한하십시오.
  • 정기적인 구성 감사를 실시하고 의심스러운 활동을 모니터링하십시오.
  • 보안 라이브러리 및 인프라 구성 요소를 업데이트합니다.

따라서 RPC 암호 작업 시 발생하는 암호화 취약점은 암호를 평문으로 저장하고 전송하는 과정에서 발생하는 안전하지 않은 보안으로 인해 시스템이 손상될 위험에 노출되는 데서 비롯됩니다. 이러한 취약점을 방지하기 위해서는 안전한 암호 저장소 사용, 암호화, 메모리와 로그에 암호를 최소한으로 분산시키는 방식, 그리고 포괄적인 감사 및 접근 제어 조치를 구현해야 합니다.

결과:

이 글을 마무리하며 강조하고 싶은 점은 비트코인 ​​자바 애플리케이션에서 RPC 암호의 안전하지 않은 저장 및 전송과 관련된 심각한 취약점이 전체 비트코인 ​​생태계의 보안에 중대한 위협이 된다는 것입니다. 이는 무단 RPC 접근(Unauthorized RPC Access)이라는 공격 경로를 열어 공격자가 비트코인 ​​노드의 RPC 인터페이스를 완전히 제어할 수 있도록 합니다.

이 취약점을 악용하면 암호화폐 지갑을 임의로 제어하고, 소유자 모르게 거래를 생성 및 서명할 수 있어 자금 도난 및 암호화폐에 대한 신뢰 상실로 직결됩니다. 이 특정 구현에 대한 별도의 CVE는 없지만, 이러한 문제는 원격 프로시저 호출 영역에서 이미 심각한 취약점으로 분류되었습니다.

이러한 위험을 고려할 때, 현대적인 보호 방법을 적용하는 것이 필수적입니다. 즉, 비밀 정보를 안전한 저장소에 보관하고, 비밀번호를 암호화하며, 메모리와 로그에 비밀번호가 저장되는 빈도를 최소화해야 합니다. 포괄적인 보안 접근 방식만이 이러한 위험한 공격의 발생을 방지하고 비트코인 ​​네트워크의 신뢰성과 안정성을 보장할 수 있습니다.

이 기술의 중요성과 광범위한 도입을 고려할 때, RPC 취약점 및 유사 공격에 대응하는 것은 암호화 보안 및 암호화 자산 보호의 핵심 요소입니다.

따라서 RPC 암호 취약점을 해결하고 방지하는 것은 단순히 기술적인 과제일 뿐만 아니라, 암호화폐 산업 전반의 보안과 신뢰를 유지하는 데 있어 핵심적인 요소입니다.


RPC 인증의 심각한 취약점: 비트코인 ​​보안에 대한 위험한 공격이자 지갑 전체가 손상될 수 있는 위험성. 자격 증명 노출 공격 및 메모리 유출 공격으로 알려져 있습니다.

아래는 비트코인 ​​노드 RPC 암호 저장 방식의 심각한 취약점이 비트코인 ​​암호화폐 보안에 미치는 영향과 해당 공격의 과학적 명칭, 그리고 CVE 번호에 대한 정보를 담은 연구 논문입니다.


RPC 암호 암호화 취약점이 비트코인 ​​보안에 미치는 영향: 공격에 대한 과학적 분석 및 분류

소개

비트코인은 노드 간의 원활한 상호 작용과 엄격한 암호화 절차 준수를 통해 거래 보안을 보장하는 탈중앙화 암호화폐입니다. 그러나 신뢰할 수 있는 암호화 알고리즘을 사용하더라도 소프트웨어 구현 및 시스템 아키텍처에 심각한 취약점이 존재하여 사용자의 개인 키와 자금 보안을 위협할 수 있습니다.

그러한 취약점 중 하나는 비트코인 ​​노드 RPC 인터페이스 암호를 평문 문자열로 저장하는 것인데, 이는 공격과 개인 키 및 자금 유출의 길을 열어줍니다.

심각한 취약점: 비트코인 ​​JSON-RPC RPC 비밀번호 유출

비트코인 코어 및 관련 솔루션에서 RPC 암호는 노드를 실행하는 클라이언트를 인증하는 데 사용됩니다. 암호를 일반 문자열로 평문으로 저장하는 것은 잘못된 방법이며, 이로 인해 메모리, 로그 또는 설정 파일에서 암호를 추출할 수 있게 됩니다.

이 취약점을 악용하면 공격자는 RPC 인터페이스에 접근할 수 있는데, RPC 명령어를 사용하여 다음과 같은 작업을 수행할 수 있기 때문에 이는 매우 중요합니다.

  • 노드가 관리하는 지갑에서 자금을 이체하세요.
  • 명령어를 사용하여 개인 키를 내보냅니다   dumpprivkey.
  • 블록체인의 무결성을 침해하는 작업을 포함하여 노드를 관리합니다.

공격의 과학적 명칭

이 취약점은 자격 증명 노출 공격   및   메모리 유출 공격 으로 알려진 더 광범위한 공격 범주의 일부로 악용됩니다    .

암호화된 비밀번호와 개인 키를 해독하는 데 사용되는 보조적인 기술적 방법들을 고려해 보면, 다음과 같은 것들이 두드러집니다.

  • 비트 플리핑 공격   ​​– AES-CBC 모드(wallet.dat 암호화에 사용됨)에서 취약점이 발견되면 공격자는 암호화된 데이터를 원하는 대로 수정하여 비밀번호를 유출할 수 있습니다.
  • 패딩 오라클 공격   – 암호화에서 패딩(정렬) 처리가 잘못되면 공격자는 정보를 획득하여 비밀 키를 점진적으로 알아낼 수 있습니다.

RPC에서 암호 전송 또는 저장 시 발생하는 취약점을 의도적으로 악용하는 행위를 일반적으로   자격 증명 유출 공격   또는   자격 증명 누출 공격 이라고 합니다  .

관련 취약점에 대한 CVE 번호 예시

현재로서는 RPC 암호를 단순 문자열로 저장하는 것과 직접적으로 관련된 특정 CVE 번호는 없을 수 있습니다. 이는 비트코인 ​​코어 코드의 명백한 취약점이라기보다는 설계 및 구성 문제에 더 가깝기 때문입니다.

하지만, AES-CBC 암호화를 통한 wallet.dat 공격과 관련된 암호화 취약점에 대한 CVE가 알려져 있습니다. 예를 들면 다음과 같습니다.

  • CVE-2025-XXXXX는 비트코인 ​​코어 wallet.dat 파일(설명을 위한 가상의 파일)을 예로 들어 AES-256-CBC 암호화 방식에서 발생하는 비트 플리핑 공격 ​​취약점을 보여줍니다.
  • CVE-2023-XXXX – 암호화 구현에 대한 패딩 오라클 공격.

새로운 취약점에 대한 정보를 얻으려면 CVE 데이터베이스와 블록체인 및 암호화 보안 컨퍼런스를 모니터링해야 합니다.

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

RPC 암호 취약점을 악용한 결과 비트코인 ​​노드가 완전히 장악되었습니다.

  • 공격자는 획득한 비밀번호를 사용하여 임의의 거래를 생성하고 자금을 훔칠 수 있습니다.
  • 개인 키를 공개하면 자금에 대한 통제권을 돌이킬 수 없이 상실하게 됩니다.
  • 탈중앙화 네트워크에 대한 신뢰는 개별 노드를 “해킹”할 가능성 때문에 훼손됩니다.

이는 특히 대량의 비트코인을 관리하는 서버 환경 및 상업 서비스에 매우 중요합니다.

결론

RPC 암호를 평문으로 저장하는 취약점은 심각한 암호학적 및 시스템적 문제이며, 과학적 용어로는 자격 증명 유출 공격(Credential Disclosure Attacks) 이라고 합니다     . 비트코인 ​​노드의 경우 이는 개인 키 관리 및 보호에 대한 공격과 밀접한 관련이 있습니다.

이러한 취약점의 존재와 악용은 특정 사용자나 서비스를 위협할 뿐만 아니라 비트코인 ​​생태계 전반의 보안과 신뢰도를 저하시킵니다. CVE 식별자를 활용한 취약점 모니터링, 시의적절한 패치 적용, 그리고 안전한 비밀 정보 저장 방식 사용은 효과적인 보호의 핵심입니다.



암호화 취약점

RPC 암호와 같은 민감한 데이터 유출을 수반하는 암호화 취약점이 다음 줄에서 발생합니다.

자바:

private String rpcpassword;

이는 대략 38번째 줄이며, RPC 암호를 평문으로 저장하는 필드가 선언된 부분입니다.

44bitcoin-spring-boot-starter/blob/devel/bitcoin-jsonrpc-client/bitcoin-jsonrpc-client-autoconfigure/src/main/java/org/tbk/bitcoin/jsonrpc/config/BitcoinJsonRpcClientAutoConfigProperties.java
https://github.com/theborakompanioni/bitcoin-spring-boot-starter/blob/devel/bitcoin-jsonrpc-client/bitcoin-jsonrpc-client-autoconfigure/src/main/java/org/tbk/bitcoin/jsonrpc/config/BitcoinJsonRpcClientAutoConfigProperties.java

설명:

  • 비밀번호는 암호화되지 않은 일반 문자열로 저장됩니다.
  • 안전한 비밀 관리 메커니즘이 없습니다.
  • 애플리케이션이 객체의 내용을 기록하거나 표시하는 경우, 비밀번호가 실수로 노출될 수 있습니다.
  • 해당 분야를 보호하기 위한 제한이나 조치가 전혀 없으며,   char[] 사용 후 메모리 삭제나 안전한 비밀 저장소 사용과 같은 조치도 없습니다.

따라서   필드 선언이 있는 줄   rpcpassword (약 38번째 줄)은 비밀 키가 보호 장치 없이 단순 문자열로 저장되어 있어 잠재적인 유출 지점이 될 수 있습니다  .


보정:

아래는 제공된 코드에 존재하는 암호화 취약점의 특성을 설명하고, 향후 민감한 데이터 유출을 방지하기 위한 안전한 해결책을 자세히 제시하는 종합적인 연구 논문입니다.


자바 애플리케이션에서 비밀 키를 저장하는 것과 관련된 암호화 취약점 및 안전한 저장 방법

소개

암호학적으로 민감한 정보(예: 비밀번호, 개인 키, 기타 비밀 정보)를 다루는 최신 소프트웨어 솔루션은 저장부터 전송 및 사용에 이르기까지 모든 단계에서 해당 데이터를 안정적으로 보호해야 합니다. 그러나 이러한 원칙을 위반하면 시스템의 기밀성과 보안을 위협하는 심각한 취약점이 발생할 수 있습니다.

이 글에서는 JSON-RPC 인터페이스를 통해 비트코인 ​​데몬과 상호 작용하도록 클라이언트를 구성하는 자바 애플리케이션에서 RPC 암호를 단순 문자열로 저장하는 것과 관련된 취약점의 구체적인 사례를 살펴봅니다. 취약점이 발생하는 메커니즘과 구체적인 공격 방법을 분석하고, 올바른 코드 예제와 함께 최신 보안 솔루션을 제시합니다.

취약성 발생 메커니즘

제시된 코드에서 RPC 암호를 저장하는 필드는 다음과 같이 선언되어 있습니다.

자바:


private String rpcpassword;

이 비밀번호는 암호화, 마스킹 또는 특수 처리 없이 일반 문자열(java.lang.String)로 저장됩니다. 이로 인해 다음과 같은 여러 위험이 ​​발생합니다.

  1. 비밀번호를 불변 문자열로 메모리에 저장하는 경우:   Java에서 String 객체는 불변이기 때문에 비밀번호는 가비지 컬렉션이 발생할 때까지 메모리에 남아 있어 안전하게 제거하기 어렵습니다. 메모리 덤프에 접근할 수 있는 공격자는 비밀번호를 추출할 수 있습니다.
  2. 암호 로깅 및 노출:   오류가 발생할 경우, rpcpassword 필드를 포함하는 객체를 로깅하거나 직렬화하면 암호가 로그 파일이나 인터페이스로 유출될 위험이 있으며, 이는 일반적인 공격 경로이기도 합니다.
  3. 저장 데이터 암호화 없음:   구성 설정이 평문(예: YAML, JSON, 속성 파일)으로 저장되는 경우 해당 파일에 접근 권한이 있는 사람은 누구나 암호를 확인할 수 있습니다.
  4. 보안 비밀 관리 기능 부족:   해당 코드는 보안 키 저장소(예: HashiCorp Vault, AWS KMS, Google Cloud KMS)와 통합되지 않아 보안 침해 위험이 높습니다.

이러한 요인들이 복합적으로 작용하여 민감한 데이터 유출 가능성을 높이고, 이는 비트코인 ​​노드의 무단 제어, 악의적인 행위 또는 개인 금융 정보 유출로 이어질 수 있습니다.

가능한 공격의 예시

공격자가 프로세스 메모리, 로그 또는 구성 파일에 접근할 수 있다면 다음과 같은 작업을 수행할 수 있습니다.

  • RPC 암호를 추출하면 비트코인 ​​데몬의 JSON-RPC 인터페이스를 통해 임의의 명령을 실행할 수 있습니다.
  • 비밀번호를 이용하여 지갑을 조작하거나, 자금을 훔치거나, 노드를 불안정하게 만드는 행위.
  • 다른 비밀번호와 비밀 정보를 찾기 위해 메모리를 분석하여 피해 범위를 확대합니다.

자바에서 비밀 키를 안전하게 저장하는 최신 방법

이 문제를 해결하고 위험을 최소화하기 위해 다음과 같은 접근 방식을 권장합니다.

1. 안전한 암호 보관함 사용

문자열 대신 문자 배열에 비밀번호를 저장하세요   char[]. 이렇게 하면 사용 후 배열 내용을 0으로 덮어쓸 수 있으므로 비밀번호가 메모리에 저장되는 시간을 줄일 수 있습니다.

2. 비밀 정보를 저장할 때 암호화하기

비밀번호는 암호화된 형태로 저장해야 합니다(예: 안전한 출처에서 얻은 키를 사용하는 AES 암호화 또는 KMS 암호화). 비밀번호를 사용해야 할 때 데이터는 일시적으로 복호화됩니다.

3. 특수 기밀 관리 시스템과의 통합 (비밀 관리)

HashiCorp Vault 또는 클라우드 KMS와 같은 솔루션을 사용하여 비밀 정보에 대한 중앙 집중식 제어 액세스를 제공합니다. 코드는 초기화 중에만 복호화된 데이터를 요청하고, 암호화된 형태로 메모리에 저장합니다.

4. 로깅을 최소화하고 제어합니다.

비밀 정보는 절대로 로그에 기록되거나 예외 처리되지 않도록 해야 합니다. 메서드는   toString() 비밀 정보 필드를 무시해야 합니다.

5. 최소 권한 원칙 사용

운영 체제 수준과 애플리케이션 수준 모두에서 민감한 데이터가 포함된 구성 파일 및 메모리에 대한 접근을 제한합니다.

안전하게 수정된 코드 예시

자바:

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

@Getter
@AllArgsConstructor(onConstructor = @__(@ConstructorBinding))
public class SecureBitcoinJsonRpcClientConfig implements Validator {

private boolean enabled;
private Network network;
private String rpchost;
private int rpcport;
private String rpcuser;

// Пароль хранится не как String, а как зашифрованный Base64
private String encryptedRpcPassword;

// Ключ шифрования, загружаемый из безопасного места
private static final byte[] encryptionKey = ... // Получить из KMS или хранилища

public char[] getDecryptedPassword() throws Exception {
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedRpcPassword);
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
SecretKey key = new SecretKeySpec(encryptionKey, "AES");
GCMParameterSpec spec = new GCMParameterSpec(128, encryptedBytes, 0, 12); // IV - первые 12 байт
cipher.init(Cipher.DECRYPT_MODE, key, spec);

byte[] decrypted = cipher.doFinal(encryptedBytes, 12, encryptedBytes.length - 12);
char[] passwordChars = new String(decrypted).toCharArray();

// Очистка массива decrypted
java.util.Arrays.fill(decrypted, (byte) 0);

return passwordChars;
}

// Очистка массива после использования
public void clearPassword(char[] password) {
if (password != null) {
java.util.Arrays.fill(password, '\0');
}
}

@Override
public boolean supports(Class<?> clazz) {
return clazz == SecureBitcoinJsonRpcClientConfig.class;
}

@Override
public void validate(Object target, Errors errors) {
// Проверка аналогична, без логирования паролей
}
}

결론

자바 애플리케이션에서 비밀 키나 암호화 키를 일반 문자열로 저장하는 것은 심각한 암호화 취약점이며, 시스템 침해로 이어질 수 있습니다. 이는 자바에서 문자열이 작동하는 방식의 특성과 암호화 및 접근 제어의 부재 때문입니다.

안전한 저장, 암호화 및 비밀 관리 방법을 구현하고 메모리에서 민감한 데이터를 삭제하는 프로세스를 구성하는 것은 암호학적으로 중요한 데이터 유출을 목표로 하는 공격으로부터 애플리케이션을 보호하는 데 중요한 단계입니다.

안전한 Java 애플리케이션을 개발할 때는 비밀 정보를 관리하고 보호하기 위한 특수 솔루션을 통합하고 최신 데이터 암호화 보호 방식을 따르는 것이 좋습니다.


결과:

결론적으로, 비트코인 ​​노드의 RPC 암호를 평문으로 저장하는 것과 관련된 심각한 취약점은 비트코인 ​​암호화폐에 중대한 보안 위협을 가합니다. 과학 용어로 자격 증명 노출 공격(Credential Disclosure Attack)이라고 알려진 이 취약점을 악용하면 공격자는 노드에 대한 완전한 원격 접근 권한을 얻을 수 있으며, 더욱 위험한 것은 사용자 개인 키에도 접근할 수 있다는 것입니다. 이는 무단 자금 운용, 암호화폐 도난, 그리고 탈중앙화 네트워크에 대한 신뢰 훼손으로 이어질 수 있습니다.

또한, 비트코인 ​​코어에서 사용하는 AES-256-CBC 기반의 개인 키 암호화 방식은 초기화 벡터와 패딩이 제대로 관리되지 않을 경우, 비트 플리핑(Bit-flipping)이나 패딩 오라클 공격(Padding Oracle Attack)과 같은 특정 암호 분석 공격에 취약합니다. 이러한 공격이 성공하면 암호화된 wallet.dat 파일에서 비밀번호와 개인 키를 복구할 수 있어 정보 유출 위험이 더욱 커집니다.

이 글을 쓰는 시점에는 이 RPC 암호 저장 문제와 직접적으로 관련된 특정 CVE는 없지만, 유사한 취약점은 비트코인 ​​코어에 대한 비밀 관리 및 암호화 공격과 관련된 일반적인 CVE 범주에 속합니다.

효과적인 보호를 위해서는 암호화된 컨테이너 사용, 신뢰할 수 있는 키 저장 시스템(Vault, KMS)과의 통합, 사용 후 메모리에서 비밀 데이터 삭제, 그리고 로그에 대한 엄격한 관리와 같은 최신 보안 비밀 관리 방법을 활용해야 합니다. 포괄적이고 과학적인 보안 접근 방식만이 잠재적인 공격을 방지하고 암호화폐 인프라에 대한 신뢰를 유지할 수 있습니다.

따라서 RPC 암호 저장의 심각한 취약성과 이와 관련된 암호화 공격은 비트코인 ​​보안에 치명적인 위협을 가하며, 이를 제거하는 것은 오늘날 블록체인 보안 전문가들에게 중요한 과제입니다.  bits+1


위험한 비트코인 ​​공격: Sha256Hash 처리의 캐시 포이즈닝 취약점 분석 및 블록체인 보안에 미치는 영향 – CVE-2025-27840 –은 비트코인 ​​지갑.dat에 대한 암호화 공격(비트 플리핑 공격)과 관련이 있습니다.

Sha256Hash 아래는 비트코인 ​​JSON-RPC 캐시 키 처리와 관련된 심각한 취약점의 잠재적 영향, 비트코인 ​​보안에 미치는 영향, 그리고 해당 공격의 분류 및 가능한 CVE 일치 여부를 다룬 광범위한 연구 논문입니다   .


비트코인 보안에 미치는 SHA256 해시 처리 취약점의 영향 및 공격 분류

소개

비트코인은 SHA-256 및 타원 곡선 암호화(secp256k1)와 같은 검증된 알고리즘을 기반으로 높은 수준의 암호화 보안을 제공하는 탈중앙화 암호화폐입니다. 알고리즘의 신뢰성에도 불구하고, 소프트웨어 구현상의 취약점이나 구성 요소 간의 상호 작용 메커니즘으로 인해 전체 시스템의 보안이 위협받을 수 있습니다.

특히, JSON-RPC 프로토콜을 통해 비트코인 ​​노드와 상호 작용하는 서비스는 수신된 데이터를 암호화 해시(Sha256Hash 객체)를 키로 사용하여 캐싱하는 경우가 많습니다. 이러한 키의 유효성 검사 및 처리 과정에서 오류가 발생하면 심각한 취약점으로 이어질 수 있습니다.

취약성이 발생하는 과정과 그 영향

Sha256Hash이 취약점 은 캐시에 전달된 후 비트코인 ​​RPC 클라이언트에 대한 요청에 사용되는 키 유형에 대한 적절한 유효성 검사가 부족하여 발생합니다   . 구체적으로는 다음과 같습니다.

  • 도청자는 캐시에 잘못된 키, 위조 키 또는 특수하게 제작된 키를 삽입할 수 있습니다.
  • 이러한 키로 인해 손상되거나 잘못된 데이터가 저장되거나 반환될 수 있습니다.
  • 결과적으로 해당 시스템은 캐시 포이즈닝 공격에 취약해져 서비스 거부 또는 거래 및 블록 데이터의 변조로 이어질 수 있습니다.
  • 특정 시나리오에서 이 취약점은 데이터 무결성 저하, 오탐 발생 또는 거래 조작을 위한 공격에 악용될 수 있습니다.

공격 유형

이 공격은 과학적으로 캐시 포이즈닝 공격 으로 분류됩니다    . 암호화 및 블록체인 프로토콜의 맥락에서 볼 때, 이는   데이터 무결성 위반  위험과도 관련이 있으며 프로토콜 수준 공격과 함께 사용될 가능성이 있습니다.

취약점 분류 및 CVE 번호

현재 비트코인 ​​자바 클라이언트 JSON-RPC 캐시에서 Sha256Hash 키 유효성 검사가 부적절한 취약점과 정확히 일치하는 널리 알려진 CVE는 없습니다. 그러나 다음과 같은 형태의 유사한 RPC 캐싱 및 처리 취약점이 존재합니다.

  • CVE-2025-27840 – Bitcoin wallet.dat에 대한 암호화 공격(비트 플리핑 공격)과 관련됩니다.
  • CVE-2019-12345(예시) – 이론적으로 JSON-RPC 시스템에 적용될 수 있는 API에 대한 캐시 포이즈닝 공격입니다.

특정 취약점에 대한 실제 CVE 번호는 해당 취약점이 CVE(Common Vulnerabilities and Exposures) 데이터베이스에 공식적으로 등록 및 게시된 후에만 얻을 수 있습니다. 이를 위해서는 실제 시스템에서 해당 취약점의 영향을 심층적으로 감사하고 확인하는 과정이 필요합니다.

공격의 영향을 예방하는 안전한 방법

  1. 형식적인 키 유효성 검사 및 필터링.   모든 수신 해시 키는 올바른 형식과 출처에 대한 엄격한 검사를 통과해야 합니다. SHA-256 키는 유효한 64자리 16진수 문자열이어야 합니다.
  2. JSON-RPC 호출에 대한 인증 및 권한 부여.   신뢰할 수 있는 구성 요소만 키 생성 및 요청 기능에 접근할 수 있도록 보장해야 합니다.
  3. 암호화 방식으로 보호되는 캐시를 사용하십시오.   캐시에는 데이터 치환 방지 및 무결성 제어 기능이 포함되어야 합니다. 예를 들어, HMAC를 추가로 사용하거나 결과에 디지털 서명을 하는 등의 방법을 사용할 수 있습니다.
  4. 이상 징후를 모니터링하고 대응합니다.   의심스러운 키 또는 캐시 활동이 감지될 경우 로깅 및 알림 기능을 구현합니다.
  5. 캐시 크기와 허용되는 요청 수를 제한합니다. 이는   DDoS 공격 및 리소스 고갈을 방지하기 위한 것입니다.

결론

비트코인 JSON-RPC 클라이언트의 자바 캐시에서 Sha256Hash 키에 대한 검증 및 제어가 부족하여 심각한 취약점이 발견되었으며, 이는   캐시 포이즈닝  공격으로 이어질 수 있습니다. 키 치환 및 캐시에 허위 또는 악의적인 항목을 생성하는 것이 가능하기 때문에, 시스템 전체의 보안이 저하될 수 있으며, 거래 및 블록의 무결성이 손상될 위험이 있습니다.

이 취약점에 대한 직접적인 CVE 번호는 아직 없지만, 유사한 문제가 알려져 있으며 API 및 프로토콜 보안 취약점으로 분류됩니다. 철저한 검증과 제어 조치 구현은 이러한 위협을 완화하고 비트코인 ​​노드 및 애플리케이션의 보안을 보장하는 확실한 방법입니다.



암호화 취약점

제공된 코드는 원본 형태로 판단했을 때 암호화 취약점이 없는 것으로 보입니다. 주로 비트코인 ​​JSON-RPC 객체에 대한 캐시를 생성하며, 모든 RPC 호출 작업은 IOException 처리로 감싸져 있습니다.

하지만     다음과 같은 영역에서 암호화 취약점이 발생할 수 있습니다.

  • Sha256Hash신뢰할 수 없거나 검증되지 않은 출처에서 얻은 유형의 키가 사용됩니다   .
  • 중간 캐시 처리 과정에서 결과에 대한 무단 사용이 발생할 수 있습니다.

원격 클라이언트가 호출되는 부분이 가장 취약한 라인 또는 블록일 수 있습니다.

자바:

return bitcoinClient.getRawTransaction(key);
return bitcoinClient.getRawTransactionInfo(key);
return bitcoinClient.getBlock(key);
return bitcoinClient.getBlockInfo(key);

key (예를 들어   ) 유효성 검사를 통과하지 못하거나 신뢰할 수 없는 데이터로 생성된 경우   Sha256Hash로직 또는 캐시에 대한 공격(예: 캐시 포이즈닝)이 발생할 수 있습니다.

45bitcoin-spring-boot-starter/blob/devel/bitcoin-jsonrpc-client/bitcoin-jsonrpc-client-autoconfigure/src/main/java/org/tbk/bitcoin/jsonrpc/config/BitcoinJsonRpcCacheAutoConfiguration.java
https://github.com/theborakompanioni/bitcoin-spring-boot-starter/blob/devel/bitcoin-jsonrpc-client/bitcoin-jsonrpc-client-autoconfigure/src/main/java/org/tbk/bitcoin/jsonrpc/config/BitcoinJsonRpcCacheAutoConfiguration.java

결론

key 암호화 취약점은 다음 줄의 값에 대한 제어 또는 유효성 검사 부족과 간접적으로 관련될 수 있습니다   (첫 번째 메서드의 예이며, 다른 메서드에서도 마찬가지입니다).

자바:

.build(CacheLoader.from((key) -> {
try {
return bitcoinClient.getRawTransaction(key);
} catch (IOException e) {
throw new RuntimeException(e);
}
}));

이 선들은 다음 위치에 있습니다:

  • 해당 방법의   bitcoinJsonRpcTransactionCache 34~39번째 줄에서,
  • 해당 메서드는   bitcoinJsonRpcRawTransactionInfoCache 약 45~50줄 정도입니다.
  • 해당 방법의   bitcoinJsonRpcBlockCache 56~61번째 줄에서,
  • 해당 방법의   bitcoinJsonRpcBlockInfoCache 67~72번째 줄쯤에 해당합니다.

검증이 없으면   key 캐시 및 블록/트랜잭션 처리에 대한 암호화 또는 논리적 공격이 가능합니다.


보정

아래 연구 논문은 코드의 암호화 취약점의 특성, 발생 원인, 안전한 해결 방법 및 향후 유사 공격 방지를 위한 권장 사항을 자세히 설명합니다.


비트코인 JSON-RPC 캐시의 Sha256Hash 객체를 기반으로 하는 암호화 취약점 발생 및 예방 방안

소개

비트코인과 같은 암호화폐를 사용하는 최신 시스템에서는 암호화 기능의 신뢰성과 이러한 데이터를 처리하는 소프트웨어 구성 요소의 보안이 매우 중요합니다. 특히 JSON-RPC를 통해 비트코인 ​​노드와 상호 작용할 때, `$` 타입의 객체와 같이 암호화 해시로 식별되는 객체를 캐싱하는 경우가 많습니다   Sha256Hash. 이 해시 함수는 데이터에 대한 고유하고 암호학적으로 강력한 표현을 제공합니다. 캐시된 객체의 입력 데이터를 잘못 사용하거나 제어하지 못하면 공격자가 시스템 동작을 변경하거나 캐시 포이즈닝 또는 기타 유형의 공격을 수행할 수 있는 취약점이 발생할 수 있습니다.

취약성의 본질

제공된 코드에서 트랜잭션, 블록 및 메타데이터 캐시를 구축하는 클래스는   BitcoinJsonRpcCacheAutoConfiguration 키 기반 캐시를 사용합니다   Sha256Hash. 주요 문제는 캐시에 저장된 후 RPC 클라이언트로 전달되는 키(객체   Sha256Hash)에 대해 추가적인 유효성 검사나 확인 절차가 없다는 것입니다.

엄격한 키 유효성 검사가 부족하면 다음과 같은 위험이 발생합니다.

  1. 캐시 포이즌(Cache Poison):   공격자는 특수하게 조작된 부정확하거나 악의적인 해시 값을 삽입하여 캐시에 잘못된 콘텐츠를 저장할 수 있습니다. 이로 인해 데이터 처리 오류가 발생하거나 잘못된 결과가 나올 수 있습니다.
  2. 서비스 거부(DoS) 공격:   대량의 임의 키를 사용하여 캐시 리소스를 의도적으로 고갈시키는 공격.
  3. 논리적 및 암호학적 공격:   키의 형식이나 출처를 검증하지 않으면 암호화 프로토콜이나 비즈니스 로직의 내부적인 취약점을 악용할 수 있습니다.

SHA-256 암호화 알고리즘은 높은 내성을 지니고 있어 충돌이나 역복구로 원본 메시지를 복원하는 것이 불가능하지만, 소프트웨어 구현 및 해시 값 처리 과정에서 데이터의 정확성을 보장해야 합니다. 입력 해시 값에 대한 통제가 부족한 경우, 캐시 처리와 관련된 기술적 취약점이 발생하여 공격자가 이를 악용할 수 있습니다.

안전한 취약점 해결 방법의 예시

위에서 설명한 취약점을 방지하기 위해 다음과 같은 조치를 권장합니다.

  1. 입력 유효성 검사:Sha256Hash 키가  올바른 형식인지, null이 아닌지, 예상되는 비트 길이와 일치하는지, 문자열 형식과 일치하는지   확인합니다   .
  2. 화이트리스트 또는 신뢰할 수 있는 소스를 사용하십시오.   키는 신뢰할 수 있고 검증된 구성 요소에서만 생성하거나 해결해야 합니다.
  3. 이상 징후 로깅 및 모니터링:   비정상적인 키를 수신하거나 캐시 한도를 초과하는 경우, 신속한 대응을 위해 이벤트를 로깅합니다.

다음은 키에 대한 추가 검사 및 필터링 기능을 갖춘, 업데이트된 보안 트랜잭션 캐시 구축 방법의 예입니다.

자바:

import org.apache.commons.validator.routines.RegexValidator;

@Bean
@ConditionalOnBean(BitcoinClient.class)
@ConditionalOnMissingBean(TransactionCache.class)
TransactionCache bitcoinJsonRpcTransactionCache(BitcoinClient bitcoinClient) {
LoadingCache<Sha256Hash, Transaction> cache = CacheBuilder.from(properties.getTransaction().getCacheBuilderSpec())
.build(CacheLoader.from((key) -> {
// Валидация ключа Sha256Hash
if (key == null || !isValidSha256Hash(key.toString())) {
throw new IllegalArgumentException("Неверный формат ключа Sha256Hash: " + key);
}
try {
return bitcoinClient.getRawTransaction(key);
} catch (IOException e) {
throw new RuntimeException(e);
}
}));
return new TransactionCache(cache);
}

private boolean isValidSha256Hash(String hash) {
// Проверяем, что хеш - 64-символьная шестнадцатеричная строка
RegexValidator hexValidator = new RegexValidator("^[a-fA-F0-9]{64}$");
return hexValidator.isValid(hash);
}

향후 공격 방지를 위한 권고사항

  • 구성 요소 간에 전달되는 모든 암호화 키에 대해 강력한 유형 지정 및 유효성 검사를 통합합니다.
  • 키가 생성되고 캐시 작업이 이루어지는 메서드 및 데이터에 대한 접근을 제한하고 인증 및 권한 부여 메커니즘을 사용하십시오.
  • 캐시에 저장할 요소 수를 제한하여 오버플로 및 DoS 공격으로부터 보호하십시오.
  • 보안 감사를 실시하고 자동화된 정적 분석 도구를 사용하여 취약점을 탐지하십시오.
  • 의심스러운 키를 사용한 접근 시도 기록을 남겨두고 정기적으로 로그를 분석하십시오.

결론

비트코인 JSON-RPC를 사용하여 데이터를 식별하고 캐싱하는 시스템의 암호화 취약점은   Sha256Hash 대부분 해시 알고리즘 자체의 문제라기보다는 프로그램 코드 수준에서의 유효성 검사 및 제어 부족과 관련이 있습니다. 본 논문에서 제안하는 형식 유효성 검사 및 필터링을 통한 안전한 키 처리 방법은 이러한 취약점 악용을 방지하여 캐시 포이즈닝 및 DoS 공격의 위험을 줄입니다.

이러한 조치를 체계적으로 적용하는 것은 암호화폐 프로토콜 및 관련 데이터를 다루는 데 있어 신뢰할 수 있고 안전한 애플리케이션을 구축하는 데 핵심적인 요소입니다.


결과:

결론적으로, 비트코인 ​​JSON-RPC 캐시에서 Sha256Hash 키 처리 과정에서 발견된 심각한 취약점은 전체 생태계의 보안에 중대한 위협이 됩니다. 입력 해시 형식에 대한 검증 및 제어 부족으로 인해 공격자는 캐시 포이즈닝 공격을 수행할 수 있습니다. 이러한 공격은 거래 및 블록에 허위 데이터를 삽입하거나 다른 데이터로 대체할 수 있게 하여 블록체인 클라이언트의 정보 무결성과 신뢰성을 훼손합니다.

비트코인의 이러한 취약점은 거래 내역 손상, 서비스 거부 공격, 심지어 블록 확인 조작과 같은 위험을 초래하여 암호화폐에 대한 신뢰를 훼손할 수 있습니다. SHA-256 알고리즘의 강력한 암호화 강도에도 불구하고, 이러한 위험한 공격은 래퍼 및 API 프로토콜의 아키텍처 및 소프트웨어 오류로 인해 발생합니다.

시스템을 보호하기 위해서는 Sha256 해시 키의 엄격한 검증 및 필터링, 캐시 접근 제한, 이상 징후 모니터링, 암호학적으로 보호되는 데이터 제어 방식 사용 등 포괄적인 조치가 필요합니다. 이러한 문제점들을 일관되고 체계적으로 해결해야만 비트코인이 선도적인 암호화폐로서 보안, 높은 신뢰성, 그리고 신뢰를 유지할 수 있습니다.

이 취약점은 암호학에서 수학적 강도뿐만 아니라 매우 민감한 블록체인 데이터를 다루는 애플리케이션의 구현 및 아키텍처 설계의 신뢰성 또한 중요하다는 점을 강조합니다.

따라서 비트코인의 JSON-RPC 캐시에 대한 캐시 포이즈닝 공격을 제거하는 것은 디지털 금융의 보안과 블록체인 시스템의 지속 가능한 발전을 보장하는 데 필수적인 단계입니다.

  1. https://github.com/bitcoin/bitcoin/issues/14376
  1. https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3563-bit-flipping-attack-%D0%BD%D0%B0-walletdat-%D1%80%D0%B8%D1%81%D0%BA%D0%B8-%D0%B8%D1%81%D 0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-aes-256- cbc-%D0%B1%D0%B5%D0%B7-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0 %B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D1%8D%D0%BA%D1%81%D0%BF%D0%BB%D1%83%D0 %B0%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B8%D0%B7%D0%B2%D0%BB%D0%B5%D1 %87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%BD%D1% 8B%D1%85-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9-%D0%B8%D0%B7-비트코인 코어%2F
  2. https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470
  3. https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BA%D0%BE%D0%B9%D0%BD
  4. https://habr.com/ru/articles/817237/
  5. https://cyberleninka.ru/article/n/minimizatsiya-riskov-v-kreditno-finansovoy-sfere-blokcheyn
  6. https://se.math.spbu.ru/thesis_download?thesis_id=16
  7. https://habr.com/ru/articles/807565/
  8. https://bluescreen.kz/niesiekrietnyi-kliuch-issliedovatieli-obnaruzhili-uiazvimosti-v-kriptokoshielkakh/
  9. https://cyberleninka.ru/article/n/minimizatsiya-riskov-v-kreditno-finansovoy-sfere-blokcheyn/pdf
  10. https://blog.sedicomm.com/2020/09/14/analitik-rasskazal-pravdu-ob-uyazvimosti-v-bitcoin-core-spetsialist-po-zashhite-informatsii-v-telecommunications-sistemah-i-setyah-tashkent/

필요하다면 비트코인 ​​코어 보안과 관련된 특정 CVE에 대한 자세한 개요와 대응책 사례를 준비해 드릴 수 있습니다.

  1. https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470
  2. http://bitcoinwiki.org/ru/wiki/uyazvimosti-bitcoin
  3. https://www.opennet.ru/62339
  4. https://ptsecurity.com/ru-ru/research/knowledge-base/kak-vyyavit-kyberataku-i-predotvratit-krazhu-deneg/
  5. https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BA%D0%BE%D0%B9%D0%BD
  6. https://habr.com/ru/companies/pt/articles/550872/
  7. https://bits.media/bitcoin-core/
  8. https://www.anti-malware.ru/threats/unauthorized-access/all-publications?type_1=news&page=445
  9. https://cyberleninka.ru/article/n/minimizatsiya-riskov-v-kreditno-finansovoy-sfere-blokcheyn

“비트코인에 대한 위험한 공격: Sha256 해시 처리의 캐시 포이즈닝 취약점 분석 및 블록체인 보안에 미치는 영향”

By