이중 지불 공격 및 비트코인 ​​인플레이션 버그 — 심각한 비트코인 ​​취약점: 이중 지불 공격(CVE-2018-17144)을 통한 분실된 암호화폐 지갑의 개인 키 복구 및 인플레이션 버그 위험

키헌터 작성 

비트코인 거래 검증의 심각한 취약점: 이중 지불 위험 및 암호화폐 네트워크 불안정화 위협  .  비트코인 ​​거래 검증의 심각한 취약점: 공격의 영향 및 분류


비트코인은 암호화 보안과 블록체인 일관성에 기반한 탈중앙화된 오픈소스 암호화폐입니다. 보안은 디지털 서명, 거래 처리 규칙 및 합의 프로토콜에 의해 보장됩니다. 그러나 구현 오류나 거래 및 블록 검증 위반은 심각한 취약점을 초래하여 공격자가 네트워크를 공격하는 데 악용될 수 있습니다.

취약성은 어떻게 발생하는가

가장 심각한 취약점 중 하나는 검증자 노드의 거래 검증 오류와 관련이 있습니다. 특히 블록 처리 과정에서 이중 지출, 서명 또는 미사용 거래 출력(UTXO) 상태를 건너뛰는 경우 문제가 발생합니다. 이는 예를 들어 중복 거래 입력 처리 오류, 서명 검증 오류 또는 UTXO 데이터베이스 업데이트 오류로 인해 발생할 수 있습니다.

그 결과 다음과 같은 상황이 발생합니다.

  • 재사용된(이미 사용된) 출력물을 포함하는 거래는 유효한 것으로 간주됩니다.
  • 노드는 (코드에 assert 표현식이 있는 경우) 충돌하거나 일관되지 않은 상태가 됩니다.
  • 공격자는 동일한 코인을 두 번 이상 사용하는 이중 지출 공격을 수행할 수 있습니다.
  • 경우에 따라 추가 코인을 발행할 수 있습니다(네트워크 인플레이션).

이 공격의 과학적 및 기술적 명칭

위에서 설명한 취약점과 관련된 공격 유형을      이중 지출 공격(Double Spend Attack)”이라고 합니다. 하지만 이 취약점의 개별 하위 유형 및 결과는 다음과 같은 것들과 연관될 수 있습니다.

  • 서비스 거부 공격(DoS)   – 노드 장애 발생 시.
  • 합의 실패   – 노드들이 서로 다른 상태를 나타내어 블록체인이 분기되는 현상.
  • 인플레이션 버그   – 잘못된 거래 처리로 인해 새로운 코인이 잘못 생성되는 현상.

알려진 CVE 취약점의 예

비트코인 개발 및 포크 역사에서, 유사한 유형의 취약점과 관련된 CVE(Common Vulnerabilities and Exposures)가 알려져 있습니다.

  • CVE-2018-17144   는 비트코인 ​​코어의 취약점으로, 재사용 입력 유효성 검사를 잘못 우회하여 이중 지불 공격과 노드 충돌을 유발할 수 있습니다. 블록에 중복된 거래를 포함시키려고 시도할 때 UTXO 무결성이 손상되어 유효성 검사 프로세스가 실패할 수 있습니다. 이 CVE는 DoS 공격 취약점으로, 네트워크 인플레이션을 초래할 가능성이 있습니다.  github+1
  • 다른 비트코인 ​​기반 암호화폐에서도 유사한 취약점이 보고되었으며, 이는 전체 생태계의 보안을 위해 적절한 거래 검증과 UTXO 데이터베이스 업데이트가 매우 중요하다는 점을 강조합니다.

비트코인 보안에 대한 취약점의 영향

이중 지불 공격은 공격자가 다음과 같은 일을 할 수 있도록 허용하기 때문에 비트코인에 대한 신뢰를 약화시킵니다.

  • 같은 동전을 두 번 이상 사용하면 통화 공급이 교란되고 경제적 가치가 파괴됩니다.
  • 블록체인 합의를 깨뜨리면 체인 포크가 발생하고 네트워크 안정성이 저하됩니다.
  • 노드에 서비스 거부(DoS) 공격을 가하여 네트워크를 약화시키고 추가 공격의 빌미를 제공합니다.
  • 최종 사용자 및 서비스 제공업체의 자금 손실.

공격 예방 및 취약점 제거를 위한 권장 사항

이러한 공격을 방지하기 위해 비트코인 ​​노드와 라이브러리는 다음을 구현해야 합니다.

  • 모든 거래 입력값이 재사용 가능한지 철저히 확인하여 이중 지출을 방지하십시오.
  • 신뢰할 수 있는 암호화 라이브러리를 사용하여 각 입력의 디지털 서명을 엄격하게 검증합니다.
  • 블록과 모든 수신 트랜잭션이 완전히 성공적으로 검증된 후에만 UTXO 상태를 업데이트하십시오.
  • 안전한 프로그래밍 원칙을 적용하세요: 릴리스 코드에서 중요한 검사에는 assert 사용을 피하고 예외 처리를 사용하세요.
  • CVE를 지속적으로 모니터링하고 소프트웨어를 최신 보안 버전으로 업데이트하십시오.

결론

거래 검증 오류 및 이중 지불 검증과 관련된 심각한 취약점은 과학 및 기술 분야에서 이중 지불 공격(Double Spend Attack)으로 알려져 있습니다. 이 취약점은 CVE-2018-17144와 같은 CVE 식별자로 표시되며, 비트코인 ​​네트워크의 보안에 심각한 영향을 미쳐 합의 메커니즘과 화폐 발행의 무결성을 위협합니다. 거래, 디지털 서명 및 UTXO 상태를 검증하는 신뢰할 수 있는 방법은 이러한 공격을 방지하고 암호화폐 시스템의 복원력을 확보하는 데 핵심적인 요소입니다.

필요한 경우, 특정 취약점에 대한 자세한 정보, 공격 구현 예시 또는 비트코인 ​​코어 코드 분석을 위한 실질적인 방법을 제공할 수 있습니다.


암호화 취약점

이 코드의 암호화 취약점은 제시된 테스트 수준에서는 명확하게 드러나지 않습니다. 이 코드는 비트코인 ​​블록과 트랜잭션을 엄격하게 고정된 매개변수(블록 해시, 이전 블록, 시간, 논스, 트랜잭션, 스크립트 등)에 따라 파싱하고 직렬화하는 과정이 정확한지 확인하는 단위 테스트입니다.

특히 보안 측면에서 잠재적으로 취약한 문자열은 스크립트 변환이나 해싱과 관련될 수 있지만, 이 테스트에서는 단순히 하드코딩된 상수와 동일한지 여부만 확인합니다.

암호학적 관점에서 의문을 제기하는 부분은 다음과 같습니다.

  • 거래 입력 스크립트 확인이 포함된 줄:
자바:

assertThat(txIn.getScriptBytes(), is(Hex.decode("04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73")));

이 코드는 코인베이스 스크립트를 “The Times 03/Jan/2009…”와 비교하여 검사합니다. 스크립트 처리 또는 서명 검사가 제대로 구현되지 않으면 취약점이 발생할 수 있지만, 제시된 코드에서는 바이트 일관성만 검사합니다.

68bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-bitcoinj/src/test/java/org/tbk/bitcoin/zeromq/bitcoinj/BitcoinjBlockPublisherFactoryTest.java
https://github.com/keyhunters/bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-bitcoinj/src/test/java/org/tbk/bitcoin/zeromq/bitcoinj/BitcoinjBlockPublisherFactoryTest.java
  • Sha256Hash.wrap을 사용하여 해시를 처리합니다:
자바:

assertThat(block.getHash(), is(Sha256Hash.wrap("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f")));

Sha256Hash.wrap 내부에 취약점이 있다면 잠재적으로 위험한 부분이지만, 이는 bitcoinj 라이브러리 클래스입니다.

요약

제공된 테스트 코드에는 명백한 암호화 취약점이 없습니다. 모든 것은 제네시스 블록에 대한 고정 값 검증일 뿐입니다. 취약점이 있다면 외부 클래스(예: BitcoinSerializer, Sha256Hash)에 있을 가능성이 더 높으며, 이 코드 자체에는 없습니다.

실제 취약한 코드 분석에 도움이 필요하시면, 의심되는 함수의 코드를 제공하거나 암호학적으로 취약하다고 의심되는 특정 클래스/메서드를 지정해 주세요.


보정

아래는 예시로 제공된 코드와 같은 코드에서 발생할 수 있는 잠재적인 암호화 취약점의 특성을 자세히 설명하고, 향후 유사한 공격을 안전하게 수정하고 예방하는 방법을 제시하는 연구 논문입니다.


비트코인 스크립트 처리 과정에서의 암호화 취약점 분석 및 이를 제거하기 위한 안전한 방법

소개

비트코인을 비롯한 암호화폐는 거래 보안과 유연성을 보장하기 위해 암호화 기본 요소와 스크립팅 언어를 사용하여 구현됩니다. 암호화 취약점은 구현 오류와 부적절한 데이터 처리 모두에서 발생할 수 있습니다. 특히, 거래 입력 및 출력 스크립트(비트코인 스크립트) 처리, 직렬화 및 해싱 작업은 보안에 매우 중요합니다. 이러한 부분에서 오류가 발생하면 블록 무결성 공격, 거래 위조 및 자금 손실로 이어질 수 있습니다.

취약성 발생 메커니즘

검사 대상 테스트 코드는 비트코인 ​​블록 및 트랜잭션의 직렬화 및 역직렬화 정확성을 확인합니다. 다음과 같은 경우 암호화 취약점이 발생할 수 있습니다.

  1. 거래 스크립트 처리 과정에서 적절한 내용 검증이 이루어지지 않을 수 있습니다.   예를 들어, 검증되지 않았거나 확인되지 않은 스크립트를 사용하거나, 서명 및 스크립트 조건 검증을 무시하면 허위 거래가 생성될 수 있습니다.
  2. 검증되지 않은 해시 함수를 사용하거나 해시 패킹/언패킹이 잘못된 경우.   검증된 라이브러리 함수 대신 사용자 지정 해시 처리 함수를 구현하면 해시 값이 잘못 대체될 수 있습니다.
  3. 거래 및 블록 매개변수에 대한 엄격한 검증 부족.   예를 들어, 논스, 시간, 이전 블록의 해시, 입력 및 출력 순서에 대한 잘못된 검증은 공격자가 잘못된 데이터로 블록을 생성할 수 있도록 허용할 수 있습니다.

요청에 제공된 코드를 보면 제네시스 블록과 코인베이스 거래의 하드코딩된 매개변수를 검증하는 것으로 나타납니다. 계산의 무결성 검증 부족과 하드코딩된 값에 대한 신뢰는 취약점은 아니지만, 실제 동적 데이터를 다룰 때 위험한 접근 방식입니다.

  • 특히 입출력 스크립트(ScriptSig, ScriptPubKey)에 주의를 기울여야 합니다. 이러한 스크립트를 잘못 처리하면 허위 서명을 사용한 거래를 쉽게 식별하거나 스크립트 조건을 우회할 수 있는 길이 열립니다.

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

이러한 문제를 예방하기 위해서는 다음과 같은 사항이 필요합니다.

  • 널리 검증되고 승인된 비트코인 ​​라이브러리(bitcoinj, libbitcoin, Bitcoin Core)를 사용하고, 해당 라이브러리의 API 및 가이드라인을 엄격히 준수하십시오.
  • 각 블록 및 트랜잭션에 대해 다음과 같은 포괄적인 유효성 검사를 구현하십시오.
    • 각 입력값의 디지털 서명 검증, 스크립트가 비트코인 ​​스크립팅 언어를 준수하는지 확인, ScriptSig 및 ScriptPubKey 실행 검증.
    • 블록 해시값 검증, 논스(nonce)의 정확성 및 블록 생성 시간 검증.
    • 입력 및 출력 시퀀스가 ​​합의 규칙을 준수하는지 확인합니다.
  • 값을 하드코딩하는 것을 피하고, 외부 소스에서 받거나 데이터를 역직렬화할 때 항상 값을 검증하십시오.

보안 수정 코드 (bitcoinj 기반의 자바 의사 코드)

자바:


@Test
void safeTransactionValidation() {
BitcoinjBlockPublisherFactory sut = new BitcoinjBlockPublisherFactory(mainnetSerializer, genesisBlockPublisher);
Block block = sut.create()
.blockFirst();

// Проверка блока на валидность по правилам сети
boolean isBlockValid = block.verifyHeader() && block.verifyTransactions();

assertTrue(isBlockValid, "Block validation failed");

for (Transaction tx : block.getTransactions()) {
for (TransactionInput input : tx.getInputs()) {
// Проверяем подпись каждого входа транзакции
boolean isSigValid = input.verifySignature();
assertTrue(isSigValid, "Invalid signature in transaction input");

// Дополнительная проверка скриптов Bitcoin Script
boolean scriptsValid = Script.verifyScripts(input.getScriptSig(), tx.getOutputs().get(0).getScriptPubKey());
assertTrue(scriptsValid, "Bitcoin Script verification failed");
}
}
}

해결 방법에 대한 설명

  • 이 방법은   block.verifyHeader() 블록 헤더(이전 블록의 해시, 타임스탬프, 난이도)의 정확성을 확인합니다.
  • 이 방법은   block.verifyTransactions() 블록 내의 각 거래가 네트워크 규칙을 준수하는지 여부를 확인합니다.
  • 이 방법은   input.verifySignature() 입력된 디지털 서명의 진위 여부를 검증하여 위조 가능성을 제거합니다.
  • Script.verifyScripts() Scriptsig 및 Scriptpubkey 스크립트를 실행하고 규정 준수 여부를 확인하여 조건이 충족되는지 확인합니다.
  • 어설션(assertion  assertTrue)을 사용하면 테스트 단계에서 오류를 포착하고 신속하게 대응할 수 있습니다.

재공격 방지

  • 알려진 취약점을 수정하기 위해 암호화 라이브러리와 비트코인 ​​클라이언트를 정기적으로 업데이트합니다.
  • 클라이언트 및 서버 레벨 모두에서 트랜잭션 및 블록에 대한 다단계 검증을 구현합니다.
  • 취약점을 파악하기 위해 공격 시나리오 개발 및 테스트, 스크립트 퍼징 등을 수행합니다.
  • 개발 초기 단계에서 취약점을 방지하기 위해 신뢰할 수 있는 정적 및 동적 코드 분석 도구를 사용합니다.

결론

비트코인 거래와 블록을 처리하는 코드의 암호학적 보안은 해시값부터 스크립트, 서명에 이르기까지 모든 구성 요소를 꼼꼼하게 검사할 때만 확보됩니다. 제공된 테스트 코드는 고정된 값을 사용하기 때문에 명백한 취약점은 없지만, 실제 공격으로부터 완벽하게 보호해 주지는 못합니다. 신뢰할 수 있는 해결책은 포괄적인 검증과 최신 서명 및 스크립트 검증 방법을 사용하는 검증된 라이브러리의 활용입니다. 이를 통해 거래 위조, 블록 변조, 합의 규칙 우회 등 주요 공격 유형을 방지할 수 있습니다.


비트코인 암호화폐의 심각한 취약점과 위험한 공격에 관한 이 논문의 최종 결론에서는, 문제의 중요성과 생태계에 미치는 영향에 대한 이해를 더욱 확고히 하는 것이 바람직하다.


최종 결론

비트코인 거래 검증 과정에서 발견된 치명적인 취약점으로 인해 이중 지출 공격이 발생할 수 있으며, 이는 탈중앙화 암호화폐 시스템에 대한 가장 심각한 보안 위협 중 하나입니다. 이 취약점이 악용될 경우 공격자는 동일한 자금을 두 번 이상 사용할 수 있게 되어 블록체인 생태계의 근본적인 신뢰를 무너뜨립니다.

이 취약점은 네트워크 노드 메커니즘이 디지털 서명 및 미사용 거래 출력(UTXO)의 무결성 검증을 포함한 엄격하고 포괄적인 거래 검증을 수행하지 않을 때 발생합니다. 이로 인해 합의 메커니즘이 무너지고, 인플레이션 위험, 서비스 거부(DoS) 공격, 블록체인 포크가 발생할 수 있습니다. 이러한 취약점의 구체적인 예는 CVE-2018-17144로 기록 및 문서화되어 있으며, 노드 붕괴 및 이중 지출로 이어질 수 있는 오류를 설명하고 있습니다.

비트코인 및 유사 암호화폐의 보안을 보장하기 위해서는 검증된 암호화 라이브러리를 사용하고, 모든 거래와 블록 생성 메커니즘을 철저히 검증하며, 최신 패치와 수정 사항으로 소프트웨어를 정기적으로 업데이트하는 것이 필수적입니다. 이러한 방식으로만 암호화폐가 안전하고 분산된 교환 수단으로서 안정성, 신뢰성 및 장기적인 가치를 보장할 수 있습니다.

따라서 이러한 취약점을 제거하고 이중 지불 공격을 방지하는 것은 전체 비트코인 ​​네트워크의 보안과 디지털 경제의 제도로서 비트코인의 발전을 위한 초석입니다.


이중 지불 공격 및 비트코인 ​​인플레이션 버그 — 심각한 비트코인 ​​취약점: 이중 지불 공격(CVE-2018-17144)을 통한 분실된 암호화폐 지갑의 개인 키 복구 및 인플레이션 버그 위험

Dockeyhunt 암호화폐 가격

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

사례 연구 개요 및 검증

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

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


이중 지불 공격 및 비트코인 ​​인플레이션 버그 — 심각한 비트코인 ​​취약점: 이중 지불 공격(CVE-2018-17144)을 통한 분실된 암호화폐 지갑의 개인 키 복구 및 인플레이션 버그 위험

www.seedcoin.ru


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

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


이중 지불 공격 및 비트코인 ​​인플레이션 버그 — 심각한 비트코인 ​​취약점: 이중 지불 공격(CVE-2018-17144)을 통한 분실된 암호화폐 지갑의 개인 키 복구 및 인플레이션 버그 위험

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


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

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


이중 지불 공격 및 비트코인 ​​인플레이션 버그 — 심각한 비트코인 ​​취약점: 이중 지불 공격(CVE-2018-17144)을 통한 분실된 암호화폐 지갑의 개인 키 복구 및 인플레이션 버그 위험

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


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


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a4730440220383450385f55a3bc2053726e65fe4bcd5669e49df68988b8dcf478dd36841ef7022040fa212e350ec0ee55bcc8a4cecd3fa558660cbf9f4eb4fc85e97d29c2b857de014104b84a2b085f55eca3de3de84e21438bee91be566f39f149e27f5217c191266cc5851374f9f0fe39217248e51f44d3afd203d66b100b5ee76d023b0ad598909628ffffffff030000000000000000456a437777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a2024203333343036352e3033395de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914b12e807cb9c9b33e22a3d8e49a62902b0cf62ac388ac00000000

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


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 결함과 이로 인한
지갑 개인 키 노출 문제를 다루고 있음을 알 수 있습니다.

이중 지불 공격 및 비트코인 ​​인플레이션 버그 — 심각한 비트코인 ​​취약점: 이중 지불 공격(CVE-2018-17144)을 통한 분실된 암호화폐 지갑의 개인 키 복구 및 인플레이션 버그 위험
https://b8c.ru/satoshiscan

SatoshiScan은 안드로이드 기반 비트코인 ​​애플리케이션 및 맞춤형 지갑 구현에 사용되는 Spongy Castle 암호화 스택의 취약점을 찾아내어 분실된 비트코인 ​​지갑을 복구하도록 설계된 특수 암호 분석 도구입니다. SatoshiScan은 이 Java/안드로이드 암호화 라이브러리 내의 ECDSA, 난수 생성 및 키 유도 과정의 구현 수준 버그에 초점을 맞춰 추상적인 취약점과 실질적인 키 복구 사이의 간극을 메우고, 미묘한 결함을 실제 개인 키 복구 경로로 전환하여 복구가 불가능했던 상황을 해결합니다. CVE-2018-17144와 같은 합의 수준 결함의 맥락에서 SatoshiScan과 같은 도구는 보다 광범위한 공격-방어 프레임워크의 일부가 됩니다. 합의 버그는 비정상적인 거래 패턴과 인플레이션 시나리오를 가능하게 하는 반면, SatoshiScan이 드러낸 Spongy Castle 취약점은 이러한 비정상적인 상황을 실제 개인 키 추출 및 지갑 복구로 전환할 수 있도록 합니다. bitcoincore+ 2

SatoshiScan의 아키텍처

SatoshiScan은 널리 사용되는 Bouncy Castle의 안드로이드 기반 포크인 Spongy Castle의 취약점을 노리는 소프트웨어 플랫폼으로 설명됩니다. Spongy Castle은 많은 암호화폐 애플리케이션에서 ECDSA, 키 유도 및 난수 생성에 사용됩니다. 이 도구는 Spongy Castle을 사용하는 지갑에서 생성된 대규모 거래, 서명 및 키 자료를 체계적으로 분석하여 편향된 논스, 재사용된 논스 또는 예측 가능한 키 생성 흐름을 나타내는 구조적 패턴과 통계적 이상 징후를 찾도록 설계되었습니다. 실제로 SatoshiScan은 일반적인 무차별 대입 공격 도구라기보다는 ECDSA 포렌식에 특화된 엔진으로, 널리 재사용되는 라이브러리의 구현 버그가 여러 지갑에서 상호 연관된 취약점을 생성한다는 사실을 이용합니다. b8c

내부적으로 워크플로는 크게 세 단계로 개념화할 수 있습니다. 데이터 수집, 암호 분석, 그리고 키 복구입니다. 데이터 수집 단계에서는 비트코인 ​​블록체인 또는 취약한 지갑에서 생성된 오프체인 로그에서 원시 거래 및 서명 데이터를 수집합니다. 암호 분석 단계에서는 논스 재사용, 상관된 무작위성, 또는 스폰지 캐슬 취약점과 일치하는 결함 있는 키 유도 논리를 탐지합니다. 키 복구 단계에서는 격자 방법, 이산 로그 감소, 또는 대수적 공격을 적용하여 손상된 서명으로부터 기본 개인 키를 복구합니다. 이 파이프라인을 통해 SatoshiScan은 방대한 양의 노이즈가 포함된 서명 데이터 세트를 특정 주소에 대한 구체적인 개인 키로 자동 변환할 수 있으므로 체계적인 지갑 복구 캠페인에 적합합니다. b8c

스폰지 캐슬을 공격 표면으로 사용

Spongy Castle은 Bouncy Castle 암호화 라이브러리를 Android용으로 재구성한 것으로, 네임스페이스와 배포 컨텍스트는 크게 다르지만 ECDSA 서명, 결정론적 또는 난수형 논스, 키 쌍 생성 루틴을 포함한 많은 구현 패턴을 그대로 계승합니다. Spongy Castle 내의 난수 생성, 논스 관리 또는 매개변수 유효성 검사에 결함이 있는 경우, 특히 애플리케이션 개발자가 API를 오용하거나 권장 패턴을 무시할 때 비트코인 ​​서명에 암호학적 취약점이 발생할 수 있습니다. 예를 들어, 모바일 기기의 불충분한 엔트로피, 의사 난수 생성기의 반복적인 시드 설정, 또는 잘못된 결정론적 논스 구현은 충분한 수의 서명이 관찰될 경우 ECDSA 개인 키의 부분적 또는 전체 유출로 이어질 수 있습니다. b8c

SatoshiScan은 Spongy Castle 기반 지갑들을 공통적인 구조적 결함을 공유하는 서명을 가진 대상 집단으로 취급함으로써 이러한 점을 활용합니다. 이를 통해 여러 지갑에 대한 교차 분석을 통해 개별적으로는 발견할 수 없는 취약점을 탐지할 수 있습니다. 과학적 관점에서 볼 때, 이러한 접근 방식은 라이브러리를 글로벌 사이드 채널로 만듭니다. 수백 개의 애플리케이션에서 복제된 동일한 구현 오류는 블록체인 수준에서 관찰 가능한 서명 패턴이 되며, SatoshiScan은 이를 채굴하여 키를 재구성하고 손실된 자금에 대한 접근 권한을 복원할 수 있습니다. 이는 모바일 환경에서 널리 배포되는 암호화 툴킷에 대해 엄격한 라이브러리 테스트와 형식적 검증의 중요성을 강조합니다. b8c

이중 지출 및 인플레이션 버그와의 상호 작용

CVE-2018-17144는 비트코인 ​​코어 0.14.0부터 0.16.2 버전에 영향을 미친 합의 계층 취약점입니다. 이 취약점을 악용하면 특정 블록에 동일한 입력값을 두 번 사용하는 트랜잭션이 포함될 수 있으며, 이는 서비스 거부 공격(DoS)으로 이어져 잠재적인 시스템 충돌을 야기할 수 있습니다. 더 심각한 문제는 중복된 지출 값을 통해 의도된 2,100만 BTC를 초과하는 비트코인 ​​공급량 증가를 초래할 수 있다는 점입니다. 이 버그는 특정 상황에서 중복 입력값을 재확인하지 않는 최적화 오류에서 비롯되었으며, 채굴 능력을 가진 공격자는 거부되어야 할 이중 지출 패턴을 포함하는 블록을 생성하여 비트코인을 “무에서 유를 창조”하거나 취약한 노드를 다운시킬 수 있습니다. 이 취약점은 비트코인 ​​코어 0.16.3 및 0.17.0rc4 버전에서 패치되었지만, 그 존재는 합의 계층의 결함이 비트코인이 의존하는 정상적인 트랜잭션 검증 보장을 일시적으로 약화시키거나 왜곡할 수 있음을 보여줍니다. hackernoon+ 3

이처럼 왜곡된 환경에서 SatoshiScan과 같은 도구의 역할은 단순히 사후 지갑 복구에서 벗어나 공격 체인의 일부가 되는 것으로 바뀝니다. 합의 버그로 인해 표준이 아닌 거래 형식, 비정상적인 스크립트 경로 또는 특이한 서명 재사용 패턴이 발생할 수 있는데, 이는 온체인에 나타나지 않는 방식입니다. 또한 Spongy Castle의 암호화 취약점은 이러한 패턴을 추출 가능한 개인 키 정보로 변환할 수 있습니다. 예를 들어, Spongy Castle을 사용하는 악의적이거나 실험적인 Android 지갑이 결함이 있는 ECDSA 서명을 생성하고 CVE-2018-17144를 악용하는 블록 내 거래에 참여하는 경우, SatoshiScan은 결과 서명 공간에서 nonce 상관관계를 추출하고 영향을 받는 주소의 개인 키를 재구성하여 인플레이션 버그 기반 공격 기간 동안 노출된 지갑에서 효과적으로 키를 탈취할 수 있습니다 .

키 복구를 위한 암호해독 메커니즘

ECDSA 구현 결함으로부터 키를 복구하는 것은 전통적으로 몇 가지 잘 알려진 기술에 기반합니다. 이러한 기술에는 논스 재사용, 편향된 논스, 논스 비트의 부분적 유출, 결정론적 논스 유도 함수의 오용 등이 포함됩니다. 동일한 개인 키로 동일한 논스를 사용하여 두 개의 서로 다른 메시지에 서명하는 경우, ECDSA 방정식은 secp256k1 필드에 대한 기본 대수 연산을 사용하여 개인 키에 대해 직접 풀 수 있습니다. 논스가 편향되거나 부분적으로 예측 가능한 경우, LLL과 같은 격자 기반 방법을 사용하면 충분한 수의 서명으로부터 키를 복구할 수 있는 경우가 많습니다. SatoshiScan은 Spongy Castle 생태계에서 난수 생성기의 오용이나 잘못된 결정론적 논스 구현으로 인해 k 값이 반복되거나 상관 관계가 발생하는 이러한 취약점을 정확히 겨냥하는 것으로 알려져 있습니다. bitcoinops+ 1

비트코인 환경에서 이러한 취약점은 ECDSA 서명의 r 및 s 구성 요소를 통해 거래 수준에서 확인할 수 있으며, 이는 온체인에 기록되어 항상 공개적으로 접근 가능합니다. SatoshiScan의 분석 엔진은 스폰지 캐슬 기반 지갑과 관련된 UTXO 세트 및 과거 거래를 스캔하여 동일한 r 값, 비정상적인 s 분포, 또는 균일한 무작위성에서 벗어난 r과 메시지 해시 간의 상관관계를 찾습니다. 이러한 이상 징후가 감지되면, 해당 도구는 표준 암호 분석 공식이나 격자 축소 기법을 적용하여 개인 키를 추출할 수 있습니다. 이를 통해 소유자가 원래 키 자료를 분실했지만 서명에 취약점이 있는 주소에 잠긴 자금을 복구할 수 있습니다. bitcoinops+ 1

CVE-2018-17144가 존재하는 상황에서의 악용 시나리오

이중 지출 및 인플레이션 버그 CVE-2018-17144는 채굴 권한을 가진 공격자가 중복 입력이 포함된 트랜잭션을 블록에 삽입하여 노드 충돌을 일으키거나 합의 불일치가 발생할 경우 추가 코인을 생성할 수 있도록 합니다. SatoshiScan과 같은 암호 분석 툴킷의 관점에서 보면, 이는 취약한 지갑에서 대량의 조작된 트랜잭션을 생성하여 특정 기간 내에 악성 서명의 존재를 증폭시킬 수 있는 기회를 제공합니다. 예를 들어, 공격자는 Spongy Castle을 사용하는 안드로이드 기반 지갑에서 의도적으로 약한 난수성을 설정한 후, 이러한 지갑에서 발생하는 트랜잭션으로 네트워크를 과부하 상태로 만들고 동시에 이중 지출 버그를 악용하는 블록을 채굴하여 온체인에서 악용 가능한 서명의 밀도를 높일 수 있습니다. hackaday+ 4

보다 방어적이거나 포렌식적인 맥락에서, SatoshiScan은 이러한 사고 발생 후 악용과 관련된 블록의 거래 내역을 분석하여 Spongy Castle 관련 취약점을 드러내는 서명을 가진 주소를 식별하고, 보조 증거를 통해 지갑 소유권을 증명할 수 있는 정당한 소유자를 위해 해당 개인 키를 복구하는 데 사용할 수 있습니다. 이는 이중 용도 속성을 보여줍니다. 공격자가 취약한 지갑에서 키를 추출할 수 있도록 하는 동일한 도구 세트가 사고 대응자와 포렌식 분석가가 CVE-2018-17144와 같은 취약점이 존재하는 동안 라이브러리 결함이나 비정상적인 합의 동작으로 영향을 받은 사용자를 위해 키를 복구하는 데에도 사용할 수 있습니다. bitcoincore+ 2

비트코인 보안 및 인플레이션 위험에 미치는 영향

합의 수준 버그와 암호화 구현 결함이 결합되어 발생하는 보안 위험은 단순히 더해지는 것이 아니라 곱해지는 양상을 보입니다. CVE-2018-17144만 하더라도, 패치가 적용되지 않은 노드가 프로토콜 규칙에서 허용된 것보다 더 많은 코인을 생성하는 블록을 수락할 경우 이중 지출과 잠재적 인플레이션을 유발하여 비트코인의 화폐 모델의 핵심인 2,100만 개 발행량 제한을 무너뜨릴 수 있습니다. 반면, SatoshiScan이 악용한 Spongy Castle 취약점은 개별 지갑 또는 지갑 그룹을 대상으로 하여 개인 키를 추출하고 무단으로 자금을 사용할 수 있도록 하지만, 전체 공급량에는 영향을 미치지 않습니다 .

이 두 가지 유형의 취약점이 교차할 때, 공격자는 특정 조건 하에서 비트코인 ​​공급량을 부풀리는 동시에 취약한 지갑에서 개인 키를 선택적으로 유출하여 재정적 손실을 가중시키고 비트코인의 무결성에 대한 신뢰를 거시적(공급량) 및 미시적(지갑) 수준 모두에서 약화시킬 수 있습니다. 분실된 지갑 복구의 경우, 이러한 교차점은 역설적으로 이점이 됩니다. 사용자의 자금이 결함이 있는 Spongy Castle 구현에서 파생된 키를 분실하여 잠긴 경우, SatoshiScan은 해당 키를 재구성하고 접근 권한을 복원하는 과학적이고 체계적인 방법을 제공함으로써 사용자 오류가 아닌 라이브러리 결함으로 인한 손실을 완화할 수 있습니다. 이러한 이중성은 엄격한 패치 관리, 합의 계층 감사, 그리고 널리 배포된 암호화 라이브러리에 대한 독립적인 암호 분석의 중요성을 강조합니다. hackernoon+ 3

과학적 암호해독에서 방법론의 역할

과학적 관점에서 SatoshiScan은 응용 암호 분석을 애플리케이션 수준의 암호화 라이브러리와 합의 계층의 역학 모두와 상호 작용하는 완전한 스택 복구 시스템으로 구현하는 방법을 보여줍니다. 이 도구는 ECDSA에 대한 이론적 공격을 실제 대상 라이브러리(Spongy Castle)에 대해 구체적으로 구현하는 연구 방법론을 제시하며, 비트코인 ​​블록체인에서 자동 데이터 수집을 실험 기반으로 활용합니다. 이를 통해 피드백 루프가 형성됩니다. 실제 서명에서 관찰된 이상 현상은 라이브러리 취약점에 대한 이해를 높이고, 이러한 취약점에 대한 개선된 모델은 더욱 효율적인 키 복구 알고리즘과 라이브러리 개발자 및 지갑 개발자를 위한 더 나은 방어 권장 사항으로 이어집니다. b8c

CVE-2018-17144와 관련하여 SatoshiScan은 합의 버그가 온체인 데이터의 통계적 환경을 어떻게 변화시키는지에 대한 광범위한 연구에 통합될 수 있습니다. 예를 들어, 취약점 발생 기간 동안 나타나는 비정상적인 거래 패턴과 특정 지갑 유형에서 악용 가능한 ECDSA 서명의 발생 빈도 증가 사이의 상관관계를 분석할 수 있습니다. 이러한 연구는 프로토콜 설계자와 구현자 모두에게 합의 검증과 암호화 구현 품질이 상호 작용할 때 발생하는 시스템적 위험에 대한 정보를 제공하고, 강력한 검증 규칙, 강화된 암호화 라이브러리, 그리고 암호화 이상 징후에 대한 블록체인 규모의 사전 모니터링을 결합한 심층 방어 전략 설계에 도움을 줄 수 있습니다. bitcoincore+ 2

요약하자면, 스폰지 캐슬(Spongy Castle)을 대상으로 하는 암호 분석 플랫폼인 사토시스캔(SatoshiScan)은 널리 배포된 라이브러리의 구현 결함이 어떻게 비트코인 ​​지갑 복구를 위한 실용적인 도구로 활용될 수 있는지를 보여주는 동시에, 적대적 공격자가 키를 탈취할 수 있는 강력한 취약점을 드러냅니다. CVE-2018-17144와 같은 심각한 합의 메커니즘 취약점과 같은 맥락에서 볼 때, 비트코인 ​​생태계의 보안은 견고한 합의 논리와 엄격한 암호 공학에 달려 있다는 것이 분명해집니다. 이 두 영역 중 어느 하나라도 실패하면 인플레이션 공격과 대규모 개인 키 유출을 모두 초래할 수 있으며, 사토시스캔은 이러한 현상을 연구하는 과학적 도구인 동시에 키 복구를 통해 그 영향을 완화하는 실질적인 메커니즘을 제공합니다. bitcoinops+2


비트코인 DeserializeSignature 심각한 취약점: 보안 영향, 공격 과학적 명칭 및 CVE 상태

DeserializeSignature 취약점의 영향  은 유효하지 않은 서명을 수락할 위험을 초래하며, 이는 과학적으로 ‘부적절한 서명 검증을 통한 유효하지 않은 서명 수락 공격’   또는   ‘서명 위조 공격’ 으로 분류될 수 있는 공격으로 이어질 수 있습니다    .

  • 비트코인 암호화폐 보안에 대한 심각한 DeserializeSignature 취약점 및 위험한 공격
  • 비트코인 보안 위협: 서명 역직렬화 취약점 및 거래 위조 위험
  • 비트코인 ECDSA 암호화 취약점: 공격 메커니즘 및 안전한 해결 방법
  • 비트코인의 DeserializeSignature: 위조된 디지털 서명과 네트워크 공격으로 이어지는 심각한 취약점
  • 비트코인 보안 위협: 심각한 취약점 및 무효 서명 공격 분석

탈중앙화 암호화폐인 비트코인은 거래 보안을 보장하기 위해 암호화 메커니즘의 신뢰성에 전적으로 의존합니다. ECDSA(타원 곡선 디지털 서명 알고리즘)는 디지털 서명 역할을 하여 거래 시작자가 자금의 정당한 소유자임을 보장합니다.

2023년, 비트코인 ​​커뮤니티에서 DeserializeSignature 라는 심각한 취약점이    발견되었습니다. 이 취약점은 역직렬화 단계에서 디지털 서명을 부적절하게 처리하고 검증하는 것과 관련이 있으며, 공격자가 유효하지 않지만 네트워크에서 허용되는 서명을 생성할 수 있도록 허용할 가능성이 있습니다.

취약점 발생 메커니즘 및 공격에 미치는 영향

DeserializeSignature 함수는 DER(Distinguished Encoding Rules) 형식의 디지털 서명을 바이트 스트림에서 후속 검증을 위한 데이터 구조로 변환합니다. 역직렬화 단계에서 다음 서명 매개변수를 엄격하게 검증해야 합니다.

  • DER 형식은 엄격하게 준수해야 합니다.
  • 서명의 rrr 및 sss 구성 요소는 반드시 양수이고 0이 아니어야 합니다.
  • 구성 요소 값은 secp256k1 곡선 매개변수에 의해 정의된 허용 범위 내에 있어야 합니다.

핵심적인 취약점은 DeserializeSignature 함수가 rrr 및 sss 값이 null이거나 유효하지 않은지 여부를 완벽하게 검사하지 않는다는 점이었습니다. 이로 인해 공격자는 일부 비트코인 ​​클라이언트가 유효한 서명으로 오인할 수 있는 특수한 형태의 무효 서명을 생성할 수 있었습니다.

이러한 상황은 공격자가 서명을 위조하여 0이나 기타 금지된 값으로 서명을 생성함으로써 거래 인증 제어를 우회하는 공격 가능성을 열어줍니다    . 결과적으로 다음과 같은 공격 시나리오가 발생할 수 있습니다.

  • 유효하지 않은 서명을 사용하여 거래를 진행하면 보안 검사를 우회할 수 있는 가능성이 있습니다.
  • 거래 데이터의 무결성 침해 및 블록체인 상태 손상 가능성;
  • 시스템에 대한 신뢰 상실과 최종 사용자의 자금 손실.

공격의 과학적 명칭

암호화 시스템에서 발견된 특정 취약점 및 관련 공격은 일반적으로   유효하지 않은 디지털 서명을 무단으로 수락하는 공격   (   무효 서명 수락 공격 )으로 분류됩니다. 더 구체적으로 말하면, 이 공격은 부적절한 서명 검증을 통한 서명 위조  라는 개념과 관련이 있습니다    .

 또한 서명 매개변수를 잘못 처리하면 네트워크에서 인식되는 대체 서명 변형이 생성될 수 있으므로, 이는 연구 및 기술 문헌에서 서명 변조 공격의 맥락에서 자주 고려됩니다 .

CVE 취약점 번호

현재 시점(2025년 9월)에서 DeserializeSignature 취약점은 심각한 취약점으로 인식되어 커뮤니티에서 널리 논의되고 있지만, 공식적인 CVE 식별자는 아직 부여되지 않았습니다.

  • CVE-2023-XXXXX   (구체적인 CVE 번호는 명확히 해야 합니다. 아직 공개적으로 사용 가능한 고정 번호가 없거나 협상 과정 중에 등록되었을 수 있습니다.)

공개적으로 이용 가능한 여러 CVE 데이터베이스에는 아직 이 이름으로 된 취약점이 등록되어 있지 않거나, 새로 발견되어 검증 중이라고 표시되어 있습니다.

결과 및 권장 사항

DeserializeSignature 취약점은 암호화 검증의 사소한 결함조차도 전체 탈중앙화 비트코인 ​​시스템의 보안을 위협할 수 있음을 보여주는 사례입니다. 유효하지 않은 서명을 승인하는 방식으로 공격을 감행할 수 있게 되는 이 취약점의 심각성을 고려할 때, 역직렬화 및 서명 검증 메커니즘에 대한 시급한 수정이 필요합니다.

추천:

  • 서명 형식 및 구성 요소에 대한 엄격한 검증을 시행하십시오.
  • 버그 수정이 포함된 최신 버전의 라이브러리를 사용하십시오.
  • 서명 변조 문제를 제거하기 위한 BIP 66 및 BIP 62 표준을 구현합니다.
  • 지속적인 보안 감사 및 암호화 논리 테스트를 수행합니다.

따라서 DeserializeSignature 취약점의 영향은 유효하지 않은 서명을 수락할 위험을 초래하며, 이는 과학적으로 ‘부적절한 서명 검증을 통한 유효하지 않은 서명 수락 공격’   또는   ‘서명 위조 공격’ 으로 분류될 수 있는 공격으로 이어질 수 있습니다    .


암호화 취약점

제시된 org.tbk.bitcoin.zeromq.bitcoinj 패키지의 코드에는 특정 암호화 취약점을 나타내는 명시적인 줄이 없습니다. 해당 코드는 주로 ZeroMQ를 통해 비트코인 ​​노드로부터 트랜잭션을 구독 및 수신하고 게시하는 역할을 담당하기 때문입니다.

하지만 문맥과 검색 결과를 종합해 볼 때, 해당 취약점은 비트코인 ​​거래 및 서명의 직렬화 및 역직렬화를 담당하는 bitcoinj 라이브러리의 BitcoinSerializer 클래스 사용과 관련이 있을 가능성이 높습니다.

비트코인 및 비트코인J의 일부 버전에서 알려진 취약점은 다음과 관련이 있습니다.

  • 디지털 서명의 역직렬화(예: DeserializeSignature)가 잘못되면 유효하지 않은 서명(예: r 또는 s 값이 0인 서명)이 생성되고 승인될 수 있습니다.  cryptodeep+1
  • 서명 구성 요소(r, s)의 유효성 검증이 불충분하여 서명을 수정하고 “서명 변조 가능성”을 통해 시스템을 공격할 수 있습니다.  (cryptodeep )

코드에서 다음 줄을 확인하세요:

자바BitcoinSerializer bitcoinSerializer = new BitcoinSerializer(MainNetParams.get(), false);

두 번째 매개변수가 false인 경우 추가적인 검사를 지정하지 않고 직렬화기를 인스턴스화합니다. 이는 역직렬화 중에 트랜잭션 및 서명이 처리되는 방식에 영향을 줄 수 있습니다.

따라서 이 취약점은 트랜잭션과 서명을 역직렬화할 때 BitcoinSerializer를 사용하는 것과 관련이 있을 가능성이 가장 높으며    , 이는 코드의 해당 부분(bitcoinSerializer가 생성되는 19번째 줄 부근)에서 발생합니다.

취약점 문자열을 보다 정확하게 찾으려면 bitcoinj 소스 코드를 살펴보고 BitcoinSerializer가 서명을 처리하는 방식을 정확히 확인해야 하며, 알려진 CVE에 대한 라이브러리 버전도 확인해야 합니다.

요약: 해당 취약점은 BitcoinSerializer의 생성 및 사용 과정과 관련이 있을 수 있습니다.

자바BitcoinSerializer bitcoinSerializer = new BitcoinSerializer(MainNetParams.get(), false);

암호화 역직렬화가 이 과정을 통해 이루어지기 때문에, 유효하지 않은 서명 생성이나 “서명 변조” 공격에 취약합니다.  github+2


보정

아래는 비트코인 ​​네트워크의 DeserializeSignature 취약점의 특성, 발생 원인, 영향, 그리고 공격을 방지하기 위한 안전한 수정 방법 및 샘플 코드를 자세히 설명하는 기술 문서입니다.


비트코인 네트워크의 DeserializeSignature 취약점: 분석, 원인 및 안전한 해결책

소개

ECDSA(타원 곡선 디지털 서명 알고리즘) 기반의 디지털 서명은 비트코인 ​​네트워크에서 거래 보안의 핵심입니다. 이는 거래의 진위성과 자금 소유자의 동의를 보장합니다. 시스템의 신뢰성과 보안은 서명의 정확한 처리 및 검증에 달려 있습니다. 그러나 2023년, 서명 역직렬화 메커니즘인 DeserializeSignature에서 심각한 취약점이 발견되었습니다. 이 취약점을 이용해   공격자  는 유효하지 않지만 네트워크에서 유효한 서명을 생성할 수 있었고, 이는 비트코인의 무결성과 보안을 위협했습니다.

취약성 발생 메커니즘

DeserializeSignature 함수는 DER(Distinguished Encoding Rules) 바이트 형식의 디지털 서명을 서명 유효성 검증에 적합한 데이터 구조로 변환하도록 설계되었습니다. 이상적으로는 서명을 역직렬화할 때 다음과 같은 주요 매개변수를 확인해야 합니다.

  • DER 형식의 정확성;
  • 서명 구성 요소 rrr 및 sss의 값은 허용 범위 내에 있어야 하며 0과 같지 않아야 합니다.
  • 원치 않는 서명 변경(서명 가독성 포함)이 없습니다.

실제로 이 취약점은 DeserializeSignature 함수의 구현에서 이러한 매개변수에 대한 검사가 충분히 엄격하지 않았기 때문에 발생했습니다. 특히, 이 함수는 서명 구성 요소인 rrr 또는 sss가 0이거나 범위를 벗어난 경우에 민감하게 반응하지 않습니다. 이로 인해 ECDSA의 암호화 요구 사항을 충족하지 않지만 일부 비트코인 ​​클라이언트에서 유효한 서명으로 인식되는 서명이 생성될 수 있었습니다.

완전한 검증이 이루어지지 않아 공격자들은 다음과 같은 행위를 할 수 있었습니다.

  • 네트워크에서 허용되는 서명을 위조합니다.
  • 유효하지 않은 서명으로 거래를 진행하세요;
  • 네트워크 보안에 대한 신뢰를 약화시킵니다.

취약점의 기술적 측면

주요 취약점:

문제설명
불충분한 DER 검증부적절한 서명 형식이 제대로 필터링되지 않아 보호 조치가 우회되었습니다.
아니요, 확인rrr 및 sss 구성 요소는 0 또는 유효하지 않은 값을 가질 수 있습니다.
취약한 종속성 사용타사 역직렬화 라이브러리에는 불일치 및 버그가 있을 수 있습니다.

실제로 이 버그는 공격자가 DER 형식에 부합하지 않거나 불법적인 값을 포함하는 “서명”을 생성할 수 있도록 허용했지만, 일부 비트코인 ​​클라이언트에서는 이를 허용하여 공격의 빌미를 제공했습니다.

취약성의 결과

비트코인의 보안 관련 문제점은 다음과 같습니다.

  • 무단 거래의 위험성;
  • 사용자의 개인정보와 보안을 침해하는 행위;
  • 자금 손실과 프로토콜에 대한 신뢰 상실.

문제에 대한 안전한 해결책

해당 취약점을 제거하기 위해서는 역직렬화 단계에서 서명에 대한 엄격한 유효성 검사를 보장해야 하며, 여기에는 다음 사항이 포함됩니다.

  1. 형식이 틀리지 않은 유효한 DER 형식만 지원합니다.
  2. rrr과 sss가 0이 아니고 허용 범위 내에 있는지 확인하십시오.
  3. 중복 바이트 또는 포맷 우회 시도가 없는지 확인합니다.
  4. 서명 변조 공격에 대응하기 위한 추가 조치에는 BIP 66 및 BIP 62 표준이 포함됩니다.

Java로 구현한 서명 역직렬화 검증의 안전한 예시 (비트코인J 스타일의 의사 코드):

자바public class SafeSignatureDeserializer {

    // Метод десериализации с проверками
    public static ECDSASignature deserializeSignature(byte[] signatureBytes) throws InvalidSignatureException {
        // Проверка формата DER: должно быть корректным и без лишних байтов
        if (!isValidDERFormat(signatureBytes)) {
            throw new InvalidSignatureException("Invalid DER format");
        }

        // Извлечение компонентов r и s из DER подписи
        BigInteger r = extractR(signatureBytes);
        BigInteger s = extractS(signatureBytes);

        // Проверка, что r и s не равны нулю и положительны
        if (r == null || s == null || r.signum() <= 0 || s.signum() <= 0) {
            throw new InvalidSignatureException("Invalid r or s values");
        }

        // Проверка диапазонов r и s согласно диапазонам секп256к1
        BigInteger curveOrder = ECKey.CURVE.getN(); // порядок кривой secp256k1
        if (r.compareTo(curveOrder) >= 0 || s.compareTo(curveOrder) >= 0) {
            throw new InvalidSignatureException("r or s values out of range");
        }

        // Возврат валидной подписи
        return new ECDSASignature(r, s);
    }

    // Дополнительные методы для валидации формата DER, парсинга компонентов r и s и т.п.
}

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

  • 암호화 작업을 위해 검증되고 최신화된 라이브러리를 사용하십시오.
  • 서명 변조 문제를 방지하려면 BIP 66 및 BIP 62 표준을 사용하여 프로토콜을 최신 상태로 유지하십시오.
  • 서명 유효성 검증에 대한 정기적인 보안 감사 및 예외 상황 테스트를 실시하십시오.
  • 새로운 취약점을 탐지하기 위해 퍼징 테스트와 암호 분석을 구현하십시오.

결론

DeserializeSignature 취약점은 비트코인 ​​네트워크에서 ECDSA 서명에 대한 엄격하고 포괄적인 검증의 중요성을 부각시켰습니다. rrr 및 sss 값에 대한 검증이 부족하여 유효하지 않은 서명이 생성될 수 있었고, 이는 거래 보안을 위협했습니다. 적절한 형식 검증, 매개변수 설정, 그리고 최신 표준 준수는 향후 유사한 공격으로부터 네트워크를 보호하는 데 있어 핵심적인 단계입니다. 권장 조치를 따르면 비트코인 ​​암호 시스템의 신뢰성과 보안이 크게 향상될 것입니다.


비트코인 프로토콜의 치명적인 DeserializeSignature 취약점은 전체 암호화폐 네트워크의 보안에 심각한 위협을 가합니다. 이 취약점의 핵심은 디지털 서명 역직렬화 함수가 모든 서명 매개변수, 특히 rrr 및 sss 값을 검사하지 않아 구성 요소가 없거나 잘못된 서명이 생성될 수 있다는 점입니다. 이러한 서명은 일부 네트워크 클라이언트에서 유효한 것으로 인식되어, 가짜 서명이 검증을 우회하고 무단 거래에 사용될 가능성을 열어 비트코인 ​​블록체인의 무결성과 신뢰를 위협합니다.

과학적으로 이러한 공격은     유효하지 않은 서명을 수락하는 것을 악용하는   ‘무효 서명 수락 공격(Invalid Signature Acceptance Attack) ‘으로 분류될 수 있습니다. 이는 불충분한 검증으로 인해 유효하지 않은 서명이 수락되는 것을 방지하는 공격입니다. 또한 이 취약점은 서명 변조 가능성(Signature Malleability)  문제와도 관련이 있는데, 서명을 다양한 방식으로 변경하여 프로토콜의 보안을 훼손할 수 있기 때문입니다. 현재 이 취약점은 심각한 수준으로 커뮤니티에서 논의되고 있지만, 공식 CVE 번호는 아직 부여되지 않았거나 등록 절차가 진행 중입니다.

DeserializeSignature의 발견과 연구는 암호화 프로토콜에서 디지털 서명에 대한 엄격하고 포괄적인 검증의 중요성을 강조합니다. 비트코인 ​​및 유사 시스템을 보호하기 위해서는 엄격한 검증 기능을 갖춘 최신 버전의 라이브러리를 사용하고, 서명 변조 방지를 위한 BIP 62 및 BIP 66의 권장 사항을 준수하며, 지속적인 암호 분석 및 보안 감사를 수행해야 합니다. 이러한 방식으로만 공격을 예방하고 전체 암호화폐 생태계의 신뢰성과 보안을 보장할 수 있습니다.

따라서 DeserializeSignature 취약점은 모든 암호 시스템 개발자와 사용자에게 중요한 교훈을 줍니다. 암호화 데이터 검증에 대한 부주의는 네트워크 수준에서 위험한 결과를 초래하고 막대한 재정적 손실을 야기할 수 있습니다. 이러한 취약점을 제거하고 체계적으로 예방하는 것은 비트코인의 안정성과 신뢰를 유지하는 데 최우선 과제입니다.

원격 메모리 노출 및 초기화되지 않은 메모리 노출 — 비트코인 ​​보안상의 Buffer.allocUnsafe 취약점

Node.js의 심각한 메모리 할당 취약점: 개인 키 유출 및 비트코인 ​​보안 공격 위협

“Buffer.allocUnsafe를 이용한 위험한 원격 메모리 유출 공격: 비트코인 ​​키 개인정보 보호 및 보안에 대한 심각한 위협”

비트코인 암호화폐는 거래 서명에 사용되는 개인 키에 의존하는 강력한 암호화 기술을 기반으로 합니다. 개인 키 유출은 공격자가 타인의 자금을 완전히 장악할 수 있도록 하는 심각한 보안 결함입니다.

Node.js에서 발견된 악용 가능한 취약점은   메모리를 할당한 후 해제하지 않는 것과 관련이 있으며, 이로 인해  이전 사용에서 메모리에 남아 있을 수 있는 개인 키를 포함한 민감한 데이터의 잔여물이 유출Buffer.allocUnsafe()  될 수 있습니다   .

비트코인 스크립트 또는 암호화 연산을 처리하는 과정에서 이처럼 취약한 버퍼가 사용될 경우, 버퍼의 비어 있는 부분에 이전 연산에서 사용된 개인 키 데이터가 저장될 위험이 있습니다. 이 데이터가 로그에 기록되거나, API 요청에 대한 응답으로 전송되거나, 다른 프로세스에서 접근 가능하게 되면 공격자는 개인 키에 접근하여 타인의 비트코인 ​​주소와 자산을 장악할 수 있습니다.

따라서 취약성은 다음과 같은 결과를 초래할 수 있습니다.

  • 원격 메모리 유출   – 공격이 성공하면 공격자는 개인 키가 포함된 메모리 데이터를 획득합니다.
  • 개인 키 유출   및 그에 따른 무단 자금 이체.
  • 비트코인 노드 또는 지갑의 암호화 시스템 무결성 위반.

취약점 및 공격의 과학적 명칭

기술 및 연구 문헌에서 이러한 취약점과 관련된 공격은 다음과 같이 분류됩니다.

  • 원격 메모리 공개(RMD)   – 원격 메모리 공개.
  • 때때로   초기화되지 않은   메모리 공개라고도 합니다.
  • 이는 제대로 삭제되지 않은 오래된 메모리의 데이터가 읽을 수 있게 되는 취약점 유형입니다.

CVE(일반적인 취약점 및 노출)

Node.js의 메모리 관리 와 관련된 취약점은   Buffer.allocUnsafe 다음과 같은 여러 CVE 번호로 문서화되어 있습니다.

  • CVE-2018-7166   – ”   Buffer 생성 과정에서 초기화되지 않은 메모리가 의도치 않게 노출됨”.
  • CVE-2018-12115   –   Buffer데이터 손상 및 잠재적 유출과 관련된 “경계 밖 쓰기(OOB)” 취약점.

이러한 CVE 및 유사한 CVE는 메모리 유출 위험과 Node.js 애플리케이션의 암호화 보안 손상 가능성을 포함합니다.

요약

  • 이 취약점은   Buffer.allocUnsafe 잠재적으로 잔여 메모리 데이터의 유출을 초래할 수 있습니다.
  • 비트코인 암호화를 사용하는 애플리케이션에서는 개인 키가 노출될 수 있으므로 이 점이 매우 중요합니다.
  • 이 공격은 원격 메모리 노출   또는   초기화되지 않은 메모리 노출 이라고 합니다    .
  • 이 취약점에 대해서는 CVE-2018-7166, CVE-2018-12115와 같은 확인된 CVE가 있습니다.

공격을 방지하려면 다음이 필요합니다.

  • 명시적으로 메모리를 삭제하지 않고는 사용하지 마십시오   Buffer.allocUnsafe() .
  • 안전한 것을 선호합니다   Buffer.alloc().
  • 메모리를 사용하기 전에 완전히 다시 기록되었는지 확인하십시오.
  • 정기적인 보안 감사를 수행하고 종속성을 수정된 버전으로 업데이트하십시오.

암호화 취약점

제시된   코드는   비밀 키 또는 개인 키 유출과 관련된 명시적인 암호화 취약점을 포함하는 코드를 가지고 있지 않습니다. 이 코드는 개인 키를 건드리지 않고 비트코인 ​​스크립트를 처리합니다(컴파일, 역컴파일, 서명 및 공개 키 확인).

하지만 잠재적인 위험 지점은 65번째 줄입니다.

자바스크립트:

const buffer = Buffer.allocUnsafe(bufferSize);

이것이 취약점이 될 수 있는 이유:

  • Buffer.allocUnsafe 메모리를 초기화하지 않고 할당하므로 버퍼에 이전 메모리 데이터가 남아 있을 수 있습니다(메모리가 초기화되지 않은 경우 비밀 데이터일 가능성도 있음).
  • 이 버퍼를 사용하여 민감한 정보를 삭제하지 않고 저장하거나 전송할 경우 정보 유출 위험이 발생할 수 있습니다.
69bitcoinjs-lib/blob/feat/logo-add/src/script.js
https://github.com/keyhunters/bitcoinjs-lib/blob/feat/logo-add/src/script.js

이 경우 버퍼는 안전한 값으로만 ​​채워지는 것처럼 보이지만   chunks, 잘못 사용하거나 불완전한 초기화로 인해 누출될 경우 위험이 여전히 존재합니다.

코드에는 암호화 취약점과 관련된 다른 명백한 오류가 없습니다.

결과:

  • 해당 취약점은 사용 부분   Buffer.allocUnsafe(bufferSize) (약 65번째 줄)에서 발생할 가능성이 있습니다.
  • Buffer.alloc(bufferSize) 위험을 제거하려면 버퍼를 완전히 초기화하거나 교체하는 것이 좋습니다   .

보정

Node.js에서 Buffer.allocUnsafe를 사용할 때 암호화 취약점이 발견되었습니다.

소개

민감한 데이터를 처리하는 암호화 및 시스템 애플리케이션에서는 메모리를 안전하게 관리하는 것이 중요합니다. Node.js 환경에서는 `BufferedBuffer` 클래스를 사용하여 버퍼를 생성하며   , 이 클래스는 `request()`  및 `   request() Buffer`를 포함한 다양한 메모리 할당 메서드를 제공합니다   . 이러한 메서드들은 목적은 비슷하지만 보안 수준은 크게 다릅니다. `request()` 메서드를 잘못 사용하면   개인 키 및 기타 중요한 암호화 정보를 포함한 민감한 데이터가 유출될 수 있는 취약점이 발생합니다.Buffer.alloc()Buffer.allocUnsafe()Buffer.allocUnsafe()

취약성은 어떻게 발생하는가

이 메서드는   Buffer.allocUnsafe(size) 크기가 인 메모리 영역을 할당   size하지만   초기화하지 않습니다.   즉, 버퍼 내용은   정의되지 않은 상태로 남아   있으며 이전에 해당 메모리에 저장된 데이터가 남아 있을 수 있습니다. 특히, 개인 키 또는 기타 민감한 정보가 이전에 해당 메모리에 저장된 경우, 실행된 메서드는   allocUnsafe 이러한 데이터가 포함된 버퍼를 반환합니다.

버퍼가 생성된 후 데이터가 완전히 덮어쓰여지지 않는 코드, 예를 들어 버퍼가 완전히 채워지지 않거나 버퍼를 비우지 않고 직접 사용되는 경우, 공격자가 취약점을 통해 민감한 데이터를 읽을 수 있게 될 수 있습니다.

암호학의 맥락에서 이는 매우 위험한데, 개인 키 유출은 보안 침해와 자금 또는 데이터 손실로 직결되기 때문입니다.

제시된 코드에서 취약한 부분의 예는 다음과 같습니다.

js:

const buffer = Buffer.allocUnsafe(bufferSize);

여기서는 버퍼의 내용을 지우지 않고 할당하는데, 이후에 버퍼가 채워지더라도 오류가 발생하거나 메서드가 버퍼 크기보다 적은 바이트를 기록하면 잔여 데이터가 남아 있을 수 있습니다.

결과

  • 기밀 정보 유출 사건 발생.
  • 핵심 암호화 키가 유출되었습니다.
  • 시스템 전체의 신뢰와 보안 상실.
  • 침입자가 메모리에서 비밀 데이터를 획득함으로써 시스템에 대한 공격을 단순화합니다.

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

가장 좋은 방법은    대신  를 사용하는 것  Buffer.alloc(size)Buffer.allocUnsafe(size) 입니다  . 이 방법은   Buffer.alloc(size) 버퍼를 할당하고   0으로 채워  이전 데이터가 유출되지 않도록 합니다.

수정된 코드 부분:

js:

// Безопасное выделение буфера с очисткой памяти
const buffer = Buffer.alloc(bufferSize);

이 간단하지만 중요한 단계는 메모리에 “쓰레기”가 존재할 가능성을 제거하고 메모리 작업 관점에서 스크립트 처리 프로세스를 완전히 안전하게 만듭니다.

추가 권장 사항

  • 성능이 중요한 경우   allocUnsafe,   사용하기 전에 버퍼를 수동으로 0으로 채우buffer.fill(0) 십시오  .  
  • 할당된 버퍼를 사용하기 전에 항상 전체 버퍼가 유효한 데이터로 초기화되었는지 주의 깊게 확인하십시오.
  • 암호화 작업이나 개인 키를 다룰 때, 0이 될 수 없는 객체가 있는지 코드를 검토하십시오.
  • 정적 및 동적 코드 분석을 사용하여 메모리 관리 취약점을 탐지하십시오.
  • 선언되지 않은 데이터가 없는지 확인하는 추가적인 단위 테스트와 통합 테스트를 작성하세요.

요약

Buffer.allocUnsafe() 암호학적으로 중요한 버퍼가 할당되는 위치에서 추가적인 메모리 초기화 없이   해당 함수를 사용하는 것은   기밀 데이터 유출로 이어질 수 있는 취약점입니다. 올바르고 안전한 해결책은 해당 함수 호출을 다른 함수로 대체하는 것입니다 Buffer.alloc(). 이 함수는 메모리 초기화를 보장하고 잘못 초기화된 메모리를 통한 공격을 방지합니다.


소스 코드 맥락에서 안전한 수정 방법의 예시

취약한 원본 코드(65번째 줄 부근):

js:

const buffer = Buffer.allocUnsafe(bufferSize);

안전하게 고정된 코드:

js:


const buffer = Buffer.alloc(bufferSize);
// или если нужен allocUnsafe по причинам производительности:
const buffer = Buffer.allocUnsafe(bufferSize);
buffer.fill(0); // очистка памяти нулями

이는 어떠한 상황에서도 버퍼 내용에 이전 데이터의 잔여물이 남지 않도록 보장하여 데이터 유출을 방지합니다.


따라서 Node.js 애플리케이션에서 이러한 간단한 원칙을 따르면 암호화 작업에 대한 높은 수준의 보안을 확보할 수 있습니다.


결론적으로, Node.js 환경에서 해당 메서드를 사용할 때 발견된 심각한 취약점은   Buffer.allocUnsafe() 비트코인 ​​암호화폐의 보안에 중대한 위협이 됩니다. 이 취약점은 메모리를 초기화하지 않고 할당할 수 있도록 허용하여, 비트코인 ​​암호화 시스템에서 가장 중요하고 기밀성이 높은 요소인 개인 키를 포함한 RAM에 남아 있는 데이터가 유출될 가능성을 높입니다.

원격 메모리 공개(Remote Memory Disclosure, RMD)로 알려진 이 취약점은 완전한 개인정보 침해와 디지털 자산 도난으로 이어질 수 있습니다. 공격자가 개인 키를 손에 넣으면 무단 거래가 가능해져 생태계에 대한 신뢰가 무너지고 직접적인 금전적 손실이 발생합니다.

보안 위협이 증가하는 상황에서 안전한 메모리 관리 방법을 사용하고,   Buffer.allocUnsafe() 메모리를 삭제하기 전에 반드시 후속 정리를 수행하며,   Buffer.alloc()메모리를 0으로 초기화하는 방법을 사용하는 것이 매우 중요합니다. 포괄적인 메모리 관리, 소스 코드 감사, 그리고 소프트웨어 구성 요소 업데이트를 통해서만 구현 취약점에 기반한 공격으로부터 암호화폐 프로젝트를 보호할 수 있습니다.

따라서 원격 메모리 유출 및 관련 공격을 방지하는 것은 개인 키의 무결성과 암호화폐 인프라 전체의 보안 복원력을 유지하는 데 핵심적입니다. 비용이 많이 드는 결과를 방지하고 사용자 신뢰를 유지하기 위해서는 비트코인을 포함한 모든 암호화 솔루션의 개발 및 운영에서 메모리 보안에 대한 고려가 최우선 과제가 되어야 합니다.


  1. https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
  2. https://habr.com/ru/articles/817237/
  3. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-deserializesignature-%D0%B2-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B5-bitcoin-%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%B8/
  4. https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
  5. https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm
  6. https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
  7. https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351
  8. https://dzen.ru/a/ZlTZwF_CZgG8EPSs
  9. https://www.youtube.com/watch?v=8E2KJeWu4XA
  10. https://habr.com/ru/articles/817237/comments/

이 글이 게시되는 시점에는 공식적인 CVE 번호가 없거나, 등록 및 처리 과정에 있습니다.  cryptodeep+2

  1. https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
  2. https://habr.com/ru/articles/817237/
  3. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-deserializesignature-%D0%B2-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B5-bitcoin-%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%B8/
  4. https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
  5. https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
  6. https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm
  7. https://cryptodeep.ru/signature-malleability/
  8. https://pcnews.ru/blogs/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html
  9. https://dzen.ru/a/ZlTZwF_CZgG8EPSs
  10. https://infosecportal.ru/agregator-runeta/agregator-statej/uyazvimost-deserializesignature-v-seti-bitkoin-kriptoanaliz-i-nedejstvitelnye-podpisi-ecdsa/

필요하다면 각 부분을 더 자세히 설명하거나 특정 bitcoinj 클래스를 고려한 완전한 보안 코드 예제를 제공할 수 있습니다.

  1. https://habr.com/ru/articles/817237/
  2. https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
  3. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-deserializesignature-%D0%B2-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B5-bitcoin-%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%B8/
  4. https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
  5. https://xylocode.ru/businessdata/vulnerabilities/
  6. https://habr.com/ru/articles/817237/comments/
  7. https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
  8. https://pcnews.ru/top/blogs/day/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html
  9. https://pcnews.ru/blogs/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html
  10. https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm
  1. https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md
  2. https://habr.com/ru/articles/817237/
  3. https://security.snyk.io/vuln/SNYK-UNMANAGED-ZEROMQZEROMQ-2333585
  4. https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
  5. https://www.reddit.com/r/Bitcoin/comments/14ea15w/unable_to_listen_incoming_transaction_on_using/
  6. https://cryptodeep.ru/signature-malleability/
  7. https://app.opencve.io/cve/?vendor=bitcoin
  8. https://cryptodeeptool.ru/jacobian-curve-algorithm-vulnerability/
  9. https://app.opencve.io/cve/?vendor=zeromq
  10. https://github.com/bitcoinj/bitcoinj/blob/master/core/src/main/java/org/bitcoinj/core/BitcoinSerializer.java

 암호해독

이 결론은 해당 취약점의 위험성이 얼마나 심각한지, 그리고 암호화폐이자 기술인 비트토신(Bitocin ) 의 보안을 위해 이를 예방하는 것이 얼마나 중요한지를 보여줍니다. 

  1. https://en.wikipedia.org/wiki/Double-spending
  2. https://www.investopedia.com/terms/d/doublespending.asp
  1. https://bitcoincore.org/en/2018/09/20/notice/
  2. https://b8c.ru/satoshiscan/
  3. https://bitcoinops.org/en/topics/cve-2018-17144/
  4. https://hackernoon.com/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
  5. https://hackaday.com/2018/10/02/bitcoins-double-spending-flaw-was-hush-hush-during-rollout/
  6. https://b8c.ru/privbytexploit/
  7. https://b8c.ru/page/3/
  8. https://b8c.ru/vulnrunexploit/
  9. http://cbr.ru/banking_sector/credit/coinfo/AnnaulReport2017/?when=201801®num=3480&view=0409808
  10. https://chk.safe-surf.ru
  11. https://www.binance.com/ru/price/satoshis-vision
  12. https://raexpert.ru/releases/2019/dec19f
  13. https://bankmen.ru/100-satoshi-v-rublyax.html
  14. https://nvd.nist.gov/vuln/detail/cve-2018-8540
  15. https://ru.beincrypto.com/convert/satoshis-vision-to-rub/
  16. https://yandex.ru/maps/org/b2b/114780229417/?ll=37.614903%2C55.703814&z=13
  17. https://www.reddit.com/r/Bitcoin/comments/9hkw63/cve201817144_full_disclosure_dos_bug_could_have/
  18. https://lenta.ru/news/2025/10/01/nedvizhimost-rossiyskogo-pisatelya-arestovali/
  19. https://b8c.ru/btcdetect/
  20. https://progorod58.ru

By