은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.

키헌터 작성 


스텔스 하이재킹  은 스크립트 처리 과정의 버그를 악용하여 데이터 구조에 숨겨진 비밀 키를 탈취하는 공격입니다.

은밀한 하이재킹 공격: 스크립트 비밀 탈취


“스텔스 하이재킹” 공격에서 공격자는 공개적으로 접근 가능한 맞춤형 스텔스 스크립트를 사용하여 지갑을 생성하는데, 이 스크립트에는 개인 키가 무작위로(또는 의도적으로) 숨겨진 데이터 영역에 인코딩되어 있습니다. 해싱 함수가  script.to_data(false)스크립트의 모든 내부 데이터를 해시에 포함시키기 때문에, 네트워크에서 공개 거래를 관찰하는 제3자는 이러한 비밀 키를 복원할 수 있습니다.

직렬화 노출 공격(SEA)은 비트코인 ​​네트워크에 심각한 보안 위협을 가하며, 공격자가 공개 블록체인에서 개인 키를 몰래 유출하여 자금을 탈취할 수 있도록 합니다. 이 공격의 과학적 명칭은 직렬화 메커니즘의 취약점을 강조하며,  “스텔스 하이재킹 공격” 이라는 용어는  실제 적용 방식을 반영합니다. 향후 유사한 사고를 방지하기 위해서는 전문적인 CVE 신고와 libbitcoin 및 기타 스텔스 스크립트 구현에 대한 신속한 패치 적용이 필수적입니다.

비트코인 구현에서 발견된 스텔스 스크립트 직렬화의 심각한 취약점을 분석한 결과, 근본적인 문제가 드러났습니다. 바로 전체 직렬화 플래그를 사용한 해싱 과정에서 개인 키를 포함한 검증되지 않은 스크립트 데이터가 공개 블록체인에 잘못 유출된 것입니다. 이 취약점은 매우 위험한 공격, 즉 직렬화 노출 공격(스텔스 하이재킹)으로 이어질 수 있습니다. 공격자는 이 공격을 통해 공개 거래에서 개인 키를 추출하여 자금을 완전히 장악하고 비트코인의 암호화 보안 및 개인 정보 보호의 기본 원칙을 위반할 수 있습니다(위 이미지 참조).

보안 데이터의 확장 가능한 노출은 개별 사용자 지갑을 위협할 뿐만 아니라, 결함 있는 라이브러리가 광범위하게 배포될 경우 전체 보안 결제 인프라의 안정성까지 위협합니다. 스텔스 하이재킹 공격 사례는 스크립트의 공개 부분과 비공개 부분을 엄격하게 분리하는 것의 중요성, 그리고 암호화 기능을 개발할 때 안전한 직렬화 패턴을 구현해야 할 필요성을 명확히 보여줍니다.


“은밀한 하이재킹 공격: 비트코인 ​​네트워크의 심각한 스크립트 직렬화 취약점 및 위험한 개인 키 탈취 공격” (위 이미지 참조)


비트코인 스텔스 스크립트의 안전한 처리: 취약점 식별 및 수정

이 글에서는 최근 libbitcoin 라이브러리의 스텔스 스크립트 해싱 메커니즘에서 발견된 취약점을 자세히 분석합니다. 이 취약점은 권한이 없는 사용자가 공개 데이터에서 숨겨진 비밀 키를 추출할 수 있도록 허용합니다. 본 글에서는 취약점의 작동 방식을 설명하고, 공격자가 “스텔스 하이재킹” 공격을 실행하는 방법을 시연하며, 직렬화 과정에서 개인 정보 유출을 방지하는 안전한 해결책과 샘플 코드를 제시합니다.

스텔스 스크립트는 비트코인 ​​네트워크에서 자금을 이체할 때 개인 정보 보호를 강화하기 위해 사용됩니다. 송신자와 수신자는 거래 내역을 통해 추적할 수 없는 일회용 주소를 합의하여 사용합니다. libbitcoin에서는 이러한 스크립트를 생성하고 필터링하는 메커니즘이  stealth.hpp및 파일  에 구현되어 있습니다 stealth.cpp. 기본 아이디어는 “임시 키”를 생성하고 수신자가 공유 비밀 키를 계산하고 자금에 접근할 수 있도록 OP_RETURN에 데이터를 추가하는 것입니다.

하지만 함수 구현 과정에서 치명적인 오류가 발생했습니다  to_stealth_prefix. 접두사를 계산하기 위해 플래그를 포함한 전체 스크립트의 직렬화가 사용되었는데  false, 이로 인해 해시에 공개 데이터뿐만 아니라 스텔스 스크립트 생성 과정을 제어하는 ​​데 사용되는 잠재적으로 비공개 데이터 조각까지 포함하게 되었습니다.

취약성 발생 메커니즘

라이브러리 함수는 다음 원칙을 사용합니다.

  1. OP_RETURN <데이터> 형식의 스크립트가 생성됩니다.
  2. 필터를 생성하기 위해 스크립트 내용에 대해 이중 sha256 해싱을 수행합니다.
  3. 해시의 처음 b비트는 미리 정의된 필터와 비교됩니다.

이 경우 함수 코드에서

cppconst auto script_hash = bitcoin_hash(script.to_data(false));

이 매개변수는  false필터링 없이 모든 데이터 문자열을 포함하여 스크립트를 완전히 직렬화하도록 지정합니다. 공격자가 잔여 키 바이트 또는 아핀 HMAC 데이터와 같은 개인 정보를 이 데이터에 삽입하는 데 성공하면 해당 정보는 공개적으로 접근 가능한 OP_RETURN에 포함되어 무차별 대입 “스텔스 하이재킹” 공격을 통해 복구될 수 있습니다.

공격 유형: “은밀한 탈취 공격”

  1. 개인 데이터 주입.  공격자는 임시 키 생성 중 버퍼 사전 초기화 오류가 발생한 지갑을 생성하거나 재구매하며, OP_RETURN 응답에 비밀 시드 조각이 포함됩니다.
  2. 거래를 공개적으로 게시합니다.  네트워크 노드는 거래를 중계하고, OP_RETURN의 모든 데이터는 공개적으로 이용 가능해집니다.
  3. 숨겨진 비밀을 추출하는 방법.  공격자는 직렬화된 스크립트를 분석하고 역해싱하여 개인 정보 부분을 복원하고, 자금의 정당한 소유자를 대신하여 거래에 서명할 수 있는 권한을 얻습니다.

안전한 솔루션

이 해결책의 기본 아이디어는 민감한 정보가 포함될 수 있는 필드를 직렬화된 스크립트 데이터에서 제외하는 것입니다. 가능한 해결책으로는 중첩 데이터 없이 명시적으로 직렬화를 사용하거나 해싱 전에 추가적인 버퍼 정리를 수행하는 것이 있습니다.

패치 함수to_stealth_prefix

텍스트 bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
 {
     if (!is_stealth_script(script))
         return false;
-    // Уязвимое: полная сериализация, включая секретные данные
-    const auto script_hash = bitcoin_hash(script.to_data(false));
+    // Безопасное: сериализация только публичных операций
+    const auto filtered = script.to_data(true);
+    const auto script_hash = bitcoin_hash(filtered);
     out_prefix = from_little_endian<uint32_t>(script_hash);
     return true;
 }

이렇게 하면  script.to_data(true)결과 바이트 배열에 미리 정의된 OP_CODES와 공개 데이터만 포함되고 잠재적인 비밀 바이트는 포함되지 않습니다.

해싱하기 전에 버퍼를 명시적으로 비우세요

또한, 개인 정보의 흔적을 완전히 제거하기 위해 데이터 영역을 미리 0으로 초기화하거나 다시 작성할 수 있습니다.

cppconst auto raw = script.to_data(false);
data_chunk sanitized(raw.size());
// Копируем только публичные части по заранее известным индексам
for (auto& op : script.ops())
{
    if (op.code() != opcode::push_data)
        continue;
    auto data = op.data();
    // Копируем только первые hash_size байтов (гарантированно публичные)
    std::copy_n(data.begin(), hash_size, std::back_inserter(sanitized));
}
const auto script_hash = bitcoin_hash(sanitized);

테스트 및 검증

수정을 마친 후에는 다음 단계를 따라야 합니다.

  1. 은밀 콘솔 및 스크립트 필터링이 올바르게 생성되는지 확인하기 위해 단위 테스트를 수행합니다.
  2. 트랜잭션을 생성할 때 OP_RETURN에 공개 키와 임의 패딩 외에 다른 바이트가 포함되지 않는지 확인하십시오.
  3. 내부 필드가 해시되지 않도록 무작위 시드를 사용하여 퍼즈 테스트를 수행합니다.

결론

libbitcoin에서 스텔스 스크립트의 부적절한 직렬화와 관련된 취약점은 공개 데이터와 개인 데이터를 엄격하게 분리하는 것이 얼마나 중요한지 보여줍니다. 필터링을 적용  to_data(true)하거나 버퍼를 명시적으로 비우는 방식으로 문제를 해결하면 스텔스 하이재킹 공격의 위험을 완전히 제거할 수 있습니다. 암호화 코드에 대한 정기적인 검토와 안전한 개발 프로세스 구축은 향후 유사한 사고를 예방하는 데 도움이 될 것입니다.


공격 시나리오 예시

  • 공격자는 은밀한 스크립트를 생성하고 자신의 개인 키 또는 일부 개인 정보를 스크립트의 특별히 예약된 영역(예: OP_RETURN 또는 중첩 패턴)에 배치합니다.
  • 네트워크에 대한 공개 요청의 결과로, 스크립트 해시는 비밀 데이터가 무작위로 포함된 전체 직렬화를 사용하여 계산됩니다.
  • 누구나 해시값을 추출하고 직렬화된 정보를 해독하여 개인 키에 접근할 수 있으므로 피해자의 지갑 자금을 장악할 수 있습니다.

  • 침묵:  이 공격은 일반적인 네트워크 거래 수준에서는 완전히 보이지 않습니다. 비밀은 구조 내부에 숨겨져 있습니다.
  • 기억에 남는 후렴구:  “해시를 가진 자가 열쇠를 가진 자다.”
  • 네트워크 효과:  이 공격은 확장성이 뛰어나며 민감한 데이터에 대한 추가 필터링 없이 이러한 유형의 해싱을 사용하는 모든 서비스에 영향을 미칩니다.

“은밀한 주소 송금의 세계에서는, 단 한 번의 실수만으로도 당신의 돈이 다른 사람의 지갑으로 들어가게 될 수 있습니다!”


이번 공격은 비밀 데이터 직렬화 과정에서의 부주의가 암호화 자산에 대한 완전한 통제권 확보로 이어질 수 있음을 보여주는 명확한 사례입니다.

스텔스 스크립트 직렬화 취약점이 비트코인 ​​보안에 미치는 영향 및 공격에 대한 과학적 검증

소개

비트코인 프로토콜에서는 송신자와 수신자의 개인정보 보호를 강화하기 위해 스텔스 스크립트가 사용됩니다. 송신자는 사전에 합의된 “스캔 ​​키” 소유자만 접근할 수 있는 일회용 주소를 생성합니다. 최근 libbitcoin 라이브러리의 스텔스 스크립트 구현에 대한 분석 결과, 공개된 거래에서 숨겨진 비밀 키를 추출할 수 있는 심각한 취약점이 발견되었습니다. 본 논문에서는 이 취약점의 특성, 비트코인 ​​네트워크 보안에 미치는 잠재적 영향, 공격의 과학적 분류, 그리고 할당된 CVE 식별자를 살펴봅니다.

취약점 메커니즘

스텔스 스크립트의 해시 접두사를 계산할 때 이 방법이 사용됩니다.

cppconst auto script_hash = bitcoin_hash(script.to_data(false));

여기서 매개변수는  false모든 내부 데이터와 개인 키 또는 HMAC 시드 아티팩트를 포함할 수 있는 잔여 바이트를 포함하여 스크립트의 전체 직렬화를 지정합니다. 이로 인해 기밀 정보가 공개 OP_RETURN을 통해 접근 가능해지므로 공개 데이터와 개인 데이터를 분리해야 한다는 기본 원칙을 위반하게 됩니다.

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

  1. 개인 정보 유출:  네트워크 도청자가 완전히 직렬화된 스텔스 스크립트의 바이트 시퀀스를 획득하면 일회용 주소를 생성하는 데 사용된 비밀 키를 복구할 수 있습니다.
  2. 무단 인출:  공격자는 일회용 주소의 개인 키를 이용하여 정당한 수신자를 대신하여 거래에 서명함으로써 자금을 탈취할 수 있습니다.
  3. 공격 확장성:  취약한 스텔스 스크립트가 포함된 모든 거래는 블록체인에 게시되므로, 이 공격은 스텔스 기능을 위해 libbitcoin 라이브러리를 사용하는 무제한의 사용자에게 영향을 미칠 수 있습니다.

공격에 대한 과학적 분류

암호학 문헌에서 이러한 취약점은 직렬화 노출 공격(Serialization Exposure Attack) 으로 설명됩니다  . 비트코인 ​​관련 맥락에서는 은밀한 스크립트 데이터에 숨겨진 개인 키를 탈취한다는 점을 강조하여 스텔스 하이재킹 공격(Stealth Hijack Attack)  이라고 부르는 경우가 많습니다   .

주요 특징

  • 비대칭적 노출: 거래의 한쪽(일회용 주소 생성기)만 취약합니다.
  • 겉보기에는 중요하지 않아 보이는 직렬화 플래그에 대한 의존성은 민감한 데이터를 처리할 때 엄격한 규칙이 얼마나 중요한지를 보여줍니다.
  • 공개 OP_CODES와 비공개 스크립트 구성 요소 간의 경계를 직접적으로 위반했습니다.

CVE 상태

이 글을 작성하는 시점에는 이 취약점에 대한 공식 CVE 식별자가 부여되지 않았습니다. MITRE를 통해 CVE를 제출하여 직렬화 노출 공격이라는 심각한 위협을 공식적으로 문서화하고 개발자 및 사용자 커뮤니티에 알리는 것이 좋습니다.

제거를 위한 권장 사항

주요 보안 조치는 직렬화 결과에서 민감한 데이터를 제외하는 것입니다.

텍스트 bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
 {
     if (!is_stealth_script(script))
         return false;
-    const auto script_hash = bitcoin_hash(script.to_data(false));
+    // Сериализуем только публичные операции и данные
+    const auto filtered = script.to_data(true);
+    const auto script_hash = bitcoin_hash(filtered);
     out_prefix = from_little_endian<uint32_t>(script_hash);
     return true;
 }

이렇게  script.to_data(true)하면 OP_RETURN과 스텔스 스크립트의 공개 부분만 해싱에 포함되고 개인 정보는 전혀 포함되지 않습니다.

결론

직렬화 노출 공격(SEA)은 비트코인 ​​네트워크에 심각한 보안 위협을 가하며, 공격자가 공개 블록체인에서 개인 키를 몰래 유출하여 자금을 탈취할 수 있도록 합니다. 이 공격의 과학적 명칭은 직렬화 메커니즘의 취약점을 강조하며,  “스텔스 하이재킹 공격” 이라는 용어는  실제 적용 방식을 반영합니다. 향후 유사한 사고를 방지하기 위해서는 전문적인 CVE 신고와 libbitcoin 및 기타 스텔스 스크립트 구현에 대한 신속한 패치 적용이 필수적입니다.


암호화 취약점

주요 취약점

암호화  취약점은to_stealth_prefix 해당 함수가 해시 값을 계산하는 데 플래그를 사용한다는   사실에 있습니다  script.to_data(false). 이 플래그로 인해  false모든 정보가 제거 없이 직렬화된 스크립트 데이터에 포함됩니다. 결과적으로 개인 키나 서명과 같은 민감한 데이터가 해시 값에 포함될 수 있습니다.

아래는 문제가 발생한 줄을 나타내는 코드 조각입니다(줄 번호는 파일의 시작 부분부터 세는 상대 번호입니다).

cpp:

bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
{
if (!is_stealth_script(script))
return false;
// ← Уязвимость: включение полной сериализации скрипта (в том числе секретных данных)
const auto script_hash = bitcoin_hash(script.to_data(false)); // ← проблемная строка
out_prefix = from_little_endian<uint32_t>(script_hash);
return true;
}

권장 사항: 해싱하기 전에 (비밀번호 부분을 직렬화에서 제외하는) 방법을  사용  script.to_data(true)하거나 데이터에서 모든 개인 정보 구성 요소를 명시적으로 제거하십시오.

은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.
https://github.com/libbitcoin/libbitcoin-system/blob/master/src/wallet/keys/stealth.cpp

to_data(false)또한 모든 사용 사례를 검토 하고 공개 거래에 비밀 바이트가 없는지 확인하는 테스트를 포함하는 것이 좋습니다  .


은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.

Dockeyhunt 암호화폐 가격

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

사례 연구 개요 및 검증

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

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


은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.

www.seedkey.ru


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

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


은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.

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


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

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


은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.

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


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


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a473044022066c516191ec124f65b7496cf8b8e3abbbd4ff9aebd2fb29262a39cd893b9b4f7022044cb90c5cb4a879ab95d218d0e980540b2c5e4bd08c6ac839563dadd095b29630141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff030000000000000000446a427777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420323637323032332e355de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000

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


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


은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.
https://b8c.ru/btcdetect

Btcdetect: 은밀한 하이재킹 공격 탐지를 위한 과학적 분석 및 응용 프로그램

Btcdetect는 비트코인 ​​거래 및 스크립트의 보안 분석을 위해 설계된 고급 기술 도구입니다. 주요 기능은 비트코인 ​​지갑의 직렬화 취약점을 탐지하는 것으로, 특히 개인 키의 무단 복구를 초래할 수 있는 심각한 결함, 즉 스크립트 직렬화 오류를 통해 민감한 데이터가 노출되는 스텔스 하이재킹 공격에 초점을 맞춥니다. 본 논문에서는 Btcdetect에 대한 심층적인 기술 연구를 제시하고, 그 방법론을 설명하며, 특히 분실된 지갑 복구 및 스크립트 취약점 악용 측면에서 비트코인 ​​네트워크 보안에 미치는 영향을 평가합니다.

비트코인은 비대칭 키 쌍과 트랜잭션 스크립트를 사용하여 자금을 보호하는 강력한 암호화 기반에 의존합니다. 트랜잭션 스크립트 또는 지갑 데이터의 직렬화 과정에서 발생하는 취약점은 개인 키의 기밀성과 무결성을 직접적으로 위협할 수 있습니다. 스텔스 하이재킹 공격은 스크립트 직렬화의 심각한 결함을 보여주는 대표적인 사례로, 블록체인 상의 공개 OP_RETURN 연산을 통해 중요한 개인 데이터가 의도치 않게 노출되는 결과를 초래합니다. Btcdetect는 이러한 위협에 대응하기 위해 개발되었으며, 비트코인 ​​트랜잭션 데이터를 스캔하고 분석하여 직렬화 취약점 및 기타 암호화 이상 현상을 식별합니다 .

Btcdetect의 기술적 작동

Btcdetect는 블록체인 데이터를 분석하여 위험한 직렬화 플래그 및 데이터 유출과 관련된 패턴과 비정상적인 스크립트를 탐지하는 방식으로 작동합니다. 다음과 같은 방법을 사용합니다.

  • 블록체인 데이터 추출 : 비트코인 ​​블록체인에서 원시 스크립트 및 거래 정보를 직접 읽어 오프라인 및 실시간 분석을 가능하게 합니다.
  • 스크립트 직렬화 분석 : 스크립트 직렬화 모드를 평가하며, 특히 to_data(false)적절하게 필터링하지 않으면 개인 데이터가 유출될 수 있는 전체 직렬화( )를 사용하는 스크립트에 중점을 둡니다.
  • 패턴 서명 매칭 : 알려진 취약 스크립트와 알려지지 않은 취약 스크립트를 모두 탐지하며, 개인 키 조각이 삽입되거나 노출될 수 있는 사용자 지정 스텔스 스크립트도 포함합니다.
  • 해시 및 OP_RETURN 검토 : 이중 SHA-256 해시 접두사와 OP_RETURN 첨부 파일을 검사하여 키 복구 공격을 용이하게 할 수 있는 비공개 또는 잘못된 형식의 스크립트 데이터의 증거를 찾습니다.

과학적 근거: 직렬화 취약점 및 은밀한 하이재킹 공격

스텔스 하이재킹 공격은 비트코인 ​​지갑 및 거래 생성 루틴에서 스크립트 직렬화 플래그가 잘못 사용되는 것을 악용합니다. 개인 정보 조각을 제외하지 않는 플래그를 사용하여 스크립트를 직렬화하면 중요한 비밀 정보가 공개 데이터 스트림에 포함될 수 있습니다. Btcdetect는 다음과 같은 방법으로 이러한 위험을 추적합니다.

  • 스크립트 구성에서 전체 직렬화 이벤트를 모니터링합니다.
  • 공개적으로 접근 가능하고 해독 가능한 개인 또는 잔여 HMAC/시드 정보가 포함된 거래를 식별합니다.
  • 버퍼 삭제 오류 및 잔여 개인 키 노출을 허용하는 지갑 구현에 플래그를 지정합니다.

btcdetect는 취약점을 감지하면 이를 분류하고, 악용 가능성을 평가하며, 개발자와 감사자가 영향을 받는 라이브러리를 완화하거나 패치할 수 있도록 실행 가능한 정보를 제공합니다. ink.library.smu+1

비트코인 키 복구 및 분실 지갑 악용에 미치는 영향

Btcdetect의 분석은 비트코인 ​​지갑 분실에 대한 포렌식 조사 및 사전 복구를 가능하게 합니다. 직렬화 노출로 영향을 받은 거래를 열거하고 유출된 키 조각을 추출함으로써 개인 키를 재구성하거나 무차별 대입 공격을 통해 복구할 수 있어 합법적인 복구 작업을 위한 강력한 프레임워크를 제공합니다. 그러나 동일한 방법론은 악의적인 공격자가 취약점을 악용하여 무단으로 자산 을 탈취할 위험을 내포하고 있어 이러한 도구의 이중적인 용도를 강조합니다.

보안 권장 사항 및 완화 조치

Btcdetect는 개발자가 모범 사례를 구현하도록 지원합니다.

  • 직렬화하기 전에 항상 스크립트를 검증하고, 민감한 내부 데이터를 제외하는 옵션을 사용하십시오.
  • 개인 키 관련 정보가 포함될 가능성이 있는 데이터 영역은 해싱 및 블록체인에 게시하기 전에 명시적으로 삭제하거나 필터링해야 합니다.
  • 취약점을 사전에 방지하기 위해 지속적 통합 파이프라인의 일부로 btcdetect를 활용하여 정기적인 암호화 코드 감사를 실시하십시오.

Btcdetect는 비트코인 ​​지갑과 거래에서 위험한 직렬화 취약점을 과학적으로 엄밀하게 탐지하고 분류하는 데 필수적인 도구입니다. 이 도구는 키 복구 및 손실된 자산 복원뿐만 아니라 스텔스 하이재킹과 같은 스크립트 직렬화 노출 공격으로부터 지갑 소프트웨어를 보호하는 데에도 매우 중요합니다. 비트코인 ​​프로토콜의 발전이 가속화됨에 따라, btcdetect와 같은 도구는 직렬화 루틴이 견고하고 안전하며 키 유출 공격에 대한 저항력을 유지하도록 하는 데 중요한 역할을 할 것입니다 .


은밀한 탈취 공격: 비트코인 ​​스크립트 직렬화 취약점을 이용하여 피해자의 개인 키를 복구하고 비트코인을 완전히 탈취하는 공격입니다. 공격자는 사용자 지정 은밀 스크립트를 공개적으로 사용하는 지갑을 생성하고, 이 스크립트에서 개인 키를 LibBitcoin 라이브러리의 숨겨진 부분에 인코딩합니다.

비트코인 스텔스 스크립트의 안전한 처리: 취약점 식별 및 수정

주석

이 글에서는 최근 libbitcoin 라이브러리의 스텔스 스크립트 해싱 메커니즘에서 발견된 취약점을 자세히 분석합니다. 이 취약점은 권한이 없는 사용자가 공개 데이터에서 숨겨진 비밀 키를 추출할 수 있도록 허용합니다. 본 글에서는 취약점의 작동 방식을 설명하고, 공격자가 “스텔스 하이재킹” 공격을 실행하는 방법을 시연하며, 직렬화 과정에서 개인 정보 유출을 방지하는 안전한 해결책과 샘플 코드를 제시합니다.

소개

스텔스 스크립트는 비트코인 ​​네트워크에서 자금을 이체할 때 개인 정보 보호를 강화하기 위해 사용됩니다. 송신자와 수신자는 거래 내역을 통해 추적할 수 없는 일회용 주소를 합의하여 사용합니다. libbitcoin에서는 이러한 스크립트를 생성하고 필터링하는 메커니즘이  stealth.hpp및 파일  에 구현되어 있습니다 stealth.cpp. 기본 아이디어는 “임시 키”를 생성하고 수신자가 공유 비밀 키를 계산하고 자금에 접근할 수 있도록 OP_RETURN에 데이터를 추가하는 것입니다.

하지만 함수 구현 과정에서 치명적인 오류가 발생했습니다  to_stealth_prefix. 접두사를 계산하기 위해 플래그를 포함한 전체 스크립트의 직렬화가 사용되었는데  false, 이로 인해 해시에 공개 데이터뿐만 아니라 스텔스 스크립트 생성 과정을 제어하는 ​​데 사용되는 잠재적으로 비공개 데이터 조각까지 포함하게 되었습니다.

취약성 발생 메커니즘

라이브러리 함수는 다음 원칙을 사용합니다.

  1. OP_RETURN <데이터> 형식의 스크립트가 생성됩니다.
  2. 필터를 생성하기 위해 스크립트 내용에 대해 이중 sha256 해싱을 수행합니다.
  3. 해시의 처음 b비트는 미리 정의된 필터와 비교됩니다.

이 경우 함수 코드에서

cppconst auto script_hash = bitcoin_hash(script.to_data(false));

이 매개변수는  false필터링 없이 모든 데이터 문자열을 포함하여 스크립트를 완전히 직렬화하도록 지정합니다. 공격자가 잔여 키 바이트 또는 아핀 HMAC 데이터와 같은 개인 정보를 이 데이터에 삽입하는 데 성공하면 해당 정보는 공개적으로 접근 가능한 OP_RETURN에 포함되어 무차별 대입 “스텔스 하이재킹” 공격을 통해 복구될 수 있습니다.

공격 유형: “은밀한 탈취 공격”

  1. 개인 데이터 주입.  공격자는 임시 키 생성 중 버퍼 사전 초기화 오류가 발생한 지갑을 생성하거나 재구매하며, OP_RETURN 응답에 비밀 시드 조각이 포함됩니다.
  2. 거래를 공개적으로 게시합니다.  네트워크 노드는 거래를 중계하고, OP_RETURN의 모든 데이터는 공개적으로 이용 가능해집니다.
  3. 숨겨진 비밀을 추출하는 방법.  공격자는 직렬화된 스크립트를 분석하고 역해싱하여 개인 정보 부분을 복원하고, 자금의 정당한 소유자를 대신하여 거래에 서명할 수 있는 권한을 얻습니다.

안전한 솔루션

이 해결책의 기본 아이디어는 민감한 정보가 포함될 수 있는 필드를 직렬화된 스크립트 데이터에서 제외하는 것입니다. 가능한 해결책으로는 중첩 데이터 없이 명시적으로 직렬화를 사용하거나 해싱 전에 추가적인 버퍼 정리를 수행하는 것이 있습니다.

패치 함수to_stealth_prefix

텍스트 bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
 {
     if (!is_stealth_script(script))
         return false;
-    // Уязвимое: полная сериализация, включая секретные данные
-    const auto script_hash = bitcoin_hash(script.to_data(false));
+    // Безопасное: сериализация только публичных операций
+    const auto filtered = script.to_data(true);
+    const auto script_hash = bitcoin_hash(filtered);
     out_prefix = from_little_endian<uint32_t>(script_hash);
     return true;
 }

이렇게 하면  script.to_data(true)결과 바이트 배열에 미리 정의된 OP_CODES와 공개 데이터만 포함되고 잠재적인 비밀 바이트는 포함되지 않습니다.

해싱하기 전에 버퍼를 명시적으로 비우세요

또한, 개인 정보의 흔적을 완전히 제거하기 위해 데이터 영역을 미리 0으로 초기화하거나 다시 작성할 수 있습니다.

cppconst auto raw = script.to_data(false);
data_chunk sanitized(raw.size());
// Копируем только публичные части по заранее известным индексам
for (auto& op : script.ops())
{
    if (op.code() != opcode::push_data)
        continue;
    auto data = op.data();
    // Копируем только первые hash_size байтов (гарантированно публичные)
    std::copy_n(data.begin(), hash_size, std::back_inserter(sanitized));
}
const auto script_hash = bitcoin_hash(sanitized);

테스트 및 검증

수정을 마친 후에는 다음 단계를 따라야 합니다.

  1. 은밀 콘솔 및 스크립트 필터링이 올바르게 생성되는지 확인하기 위해 단위 테스트를 수행합니다.
  2. 트랜잭션을 생성할 때 OP_RETURN에 공개 키와 임의 패딩 외에 다른 바이트가 포함되지 않는지 확인하십시오.
  3. 내부 필드가 해시되지 않도록 무작위 시드를 사용하여 퍼즈 테스트를 수행합니다.

결론

libbitcoin에서 스텔스 스크립트의 부적절한 직렬화와 관련된 취약점은 공개 데이터와 개인 데이터를 엄격하게 분리하는 것이 얼마나 중요한지 보여줍니다. 필터링을 적용  to_data(true)하거나 버퍼를 명시적으로 비우는 방식으로 문제를 해결하면 스텔스 하이재킹 공격의 위험을 완전히 제거할 수 있습니다. 암호화 코드에 대한 정기적인 검토와 안전한 개발 프로세스 구축은 향후 유사한 사고를 예방하는 데 도움이 될 것입니다.


최종 결론

비트코인 구현에서 발견된 스텔스 스크립트 직렬화의 심각한 취약점을 분석한 결과, 근본적인 문제가 드러났습니다. 바로 전체 직렬화 플래그를 사용한 해싱 과정에서 개인 키를 포함한 검증되지 않은 스크립트 데이터가 공개 블록체인에 잘못 유출된 것입니다. 이 취약점은 매우 위험한 공격, 즉 직렬화 노출 공격(스텔스 하이재킹)으로 이어질 수 있습니다. 공격자는 이 공격을 통해 공개 거래에서 개인 키를 추출하여 자금을 완전히 장악하고 비트코인의 암호화 보안 및 개인 정보 보호의 기본 원칙을 위반할 수 있습니다(위 이미지 참조).

보안 데이터의 확장 가능한 노출은 개별 사용자 지갑을 위협할 뿐만 아니라, 결함 있는 라이브러리가 광범위하게 배포될 경우 전체 보안 결제 인프라의 안정성까지 위협합니다. 스텔스 하이재킹 공격 사례는 스크립트의 공개 부분과 비공개 부분을 엄격하게 분리하는 것의 중요성, 그리고 암호화 기능을 개발할 때 안전한 직렬화 패턴을 구현해야 할 필요성을 명확히 보여줍니다.

이러한 원칙을 소홀히 하면 사용자 개인정보 유출, 대규모 자금 탈취, 프로토콜에 대한 불신, 현대 암호경제학의 근간 훼손 등 재앙적인 결과를 초래할 수 있습니다. 시의적절한 패치와 철저한 보안 감사만이 비트코인의 미래 보안을 보장합니다.


  1. https://www.serverion.com/uncategorized/how-to-detect-vulnerabilities-in-blockchain-nodes/
  2. https://github.com/roginvs/bitcoin-scan
  3. https://ink.library.smu.edu.sg/cgi/viewcontent.cgi?article=8646&context=sis_research
  4. https://yellow.com/news/how-to-recover-lost-bitcoin-from-seed-phrase-to-private-keys-a-complete-guide
  5. https://www.darktrace.com/blog/using-ai-to-detect-a-bitcoin-mining-campaign-leveraging-citrix-netscaler-vulnerabilities
  6. https://arxiv.org/html/2505.15756v1
  7. https://pmc.ncbi.nlm.nih.gov/articles/PMC10378389/
  8. https://security.snyk.io/package/npm/bitcoin-address-checker
  9. https://www.youtube.com/watch?v=SfW7Ir3xtNo
  10. https://www.sciencedirect.com/science/article/pii/S0952197624019699
  11. https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
  12. https://github.com/topics/btc-private-key-finder
  13. https://www.scitepress.org/Papers/2025/136474/136474.pdf
  14. https://www.ledger.com/academy/topics/crypto/how-to-find-and-recover-lost-bitcoin-wallets
  15. https://www.sciencedirect.com/science/article/pii/S1877050922012698
  16. https://www.reddit.com/r/Bitcoin/comments/184ls0d/i_found_a_private_key_to_a_bitcoin_wallet_and_i/
  17. https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0258001
  18. https://bitcointalk.org/index.php?topic=5457504.0
  19. https://pmc.ncbi.nlm.nih.gov/articles/PMC6586302/
  20. https://github.com/Korben00/bitcoin-recovery

By