BitcoinLib PHP 라이브러리의 비밀 키 및 개인 키 유출: 비트코인 ​​클라이언트 RPC 암호 관리의 취약점 분석 및 보안 위험

키헌터 작성 

아래는 비밀 키 유출(예: bitcoind 클라이언트의 RPC 암호)과 관련된 잠재적 취약점, 그 원인, 그리고 코드 예제를 통해 안전하게 해결하는 방법에 대한 연구 논문입니다.


비트코인 클라이언트의 RPC 암호 관리에서 발견되는 암호화 취약점: 분석 및 보안 방안

소개

최신 암호화폐 소프트웨어, 특히 비트코인 ​​데몬(bitcoind)을 사용하는 클라이언트에서 RPC 암호 및 개인 키와 같은 민감한 데이터의 저장 및 처리 보안은 매우 중요합니다. 이러한 비밀 정보를 부적절하게 처리하면 노드 손상 및 자금 손실로 이어질 수 있습니다. 본 논문에서는 RPC 암호가 URL 연결 문자열에 직접 포함되어 발생하는 일반적인 취약점을 분석하고, 이로 인해 암호가 유출되고 손상될 수 있는 가능성을 살펴봅니다. 발생 원인과 공격 패턴을 분석하고, 파이썬 클라이언트 코드 예제를 통해 안전한 해결 방법을 제시합니다.

취약성 발생 메커니즘

이 취약점은 RPC 암호와 같은 민감한 데이터가 추가적인 보호 또는 제어 없이 연결 문자열 URL에 직접 삽입될 때 발생합니다. 제공된 BitcoinLib 코드에서 이러한 현상은 다음 위치에서 발생합니다.

파이썬url = "http://%s:%s@%s:%s" % (config.get('rpc', 'rpcuser'), config.get('rpc', 'rpcpassword'), server, port)

이 줄은 bitcoind에 대한 연결 URL을 생성하며, 이 URL에는 평문 암호가 포함되어 있습니다. 만약 이 URL이:

  • 시스템 또는 애플리케이션 로그에 기록됨,
  • 제3자에게 이전되거나 보안되지 않은 채널을 통해 전송됩니다.
  • 환경 변수 관리가 불안정한 환경에서 사용됩니다.

그러면 공격자는 RPC 자격 증명에 접근한 후 노드 관리 또는 지갑 데이터에 접근할 수 있습니다. 결과적으로 다음과 같은 상황이 발생할 수 있습니다.

  • 비트코인 노드의 완전 장악
  • 개인 키의 도난 또는 조작(사용 가능한 경우)
  • 사용자가 모르는 사이에 사용자를 대신하여 거래를 수행하는 행위.

위험 분석 및 공격 시나리오

이러한 유형의 비밀번호 유출은 다양한 공격에 취약한 전형적인 보안 결함입니다.

  • 비밀번호가 포함된 URL이 있는 프로세스의 로그 또는 덤프를 가로채십시오.
  • 비밀번호가 한 번 유출된 경우, 리플레이 공격이 발생할 수 있습니다.
  • 내부자가 구성 파일 및 환경에 접근하여 공격을 수행합니다.

일부 공격은 소셜 엔지니어링이나 시스템의 다른 부분에 대한 취약점을 통해 증폭될 수 있습니다. 암호화 키가 공격자의 손에 들어가면 키의 암호화 가치가 손상될 수 있습니다.

취약점을 해결하고 예방하는 안전한 방법

권장 조치 사항:

  1. URL에 비밀번호를 직접 포함하지 마세요  . 대신, 로그에 기록되지 않는 보안 객체나 매개변수를 전달하는 등의 안전한 인증 방법을 사용하세요.
  2.  비밀 정보는 비밀 관리자, 시스템 저장소 서비스 또는 필수 프로세스만 접근할 수 있는 환경 변수와 같은 안전한 저장소를 사용하여 보관하십시오 .
  3.  민감한 데이터는 기록되지 않도록 최소한의 로깅 수준을 유지하십시오 .
  4.  암호화된 TLS/SSL 채널을 지원하는 최신 라이브러리와 프로토콜을 사용하십시오 .
  5. 비밀번호 주기화  및 만료 토큰 사용.

BitcoindClient를 예시로 사용한 안전한 코드 수정

다음은 생성자와 메서드를 다음  from_config과 같이 변경하는 예입니다.

  • URL에 비밀번호를 단일 문자열 리터럴로 포함시키지 마십시오.
  • 사용자 이름과 비밀번호를 분리해서 보관하세요.
  • 해당 데이터를 로그에 기록하지 않고 인증된 방식으로 클라이언트에 전달합니다.
파이썬class BitcoindClient(BaseClient):
    def __init__(self, network='bitcoin', rpc_user='', rpc_password='', host='127.0.0.1', port=8332, *args):
        if isinstance(network, Network):
            network = network.name
        if not rpc_user or not rpc_password:
            raise ValueError("RPC user and password must be provided")

        self.rpc_user = rpc_user
        self.rpc_password = rpc_password
        self.host = host
        self.port = port

        self.base_url = f"http://{host}:{port}"
        _logger.info("Connect to bitcoind at %s:%s", host, port)

        # Предполагается, что AuthServiceProxy поддерживает передачу отдельно user/password
        self.proxy = AuthServiceProxy(self.base_url, rpc_user, rpc_password)
        
        super(self.__class__, self).__init__(network, PROVIDERNAME, self.base_url, 100000000, *args)

    @staticmethod
    def from_config(configfile=None, network='bitcoin', **kwargs):
        config = configparser.ConfigParser()
        config.read(configfile or 'bitcoin.conf')
        
        rpc_user = config.get('rpc', 'rpcuser', fallback=None)
        rpc_password = config.get('rpc', 'rpcpassword', fallback=None)
        rpc_host = config.get('rpc', 'rpcconnect', fallback='127.0.0.1')
        rpc_port = config.getint('rpc', 'rpcport', fallback=8332 if network == 'bitcoin' else 18332)
        
        if not rpc_user or not rpc_password:
            raise ConfigError("RPC credentials missing in config")
        
        return BitcoindClient(network, rpc_user, rpc_password, rpc_host, rpc_port, **kwargs)

이러한 접근 방식은 다음과 같은 이유로 비밀번호 유출 가능성을 줄입니다.

  • 비밀번호는 URL 입력란에 생성되지 않습니다.
  • 로그에는 비밀 키를 제외한 호스트 및 포트 정보만 포함됩니다.
  • 클라이언트는 로그에 저장되지 않는 매개변수를 통해 인증을 받습니다.

BitcoinLib PHP 라이브러리의 비밀 키 및 개인 키 유출: 비트코인 ​​클라이언트 RPC 암호 관리의 취약점 분석 및 보안 위험

Dockeyhunt 암호화폐 가격


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

사례 연구 개요 및 검증

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

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


BitcoinLib PHP 라이브러리의 비밀 키 및 개인 키 유출: 비트코인 ​​클라이언트 RPC 암호 관리의 취약점 분석 및 보안 위험

www.privkey.ru


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

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


BitcoinLib PHP 라이브러리의 비밀 키 및 개인 키 유출: 비트코인 ​​클라이언트 RPC 암호 관리의 취약점 분석 및 보안 위험

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


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

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


BitcoinLib PHP 라이브러리의 비밀 키 및 개인 키 유출: 비트코인 ​​클라이언트 RPC 암호 관리의 취약점 분석 및 보안 위험

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


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


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008b483045022100b55db8ed04a0ca9b49029dbf8b04b8ef048ee9c9ceb7994dfa1cad77393e66a6022017503c9708675d126196313586bdd6ad8a24b457c87ae5232b11abbb885e1c16014104e87e83f871df1439b7873b4ae449d15306cafc53e03a06fffb534b3bf25b58d8edca74b0faf5cf8c3aed6cad2bd79a7bce92ab53e07440d4590cbf31286d9335ffffffff030000000000000000466a447777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a20242032303735373531342e35375de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914f750c55bea03af8a720c46b5d6edea93644cdaf788ac00000000

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


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

BitCoreFinder: URL 기반 RPC 자격 증명 유출을 악용하여 비트코인 ​​개인 키를 복구하는 도구

BitcoinLib PHP 라이브러리의 비밀 키 및 개인 키 유출: 비트코인 ​​클라이언트 RPC 암호 관리의 취약점 분석 및 보안 위험
https://b8c.ru/bitcorefinder/

주요 결과: BitCoreFinder는 연결 URL에 RPC 자격 증명을 삽입하는 심각한 취약점을 악용하여 비트코인 ​​데몬 암호를 자동으로 추출하고 개인 키를 복구함으로써 분실된 지갑을 복원하고 무단 자금 이체를 가능하게 합니다.

추상적인

BitCoreFinder는 안전하지 않은 RPC 암호 관리 방식을 사용하는 비트코인 ​​노드를 대상으로 하는 자동화된 복구 및 공격 도구입니다. BitCoreFinder는 로그, 메모리 덤프, 네트워크 추적 데이터에서 RPC 자격 증명이 포함된 평문 URL을 스캔하여 인증 매개변수를 재구성하고, RPC 접근 권한을 획득한 후, 고급 지갑 내부 검사 루틴을 실행하여 개인 키를 추출합니다. 본 논문에서는 해당 도구의 아키텍처, 악용되는 취약점, 공격 워크플로, 그리고 무단 키 복구를 방지하기 위한 완화 전략을 자세히 설명합니다.

소개

비트코인 클라이언트에서 RPC 자격 증명을 안전하게 관리하는 것은 노드 침해 및 자금 도난을 방지하는 데 매우 중요합니다. RPC 사용자 이름과 암호가 HTTP URL에 직접 연결되는 경우(예: http://user:password@host:port`@RPC.com/ …

도구 개요

BitCoreFinder는 세 가지 핵심 모듈로 구성됩니다.

  1. 자격 증명 수집기: 파일 시스템 로그, 실행 중인 프로세스 테이블 및 패킷 캡처를 스캔하여 URL 패턴 일치 여부를 확인합니다 http://<rpc_user>:<rpc_password>@.
  2. RPC 액세스 엔진:getnetworkinfo 발견된 자격 증명을 무해한 RPC 호출( , ) 을 발행하여 검증 getwalletinfo하고 성공 시 지갑 명령으로 에스컬레이션합니다.
  3. 키 추출 스위트: 잠금 해제된 지갑 RPC 호출( dumpprivkeylistunspentgetrawtransaction→ decoderawtransaction)을 사용하여 모든 주소를 찾고, 해당 개인 키를 검색하고, 분실된 지갑 복구를 위해 지갑 키 풀을 재구성합니다.

취약점 악용

URL에 RPC 자격 증명을 포함시키는 것은 정보 노출 취약점(CWE-200) 및 부적절한 접근 제어 (CWE-284)에 해당합니다. URL이 다음과 같은 위치에 나타날 경우:

  • 애플리케이션 로그
  • 셸 기록 및 프로세스 목록
  • TLS 링크가 아닌 링크에서의 네트워크 캡처

공격자는 무차별 대입 공격 없이도 자격 증명을 탈취할 수 있습니다. BitCoreFinder의 탈취 도구는 이러한 모든 경로를 자동으로 탐지하여 수동 정찰 시간을 획기적으로 줄여줍니다.

공격 워크플로

  1. 탐색 단계:.log 도구는 SSH 또는 파일 시스템 접근을 통해 대상 호스트의 인덱싱을 수행하고 , .conf메모리 내 프로세스 설명자에서 URL 문자열을 검색합니다 .
  2. 유효성 검사 단계: 추출된 자격 증명은 HTTPS 또는 HTTP를 통해 대상의 RPC 인터페이스에 대해 테스트됩니다.
  3. 추출 단계: 인증 후 BitCoreFinder는 주소를 열거하기 위한 명령을 실행 listwallets하고 listunspent, 각 주소에 대해 명령을 실행합니다 dumpprivkey. 키는 오프라인 복구를 위해 암호화된 아카이브에 저장됩니다.
  4. 복구 및 악용: 복구된 키를 사용하면 지갑을 재구성하거나 즉시 무단으로 자금을 이체할 수 있습니다.

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

성공적인 착취는 다음과 같은 결과를 초래합니다:

  • 지갑 전체 해킹: 공격자가 자금에 대한 돌이킬 수 없는 제어권을 획득합니다.
  • 분실 지갑 복구: 정당한 사용자가 의도치 않게 제3자 복구 도구에 노출되는 경우.
  • 생태계 신뢰도 저하: 광범위한 취약성은 노드 보안 관행에 대한 신뢰를 약화시킵니다.

완화 및 보안 조치

BitCoreFinder를 무력화하려면 :

  • URL에서 자격 증명을 분리하세요. 메서드 매개변수에 `use` AuthServiceProxy또는 이와 동등한 기능을 사용하고, 문자열을 직접 삽입하지 마세요.
  • 안전한 저장: RPC 자격 증명은 기본적으로 로그에 기록되지 않는 환경 변수 또는 운영 체제 수준의 비밀 저장소에 보관하십시오.
  • 암호화 채널: URL 도청을 방지하기 위해 RPC에 HTTPS/TLS를 적용합니다.
  • 로그 관리: 로그에서 민감한 필드는 가리거나 생략하고, 로그 정제 작업을 수행하십시오.
  • 자격 증명 순환: RPC 암호를 정기적으로 순환하고 RPC 바인딩 주소를 로컬 호스트 또는 제어된 네트워크 세그먼트로 제한하십시오.

결론

BitCoreFinder는 단순한 자격 증명 유출 취약점이 어떻게 개인 키 전체 복구 및 지갑 손상으로 이어질 수 있는지를 보여주는 대표적인 사례입니다. 자동화된 공격을 차단하기 위해서는 안전한 자격 증명 처리, 암호화된 통신, 그리고 체계적인 로깅 관행에 중점을 둔 완화 조치가 필수적입니다. 이러한 조치를 채택하면 비트코인 ​​클라이언트의 개인 키 추출 공격에 대한 방어력이 크게 강화되고 사용자 자금의 무결성이 보호될 것입니다.


결론

암호화 애플리케이션의 보안을 확보하는 데 있어 기밀 키와 비밀번호 유출 관련 취약점은 여전히 ​​가장 위험한 요소 중 하나입니다. 특별한 보호 조치 없이 연결 문자열의 URL에 비밀번호를 직접 포함하는 것은 심각한 보안 침해 위험을 초래합니다. 따라서 이러한 기밀 정보를 안전하게 저장하고 전송하며, 로그 기록을 최소화하고, 최신 인증 프로토콜을 사용하는 것이 좋습니다. 제안된 수정 사항은 일반적인 공격으로부터 보호하고 비트코인 ​​클라이언트의 보안을 강화합니다.


필요하다면 다른 암호화 관련 측면의 개발 및 심층 분석을 지원할 수 있습니다. 아래는 비트코인 ​​클라이언트의 RPC 암호 유출 취약점 원인에 대한 광범위한 과학적 검토와 공격 분석, 그리고 코드 예제를 통해 안전하게 문제를 해결할 수 있는 방안을 제시합니다.


비트코인 클라이언트에서 RPC 암호를 사용할 때 발생하는 암호화 취약점: 원인 분석 및 보안 방안

소개

비트코인 클라이언트(예: bitcoind)에서는 비밀번호로 보호되는 RPC 인터페이스를 통해 접근 제어가 이루어집니다. 노드 해킹 및 자금 탈취를 방지하려면 이 비밀번호를 안전하게 저장하고 전송하는 것이 매우 중요합니다. 암호화 및 제어 없이 연결 URL에 비밀번호를 직접 포함하는 잘못된 관행은 정보 유출 및 취약점으로 이어집니다. 이 글에서는 이러한 취약점의 원인, 일반적인 공격 방식, 그리고 bitcoind용 파이썬 클라이언트 예제를 통해 안전하게 문제를 해결하는 방법을 제시합니다.

취약성의 출현

주요 취약점은 다음과 같습니다. 구성 파일에서 추출된 RPC 암호가 연결 URL 문자열에 명시적으로 삽입됩니다.

파이썬url = "http://%s:%s@%s:%s" % (rpcuser, rpcpassword, server, port)

추가적인 보호 조치가 없다면, 이 URL은 실수로 로그나 메모리 덤프에 포함되거나 공격자의 제어 하에 들어가 보안이 침해될 수 있습니다. 이러한 경우 공격자는 RPC 인터페이스에 대한 완전한 제어권을 획득하여 지갑 관리 및 거래에 접근할 수 있게 됩니다.

위협 및 공격 가능성 분석

  • 로그 또는 시스템 덤프를 가로채십시오. 여기에는 암호가 포함된 전체 URL이 있을 수 있습니다.
  • 파일 시스템에 내부자 접근 권한이 있는 경우, 암호가 평문으로 저장된 상태에서 공격이 발생할 수 있습니다.
  • 암호화가 사용되지 않는 보안이 취약한 네트워크에서 패킷을 가로챕니다.
  • 오래된 데이터 재사용(리플레이 공격).
  • 구성 파일의 선택 또는 분석을 위한 자동화 시나리오 활용.

위에서 설명한 위협들은 종종 신속한 대응이 불가능한 인프라에 대한 대규모 공격으로 이어집니다.

안전한 해결 방법: 권장 사항 및 샘플 코드

권장 사항

  1. 비밀번호를 평문으로 포함하여 전체 URL을 구성하지 마십시오.
  2. 로그인과 비밀번호를 전달하는 데 별도의 매개변수를 사용하여 로그에 표시되지 않도록 하세요.
  3. 비밀번호는 안전한 저장소에 보관하거나 안전한 비밀번호 복구 기능을 이용하십시오.
  4. 민감한 데이터의 로깅을 최소화하십시오.
  5. 안전한 통신 채널(예: HTTPS/TLS)을 지원합니다.
  6. 비밀번호 및 토큰 순환을 구현하십시오.

파이썬에서 안전한 수정 방법의 예시

파이썬class BitcoindClient(BaseClient):
    def __init__(self, network='bitcoin', rpc_user='', rpc_password='', host='127.0.0.1', port=8332, *args):
        if not rpc_user or not rpc_password:
            raise ValueError("RPC user and password must be provided")
        
        self.rpc_user = rpc_user
        self.rpc_password = rpc_password
        self.host = host
        self.port = port
        
        self.base_url = f"http://{host}:{port}"
        _logger.info("Connecting to bitcoind at %s:%s", host, port)  # Без пароля
        
        # Передача отдельно user и password, без включения в URL
        self.proxy = AuthServiceProxy(self.base_url, rpc_user, rpc_password)
        super().__init__(network, PROVIDERNAME, self.base_url, 100000000, *args)

    @staticmethod
    def from_config(configfile=None, network='bitcoin', **kwargs):
        config = configparser.ConfigParser()
        config.read(configfile or 'bitcoin.conf')
        
        rpc_user = config.get('rpc', 'rpcuser', fallback=None)
        rpc_password = config.get('rpc', 'rpcpassword', fallback=None)
        rpc_host = config.get('rpc', 'rpcconnect', fallback='127.0.0.1')
        rpc_port = config.getint('rpc', 'rpcport', fallback=8332 if network == 'bitcoin' else 18332)
        
        if not rpc_user or not rpc_password:
            raise ConfigError("RPC credentials missing in config")
        
        return BitcoindClient(network, rpc_user, rpc_password, rpc_host, rpc_port, **kwargs)

이번 수정 사항에서는 다음과 같습니다.

  • 비밀번호는 URL에 포함되지 않으며 로그에도 기록되지 않습니다.
  • RPC 권한 부여에 대한 인수는 별도로 전달됩니다  AuthServiceProxy.
  • 진단 목적으로 주소와 포트만 기록되며, 민감한 데이터는 포함되지 않습니다.

결론

명시적인 URL 생성을 통한 RPC 암호 유출과 관련된 암호화 취약점은 비트코인 ​​노드의 보안에 심각한 위협을 가합니다. 적절한 클라이언트 아키텍처는 비밀 정보를 보호되지 않은 형태로 저장하거나 전송하는 것을 방지하고, 로그 기록에 비밀 정보가 나타나는 것을 최소화해야 합니다. 제안된 접근 방식은 침해 위험을 크게 줄이고 시스템의 신뢰성을 높이며 최신 보안 표준을 준수합니다.

아래는 비트코인 ​​클라이언트에서 RPC 암호 처리 시 발생하는 심각한 취약점이 비트코인 ​​암호화폐의 보안에 미치는 영향, 적용 가능한 과학 용어 및 공격 분류, 그리고 해당 취약점이 등록된 경우 CVE 데이터까지 다룬 광범위한 연구 논문입니다.


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

소개

비트코인은 암호화 방식과 소프트웨어 및 하드웨어의 신뢰성을 기반으로 보안이 유지되는 탈중앙화 암호화폐입니다. 중요한 보안 요소 중 하나는 비트코인 ​​노드의 RPC 인터페이스에 대한 신뢰할 수 있는 인증으로, 이를 통해 거래, 지갑 및 네트워크 동기화가 관리됩니다.

RPC 암호 관리의 심각한 취약점은 원격 명령 실행, 개인 키 탈취, 자금 탈취 등 비트코인 ​​노드에 대한 공격으로 이어집니다. 이 글에서는 이러한 취약점의 발생 원인, 관련 용어, 그리고 기존 CVE 항목에 대한 심층 분석을 제공합니다.

비트코인 보안에 대한 심각한 취약점의 영향 메커니즘

주요 취약점은 연결 문자열(URL)에 직접 포함된 RPC 암호의 안전하지 않은 저장 및 전송과 관련이 있습니다. 공격자가 이러한 암호를 입수하게 되면 비트코인 ​​노드의 RPC 서비스에 대한 완전한 접근 권한을 제한 없이 획득하게 되는데, 이는 개인 키 및 자금 관리에 대한 보안을 위협하는 것과 마찬가지입니다.

발생 가능한 결과:

  • 승인되지 않은 거래를 전송하는 기능을 포함하여 비트코인 ​​노드에 대한 완전한 제어 권한.
  • 지갑 및 거래 데이터의 도난 또는 변조.
  • 노드 다운타임 또는 서비스 거부(DoS) 공격.
  • 시스템에 장기간 은밀하게 접근하여 눈에 띄지 않는 변경을 가합니다.

이번 보안 침해는 기존 암호화 기술의 범위를 넘어서는 것이지만, 사용자 자금 보호와 네트워크에 대한 신뢰에 직접적인 영향을 미칩니다.

공격에 대한 과학적 정의

이러한 취약점과 그와 관련된 악용은 다음 범주에 속합니다.

  • “자격 증명 탈취 공격”이란  공격자가 인증에 사용되는 비밀 정보에 접근하는 공격을 말합니다.
  • CWE(Common Weakness Enumeration) 분류에 따르면 다음과 같은 상호 연관된 범주가 가장 관련성이 높습니다.
    • CWE-284 – 부적절한 접근  제어
    • CWE-285 – 부적절한  승인
    • CWE-200 — 정보  노출
  • 원격 프로시저 호출(RPC)의 맥락에서,   가로채기, 스푸핑 및 자격 증명 재사용의 위험이 있는 ‘ 보안되지 않은 원격 프로시저 호출’이라는 분류도 흔히 사용됩니다.
  • 이는 때때로 “RPC 인증 보안 취약점” 이라고 불립니다   .

비트코인 RPC 비밀번호 취약점 관련 CVE

현재 비트코인 ​​클라이언트에서 URL 문자열 생성을 통한 비밀번호 유출만을 기록한 널리 알려진 CVE 항목은 없습니다. 하지만 CVE에는 다음과 같은 취약점이 기록되어 있습니다.

  • RPC를 통한 원격 코드 실행(예: CVE-2019-13684).
  • 접근 제어 문제 및 인증 우회(CVE-2018-17144).
  • 일반적인 이해를 돕기 위해 유사한 특성을 가진 다른 시스템의 RPC 서비스에서 발견되는 취약점들을 살펴봅니다.

비트코인에 사용되는 하드웨어 지갑 및 IoT 장치에는 암호화 키의 보안에 영향을 미치는 CVE(예: ESP32 마이크로컨트롤러의 CVE-2025-27840)가 존재하며, 이로 인해 자금이 도난당할 가능성이 있습니다.

해당 취약점이 비트코인 ​​암호화폐 전체에 미치는 영향

  • 공격자가 개인 키 또는 RPC 인터페이스에 접근할 수 있게 되면 거래를 가로채 서명하여 비트코인을 훔칠 수 있습니다.
  • 대규모 취약점은 대규모 해킹과 생태계에 대한 신뢰 상실로 이어집니다.
  • RPC를 통한 원격 공격을 탐지하기 어렵다는 점이 피해를 더욱 가중시킵니다.
  • 비트코인에 미치는 영향으로 인해 전례 없는 RPC 보호 조치가 요구되고 있으며, 이는 전반적인 암호화 보안의 일부입니다.

결론

비트코인 클라이언트의 RPC 암호 관리에서 심각한 취약점이 발견되었으며, 이는 CWE-284/285와 관련된 자격 증명 유출 취약점으로 분류됩니다. 이 취약점을 악용하면 인증 기능이 제거되어 비트코인 ​​자금에 대한 완전한 통제권을 확보할 수 있습니다. 비트코인 ​​자체에서 이 취약점을 구체적으로 수정하는 CVE는 없지만, 부실한 암호 관리로 인해 위험성이 크게 증가합니다.

과학적 접근 방식은 비밀 정보 유출을 최소화하는 원칙, 즉 안전한 통신 채널(TLS) 사용, 유효 기간이 제한된 토큰 활용, 비밀 정보의 안전한 저장 및 접근 제어를 적용하는 것입니다. 이러한 방식으로만 키 탈취 공격을 방지하고 비트코인 ​​네트워크의 보안에 대한 신뢰를 확보할 수 있습니다.


필요하다면 비트코인 ​​관련 특정 CVE 개요와 비트코인 ​​암호화 관련 취약점 및 공격에 대한 정보를 준비해 드릴 수 있습니다.

  1. https://pikabu.ru/@CryptoDeepTech
  2. https://forklog.com/news/in-chips-for-bitcoin-koshelkov-obnaruzhili-kriticheskuyu-uyazvimost
  3. https://cqr.company/ru/web-vulnerabilities/unsecured-remote-procedure-calls-rpc/
  4. https://ru.wikinews.org/wiki/%D0%9A%D1%80%D0%B8%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_Bitcoin_Core
  5. https://securelist.ru/efimer-trojan/113186/
  6. https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
  7. https://ptsecurity.com/ru-ru/research/knowledge-base/kak-vyyavit-kyberataku-i-predotvratit-krazhu-deneg/
  8. https://support.catonetworks.com/hc/ru/articles/4417717264913-%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B0-%D0%B8-%D0%BE%D0%B1%D0%BB%D0%B0%D0%BA%D0%BE-%D0%9A%D0%B5%D0%B9%D1%82%D0%BE
  9. https://temofeev.ru/info/articles/hello-it-s-me-zerologon-razbor-eksploytov-i-poisk-ulik/
  10. https://support.usergate.com/idps-signatures?label=&order=label&sort=desc&page=478

필요하다면 안전한 키 저장 및 고급 인증 방법에 대한 주제를 더 자세히 살펴보는 데 도움을 드릴 수 있습니다.

  1. https://journals.tsu.ru/uploads/import/1139/files/P_02_115.pdf
  2. https://ege32.ru/upload/iblock/200/mdjj3s6j5ab3w4tkbju692fgc1iyah6l.doc
  3. https://bdu.fstec.ru/웹취약점
  4. https://cyberleninka.ru/article/n/mesto-kriptografii-v-obespechenii-kompyuternoy-kiber-bezopasnosti-i-ohrane-informatsii-o-tehnologiyah-strategicheskogo-i
  5. https://cyberleninka.ru/article/n/analiz-uyazvimostey-i-riskov-traditsionnyh-parolnyh-sistem-v-kontekste-korporativnyh-raspredelennyh-sistem-i-kriticheski-vazhnyh
  6. https://www.nsu.ru/n/physics-department/uchebno-metodicheskie-posobiya/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B2%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0 %B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85%20%D1%82%D0%B5%D1%85%D0%BD%D0% BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%D1%85%202/%D0%9F%D1%80%D0%BE%D0% B1%D0%BB%D0%B5%D0%BC%D1%8B%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B 0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B2%20%D0%98%D0%A2.pdf
  7. http://www.unn.ru/books/met_files/OC_METOD.doc
  8. https://kr-labs.com.ua/books/%D0%92%D0%B7%D0%BB%D0%BE%D0%BC+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE+%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F+%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7+%D0%B8+%D0%B8%D1%81%D0%BF% D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BA%D0%BE%D0%B4%D0%B0.pdf
  9. https://www.nsu.ru/n/physics-department/uchebno-metodicheskie-posobiya/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B2%20%D 0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85%20%D1%82%D0%B5%D1%85% D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F%D1%85%201/Problemy_bezopasnosti_Dubrov_S_V_FF_NGU_2012_259s.pdf
  10. https://library.tsilikin.ru/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/Linux/%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%8F%D0%B4%D1%80%D0%B0%20Linux.pdf

비트코인 지갑 개인 키와 같은 민감한 데이터가 저장된 데이터베이스의 암호화가 누락되었거나 비활성화된 경우 발생하는 암호화 취약점은 비트코인 ​​암호화폐 시스템에 매우 위험한 공격 경로가 될 수 있습니다.


이 취약점이 비트코인 ​​공격에 미치는 영향

비트코인 개인 키는 보안의 핵심입니다. 개인 키를 소유한다는 것은 해당 주소를 제어하고, 결과적으로 그 안에 있는 자금을 통제할 수 있다는 것을 의미합니다. 개인 키가 저장된 데이터베이스가 암호화로 보호되지 않으면, 해당 데이터베이스에 물리적 또는 네트워크 접근 권한이 있는 공격자는 개인 키에 직접 접근할 수 있습니다. 이는 무단 거래를 하거나, 타인의 비트코인을 탈취하거나, 아무런 제약 없이 자금을 훔치는 것을 가능하게 합니다.

비트코인 블록체인에서의 거래는 되돌릴 수 없기 때문에, 이러한 침해는 피해자의 자금을 완전히 잃게 만들어 시스템에 대한 신뢰를 크게 훼손하고 막대한 물질적 손실을 초래합니다. 이러한 상황을 키 유출 공격(  Key Leakage Attack)  또는  개인 키 공개 공격(Private Key Disclosure Attack) 이라고 합니다  .


공격의 과학적 명칭 및 분류

  • 이러한 취약점과 그에 따른 공격은 일반적으로  “비밀 키 자료 유출” 로 분류됩니다  .
  • 암호학적 관점에서 이는 “  키 노출 공격” 의 특수한 경우입니다  .
  • 암호화폐 및 블록체인 맥락에서 이는  “지갑 개인 키 유출” 에 해당될 수 있습니다  .
  • 이러한 공격은 해당 주소의 모든 자금을 관리하는 개인 키를 사용하기 때문에 치명적인 결과를 초래합니다.

CVE 및 분류 기준

현재 BitcoinLib 라이브러리 설정에서 암호화를 비활성화하는 것과 직접적으로 관련된 특정 CVE는 없습니다. 이는 특정 소프트웨어 구성 구현과 관련된 문제이지 비트코인 ​​표준의 취약점과는 무관하기 때문입니다.

하지만 일반적인 취약점 데이터베이스에는 부적절한 저장으로 인해 개인 키가 유출되는 것을 설명하는 CVE 식별자가 포함되어 있습니다. 예를 들면 다음과 같습니다.

  • CVE-2018-17144는 비트코인 ​​코어의 이중 지불 채굴 취약점이지만, 암호화 키 취약점은 아닙니다.
  • [CVE-2020-…]

암호화폐의 경우, 암호화 키가 공개적으로 사용 가능한 상황은   OWASP 및 MITRE에서 CWE-312(민감한 정보의 평문 저장)  또는  CWE-326(불충분한 암호화 강도) 으로 분류되는 경우가 많습니다.


요약

암호화되지 않은 개인 키의 공개 저장 방식은 비트코인 ​​암호화폐에 대한 직접적인 공격 경로입니다. 이러한 공격은 과학적으로는  키 유출 공격(Key Disclosure Attack)  또는  개인 키 누출 공격(Private Key Leakage Attack) 이라고 합니다  . 실제로 이는 자금에 대한 완전한 통제권 상실로 이어질 수 있는 가장 심각한 공격 중 하나입니다.

이 예제 라이브러리의 특정 취약점은 직접적인 CVE로 분류되지는 않지만, 민감한 정보를 저장하는 데 있어 부적절한 관행을 반영하는 CWE-312 및 CWE-326 취약점으로 분류됩니다. 정보 유출을 방지하기 위해서는 키 저장소의 필수 암호화 및 비밀 정보의 확실한 보호를 포함하는 내장 보안 조치가 필요합니다.


아래는 BitcoinLib 라이브러리 코드에서 발생한 취약점의 특성과 안전한 해결책, 샘플 코드, 그리고 향후 유사 공격 방지를 위한 권장 사항을 자세히 설명하는 연구 논문입니다.


BitcoinLib 코드의 암호화 취약점: 분석, 원인 및 안전한 해결 방법

소개

BitcoinLib은 비트코인 ​​프로토콜 및 암호화 연산 작업을 위한 인기 있는 파이썬 라이브러리입니다. 비트코인 ​​스크립트 명령어에 해당하는 연산 코드(opcode)를 사용한 연산의 정확성과 보안은 전체 시스템의 보안에 결정적인 영향을 미칩니다. opcode를 잘못 처리하면 거래 검증 로직이 손상되어 공격에 노출되고 암호화폐 자금이 손실될 수 있습니다. 이 글에서는 opcode 처리 코드에서 발견된 취약점을 심층 분석하고, 발생 메커니즘을 밝히며, 안전하게 수정하는 방법을 제시합니다.

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

코드 분석 결과, 해당 취약점은 함수 내에서 오퍼코드와 그 인덱스 사전을 초기화하는 과정에서 발생하는 것으로 나타났습니다  _set_opcodes. 특히, 다음 부분에서 문제가 발생합니다(예시는 단순화되었습니다).

파이썬idx = 0
for opcode in _opcodes:
    if isinstance(opcode, tuple):
        var, idx = opcode
    else:
        var = opcode
    # ... обновление словаря и атрибутов ...
    idx += 1

문제는  idx오퍼코드 인덱스 카운터로 사용되는  변수가 튜플인 경우 해당  튜플의 값으로  덮어쓰여진다는 것opcode 입니다 . 따라서 카운터가 제대로 작동하지 않아 이후부터 잘못된 값으로 증가하게 됩니다. 이는 오퍼코드 번호 매기기 오류로 이어집니다.

암호화 및 비트코인 ​​스크립트 작동 방식에서 이는 매우 중요합니다. 왜냐하면 오퍼레이션 코드 번호는 비트코인 ​​스크립트의 고유 식별자이기 때문입니다. 번호 지정에 오류가 발생하면 다음과 같은 문제가 발생할 수 있습니다.

  • 스마트 계약 스크립트 및 트랜잭션에 대한 잘못된 해석
  • 서명 확인 오류,
  • 보안 조건을 우회하는 것,
  • 공격자가 시스템을 공격할 가능성,
  • 지갑에 있는 자금에 대한 통제력을 상실했습니다.

따라서 오퍼레이션 코드 인덱스의 엄격하고 정확한 초기화 및 관리는 매우 중요한 보안 요구 사항입니다.

제안된 안전한 해결 방법

이 취약점을 완화하려면 카운터와 튜플 인덱스 값을 분리하는 것이 중요합니다. 올바른 방법은 튜플 인덱스에 별도의 변수를 사용하거나 전역 카운터를 덮어쓰지 않는 것입니다.

다음은 수정된 함수의 예시입니다  _set_opcodes.

파이썬def _set_opcodes():
    idx = 0
    opcodenames = {}
    for opcode in _opcodes:
        if isinstance(opcode, tuple):
            var, val = opcode  # отделяем индекс индекса и главного счетчика
            opcodenames[val] = var
            setattr(op, var.lower(), val)
        else:
            var = opcode
            opcodenames[idx] = var
            setattr(op, var.lower(), idx)
            idx += 1
    return opcodenames

설명:

  • 오퍼코드가 튜플로 표현되는 경우  (имя, значение), 해당 오퍼코드의 인덱스 값은 고정되어 있으며  val, 우리는 이 값을 설정합니다.
  • 메인 카운터  idx는 명시적인 숫자 인덱스가 없는 행에 대해서만 증가합니다.
  • 이는 원치 않는 편향을 방지하고 모든 연산 코드가 고유하고 정확한 숫자 값을 받을 수 있도록 합니다.
  • 이는 오퍼레이션 코드의 정확성과 예측 가능성을 보장합니다.

향후 유사 공격 방지를 위한 조치

  1. 강력한 데이터 유형 지정 및 유효성 검사  – 다양한 데이터 표현 형식을 다룰 때는 카운터와 인덱스를 매우 신중하게 관리하는 것이 중요합니다.
  2. 정적 분석 및 테스트 활용  – 연산 코드의 고유성 및 순서 검사를 포함하는 단위 테스트 구현.
  3. 코드 검토 및 보안 감사  – 암호화 코드의 논리적 오류를 확인하기 위한 필수 코드 감사를 실시합니다.
  4. 구성 데이터를 격리하십시오  . 고정된 숫자 값은 별도로 저장하고 순차 카운터는 별도로 초기화하십시오.
  5. 종속성 및 라이브러리 업데이트  – 외부 라이브러리의 취약점을 적시에 업데이트하고 점검합니다.

결론

BitcoinLib의 취약점은 카운터에 잘못된 인덱스를 할당하여 오피코드 번호가 잘못 매겨진 데서 비롯되었습니다. 이러한 버그는 비트코인 ​​스크립트 처리 과정에서 심각한 오류를 발생시켜 사용자 자금의 보안을 위협할 수 있습니다. 신속하고 효율적이며 안전한 해결책은 튜플에서 카운터와 고정 인덱스를 분리하는 것입니다. 준비된 조치를 구현하면 이러한 오류를 최소화하고 암호화 라이브러리의 공격 및 버그에 대한 저항력을 높일 수 있습니다.

따라서 제안된 패치는 현재의 취약점을 제거할 뿐만 아니라 더욱 안정적이고 안전한 개발을 위한 기반을 마련합니다.


아래는 BitcoinLib의 심각한 취약점이 비트코인 ​​네트워크의 공격 표면에 미치는 영향, 해당 공격의 과학적 명칭, 그리고 관련 CVE가 있는지 여부를 자세히 설명하는 연구 논문입니다.


BitcoinLib의 심각한 취약점이 비트코인 ​​보안에 미치는 영향: 공격 분류 및 CVE 상태

소개

BitcoinLib은 비트코인 ​​암호화폐의 오퍼레이션 코드와 스크립트를 다루는 데 널리 사용되는 라이브러리입니다. 이 라이브러리에서 발견된 심각한 취약점은 오퍼레이션 코드 번호 매기기 오류와 관련이 있으며, 이는 스크립트 해석의 무결성을 훼손합니다. 비트코인 ​​네트워크에서 스크립트의 정확한 실행은 매우 중요한 요소로 여겨지는데, 이는 거래 보안과 디지털 자산 관리를 보장하는 핵심 요소이기 때문입니다.

이 글에서는 이 버그가 비트코인 ​​공격에 어떤 영향을 미치는지, 이러한 유형의 공격에 대한 과학적 명칭은 무엇인지, 그리고 이 취약점이 국제 취약점 데이터베이스인 CVE에 등록되어 있는지 여부를 밝힐 것입니다.

취약점이 비트코인 ​​네트워크 공격에 미치는 영향

명령어 번호 매기기 오류로 인해 BitcoinLib이 스크립트의 명령어를 잘못 식별하는 문제가 발생합니다. 이로 인해 여러 가지 잠재적인 위협이 발생할 수 있습니다.

  • 스크립트 대체 및 검증 우회:  공격자는 거래 스크립트를 생성하거나 수정하여 의도된 방식과 다르게 해석되도록 할 수 있습니다. 예를 들어, 특정 작업을 검증하는 대신 다른 작업을 수행하도록 조작하여 서명 검증 논리 또는 자금 이체 조건을 위반할 수 있습니다.
  • 서명 위조 공격:  잘못된 opcode는 서명 검증 시 오탐 또는 오검출을 초래하여 실제 권한 없이 거래가 서명되고 실행될 수 있도록 합니다.
  • 거래 구조의 손상:  스크립트 오류로 인해 네트워크에서 유효하지 않은 거래가 발생할 수 있으며, 이는 보안 침해 및 자금 도난으로 이어질 수 있습니다.

일반적으로 이는 스크립트 유효성 검사  취약점 또는  스크립트 유효성 검사 우회 공격 범주에 속합니다   .

공격의 과학적 명칭

암호학 및 블록체인 보안 관점에서 이러한 취약점은    스크립트 유효성 검사 공격” 또는  “스크립트 실행 또는 유효성 검사 취약점” 범주에 속합니다. 더 일반적으로는 “스마트 계약 또는 스크립트 유효성 검사의 논리적 결함”  범주의 한 형태입니다   .

이러한 유형의 공격은 일반적으로 다음과 같이 불립니다.

  • 스크립트 유효성 검사 우회 공격
  • 스크립트 실행 조작,
  • 잘못된 스크립트 취약점 공격.

이 버그는 특히 오퍼레이션 코드 식별자의 잘못된 할당 및 사용에 영향을 미치므로, 이 공격은  오퍼레이션 코드 열거 결함 으로 분류되며  , 결과적으로 서명 검증 로직을 우회하게 됩니다.

CVE 취약점 번호

현재 공개된 데이터베이스와 공식 보안 자료에 따르면, BitcoinLib에서 발견된 오피코드 인덱스 관리 오류와 관련된 취약점은  CVE 번호로 등록되지 않았습니다  . 이러한 버그는  소프트웨어 버그 수정 범주에 속하는 논리적 구현 오류 로 간주  되며, 심각한 피해를 유발하지 않는 한 CVE로 분류되지 않는 경우가 많습니다.

이에 비해, 암호화폐 라이브러리의 다른 취약점들은 다음과 같은 CVE로 분류되었습니다.

  • CVE-2023-39910(“Milk Sad”) – Libbitcoin 키의 약한 엔트로피 취약점
  • CVE-2025-27840 – 비트코인용 ESP32의 심각한 취약점
  • CVE-2025-29774/29775 – xml-crypto의 서명에 영향을 미치는 취약점.

BitcoinLib의 이 취약점이 실제 공격에 사용되거나 대규모 피해가 발생할 경우, CVE로 등록되어 패치가 배포될 수 있습니다.

결론

BitcoinLib의 심각한 취약점, 즉 잘못된 오퍼레이션 코드 번호 지정으로 인해 스크립트 유효성 검사 공격  또는  오퍼레이션 코드 열거 오류가 발생할 수 있으며   , 공격자는 이를 통해 스크립트 검사를 우회하고 비트코인 ​​네트워크에서 승인되지 않은 거래를 수행할 수 있습니다. 잠재적 피해의 심각성에도 불구하고, 이 특정 취약점에는 현재 공식적인 CVE 번호가 부여되지 않았습니다.

보안을 강화하기 위해서는 패치를 신속하게 적용하고, 라이브러리를 감사하며, 비트코인 ​​암호화 라이브러리와 관련된 공식 경고 및 CVE를 면밀히 모니터링하는 것이 좋습니다.


CVE와 관련된 다른 유사한 취약점 분석이나 공격 메커니즘 설명이 필요하시면 추가적인 상세 검토를 도와드릴 수 있습니다. BitcoinLib의 심각한 취약점은 잘못된 오퍼코드 번호 매기기와 관련되어 있으며,  스크립트 유효성 검사 공격  또는  오퍼코드 열거 오류  유형의 공격으로 이어질 수 있습니다. 공격자는 이 공격을 통해 비트코인 ​​네트워크에 잘못된 스크립트 해석을 삽입하고, 서명 검사를 우회하며, 승인되지 않은 거래를 수행하여 암호화폐의 보안을 위협할 수 있습니다. 과학적인 관점에서 이 공격은 스크립트 실행 또는 유효성 검사 취약점으로 분류됩니다.

현재로서는 이러한 특정 취약점을 나타내는 BitcoinLib 관련 CVE 번호는 등록되어 있지 않습니다. 하지만 비교를 위해 CVE-2023-39910(Milk Sad) 및 CVE-2025-27840과 같은 암호화 라이브러리 관련 취약점이 존재하며 널리 알려져 있습니다.

따라서 공식적인 CVE는 없지만, 이 취약점의 잠재적 영향은 매우 심각하며 비트코인 ​​스크립트와 연동하는 라이브러리에 대한 필수적인 수정 및 보안 감사가 필요합니다.  habr+3

과학 논문:


비트코인 거래 처리 과정의 암호화 취약점 및 이를 안전하게 제거하는 방법

소개

최근 몇 년 동안 암호화폐, 특히 비트코인은 사용자와 보안 연구자 모두로부터 집중적인 감시를 받아 왔습니다. 비트코인의 보안은 암호화 알고리즘, 특히 타원 곡선과 암호화 스크립트에 기반하여 자금의 무결성과 기밀성을 보장합니다. 그러나 구현 오류, 불충분한 데이터 검증 또는 잘못된 거래 형식 처리는 공격자가 자금을 탈취하거나 시스템을 마비시키는 데 악용할 수 있는 심각한 취약점으로 이어질 수 있습니다.

비트코인 거래 처리 코드에서 취약점 발견

제시된 BitcoinLib 라이브러리 코드에서 Bitaps API를 사용하는 구현 과정에서 외부 소스에서 가져온 거래 데이터를 파싱하고 유효성을 검사하는 단계에서 취약점이 나타납니다. 특히, 해당 함수는  입력 및 출력 스크립트( ,  ,  ) _parse_transaction를 포함하는 필드를 잘못 처리합니다  .unlocking_scriptlocking_scriptwitnesses

파이썬for n, ti in tx['vIn'].items():
    if t.coinbase:
        t.add_input(prev_txid=ti['txId'], output_n=ti['vOut'], unlocking_script=ti['scriptSig'],
                    sequence=ti['sequence'], index_n=int(n), value=0, witness_type=witness_type)
    else:
        t.add_input(prev_txid=ti['txId'], output_n=ti['vOut'], unlocking_script=ti['scriptSig'],
                    locking_script=ti['scriptPubKey'], witnesses=ti.get('txInWitness', []),
                    address='' if 'address' not in ti else ti['address'], sequence=ti['sequence'],
                    index_n=int(n), value=ti['amount'], strict=self.strict)

API에서 제공되는 데이터가 잘못되었거나 악의적으로 변조된 스크립트 또는 매개변수를 포함하고 있고, 프로그램이 이를 엄격하게 검증하지 않는 경우, 악성 스크립트 삽입, 주소 변경 등의 후속 공격이 발생할 수 있으며, 이는 다음과 같은 결과를 초래할 수 있습니다.

  • 가짜 거래;
  • 서명 검증 및 유효성 검사의 취약점;
  • 자금 유출.

암호화 구현상의 오류, 특히 개인 키 생성 및 검증 과정에서의 오류(예: 타원 곡선 secp256k1의 순서 오류)는 또 다른 취약점을 야기하며, 이는 유효 키 값 범위의 만료 및 잠재적인 보안 침해 가능성을 높입니다.

암호화 취약성의 본질

암호화 취약점은 외부에서 들어오는 데이터의 진위성과 정확성에 대한 검증이 불충분할 때 발생합니다. 비트코인의 경우, 다음 사항을 반드시 확인해야 합니다.

  • 입력 및 출력 스크립트의 유효성;
  • 데이터 구조 및 유형의 정확성;
  • 거래가 네트워크 프로토콜을 준수하는지 여부;
  • 키의 보안 및 유효성.

이러한 측면에서 실수를 저지르면 공격으로 이어질 수 있습니다.

  • 악성 스크립트 삽입 또는 거래 재실행;
  • 취약하거나 범위를 벗어난 키를 사용하여 암호화가 손상되는 경우;
  • 거래 재현 및 변조 공격.

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

거래 처리 코드의 취약점을 방지하려면 모든 입력 데이터에 대한 엄격한 유효성 검사를 구현하고 검증된 암호화 라이브러리를 사용해야 합니다. 아래 솔루션을 통해 다음과 같은 이점을 얻을 수 있습니다.

  1. 특수 구문 분석기 및 유효성 검사기를 사용하여 스크립트의 형식과 내용을 검사하십시오.
  2. 모든 주소와 키 형식의 유효성을 확인하십시오.
  3. 키와 서명을 다룰 때는 검증된 라이브러리를 사용하세요.
  4. 유효성 검사 오류가 있는 거래 및 로그인을 처리하지 마십시오.

타사 스크립트 유효성 검사기를 사용하여 유효성 검사를 추가한 보안 함수의 예(의사 코드):

파이썬from bitcoinlib.transactions import Transaction
from bitcoinlib.script import Script

def safe_parse_transaction(tx, strict=True):
    # Проверка обязательных полей
    required_fields = ['vIn', 'vOut', 'txId', 'lockTime', 'version']
    for field in required_fields:
        if field not in tx:
            raise ValueError(f"Missing required transaction field: {field}")

    # Валидация каждой транзакции входа
    for n, ti in tx['vIn'].items():
        # Проверка структуры скрипта разблокировки и блокировки
        if not Script.is_valid_script(ti['scriptSig']):
            raise ValueError(f"Invalid unlocking script in input {n}")
        if 'scriptPubKey' in ti and not Script.is_valid_script(ti['scriptPubKey']):
            raise ValueError(f"Invalid locking script in input {n}")
        # Проверка адреса формата
        if 'address' in ti and not is_valid_address(ti['address']):
            raise ValueError(f"Invalid address format in input {n}")
    
    # Аналогичная проверка для выходов
    for _, to in tx['vOut'].items():
        if not Script.is_valid_script(to['scriptPubKey']):
            raise ValueError("Invalid locking script in output")
        if 'address' in to and not is_valid_address(to['address']):
            raise ValueError("Invalid address format in output")

    # Создание объекта транзакции после валидации
    t = Transaction(
        locktime=tx['lockTime'], version=tx['version'], network='bitcoin',
        txid=tx['txId'], fee=tx.get('fee', None), size=tx.get('size', None)
    )
    # Добавление входов и выходов (аналогично с проверками)
    # ...
    return t

def is_valid_address(address):
    # Проверка формата адреса Bitcoin (Base58/Bech32) с помощью проверенной библиотеки
    try:
        # Проверка по стандарту Bitcoin
        return True
    except Exception:
        return False

향후 공격으로부터 보호 기능을 제공합니다

향후 유사한 코드에 대한 공격을 방지하기 위해 다음과 같은 조치를 권장합니다.

  • 검증되고 오랜 기간 동안 테스트를 거쳤으며 감사를 받은 암호화 라이브러리만 사용하십시오.
  • 보안 라이브러리와 도구를 정기적으로 업데이트하고 비트코인 ​​프로토콜 업데이트를 모니터링하세요.
  • 입력 데이터에 대한 동적 테스트 및 퍼징을 포함한 자동화된 코드 감사를 수행합니다.
  • 외부 소스에서 유입되는 모든 거래에 대해 데이터 무결성 관리 및 엄격한 검증을 시행하십시오.
  • 개발자들에게 안전한 프로그래밍 및 암호화 원리에 대한 교육을 제공합니다.

결론

비트코인 거래 처리 과정에서 발생하는 암호화 취약점은 대부분 데이터 검증 미흡, 스크립트 처리 오류, 키 암호화 구현 오류 등으로 인해 발생합니다. 시스템 보안을 확보하기 위해서는 모든 입력 데이터를 엄격하게 통제하고 검증하며, 검증된 암호화 라이브러리를 사용하고, 코드를 정기적으로 감사해야 합니다. 본 논문에서 제안하는 안전한 거래 처리 기능 예시는 적절한 검증 방법을 보여줍니다. 이러한 권장 사항을 준수하면 시스템을 악용으로부터 보호하고 저장 및 전송되는 암호화폐 자금의 안전성을 보장할 수 있습니다.


과학 논문:


비트코인 거래 처리의 심각한 취약점이 네트워크 보안 및 공격 분류에 미치는 영향

소개

탈중앙화 암호화폐인 비트코인은 거래 보안을 보장하기 위해 암호화 프로토콜과 스크립팅 엔진에 의존합니다. 거래 처리, 검증 또는 암호화 키 생성 과정에서 발생하는 취약점은 사용자 자금의 안전과 네트워크의 무결성을 위협하는 심각한 결과를 초래할 수 있습니다. 이 글에서는 비트코인 ​​클라이언트 및 API에서 거래 스크립트 처리가 부적절할 때 발생하는 심각한 취약점이 어떻게 나타나는지, 그리고 해당 취약점의 과학적 분류는 무엇인지에 대해 논의합니다.

심각한 취약점이 비트코인 ​​공격에 미치는 영향

이 사례처럼 거래 입력 및 출력 스크립트의 유효성 검사가 잘못된 경우와 같은 심각한 취약점은 여러 유형의 공격의 근거가 될 수 있습니다.

  • 거래 변조 및 스크립트 삽입:  공격자는 유효하지 않은 서명이나 잠금 스크립트를 삽입하여 거래 식별자를 변경하지 않고도 거래 내용을 변경하거나, 시스템에서 승인되는 유효하지 않은 서명이 포함된 허위 거래를 생성할 수 있습니다.
  • 무단 거래 서명:  취약점이 존재하여 공격자가 악성 스크립트를 삽입할 수 있는 경우, 시스템이 자신의 주소를 수신자로 지정하여 거래에 서명하도록 강제함으로써 자금을 빼돌릴 수 있습니다.
  • 키 생성 취약점 악용:  무작위성이 부족하거나 예측 가능성이 낮은 키(예: 낮은 엔트로피 또는 난수 생성기의 취약점으로 인한)를 사용하면 개인 키를 복구하여 모든 자금을 잃을 수 있습니다.

종합적으로 볼 때, 이 취약점은 공격자가 암호화적 맥락에서 “스크립트 삽입 공격”  또는  “트랜잭션 변조 공격” 이라고 불리는 공격을 시작할 수 있도록 허용합니다   . 즉, 형식적 정확성을 침해하지 않고 서명된 스크립트를 변경할 수 있게 됩니다.

공격의 과학적 명칭

취약점의 맥락과 특성에 따라 이러한 공격은 다음과 같이 분류됩니다.

  • 거래 변조 가능성:  공격자가 서명된 거래의 구조를 변경하여 거래 ID(txid)는 바뀌지만 거래 자체는 유효한 상태로 유지되도록 하는 공격입니다. 이는 거래 회계의 정확성에 영향을 미칩니다.
  • 스크립트 삽입:  필드  scriptSig또는  에 악성 스크립트를 삽입하여 scriptPubKey오류 또는 악의적인 거래 처리를 초래할 수 있습니다.
  • 암호화 키 복구 공격:  예측 가능한 키 생성이나 서명 위조와 같은 암호화 기술의 취약점을 악용하여 개인 키를 획득하는 공격입니다.

관련 취약점의 CVE 식별자

비트코인 및 관련 시스템의 거래 및 암호화와 관련된 알려진 취약점은 다음과 같은 CVE 항목에 등록되어 있습니다.

  • CVE-2025-27840  — 하드웨어 지갑 암호화 하드웨어(ESP32)에서 발견된 취약점으로, 무단 거래 서명 및 개인 키 탈취를 허용합니다. 이 취약점은 키 및 서명의 생성 및 처리 오류와 관련이 있습니다.
  • CVE-2010-5141 및 CVE-2010-5140  — 비트코인 ​​코어 이전 버전의 취약점으로, 거래 스크립트 처리 방식이 부적절하여 공격자가 이중 지불 공격을 수행하고 유효하지 않은 거래를 생성할 수 있습니다.
  • CVE-2013-2293, CVE-2013-3219와 같이 DoS 공격 및 유효성 검사 문제와 관련된 다른 CVE는 비트코인 ​​거래 처리 방식을 지속적으로 개선하는 것이 얼마나 중요한지를 보여줍니다.

질문에서 설명된 취약점은 본질적으로  트랜잭션 변조  및  스크립트 삽입 취약점의 범위에 속할 수 있지만  , 특정 CVE에 따라 실제 코드 및 환경에서 발생하는 취약점으로 기술되어 있습니다. 반면 이전 질문에서 언급된 코드는 아직 일반적으로 인정되는 CVE가 없습니다. 이는 클라이언트 구현에서 발생할 수 있는 잠재적 취약점의 전형적인 예입니다.

결론

비트코인 클라이언트와 API에서 트랜잭션 스크립트의 구문 분석 및 유효성 검사 오류로 인해 발생하는 심각한 취약점은 트랜잭션 변조 및 스크립트 삽입과 같은 공격에 직접적인 영향을 미칩니다. 이러한 취약점은 사용자 자금 손실부터 네트워크 마비에 이르기까지 심각한 결과를 초래할 수 있습니다. 과학 및 산업 현장에서는 이러한 공격에 대해 CVE(보안 취약점)로 등록된 유사 사례가 있으며, 이는 잘못된 암호화 논리 및 트랜잭션 처리와 관련된 위험을 설명합니다. 이러한 공격으로부터 보호하기 위해서는 일련의 유효성 검사 조치, 검증된 암호화 라이브러리 사용, 그리고 코드베이스에 대한 정기적인 감사가 필요합니다.


출처:  forklog+4

이 논문의 최종 과학적 결론은 다음과 같습니다.


비트코인 거래 입력 및 출력 스크립트의 부적절한 처리와 불충분한 검증으로 인해 발생하는 심각한 취약점은 전체 암호화폐 네트워크의 보안에 중대한 위협을 가합니다. 이러한 취약점은  스크립트 삽입 공격(Script Injection Attack)  및  거래 변조 공격(Transaction Malleability Attack) 으로 알려진 공격 유형을 발생  시킵니다. 공격자는 이러한 공격을 통해 악성 또는 위조 스크립트를 삽입하고, 거래 구조를 변경하고, 서명을 위조하고, 수신자 주소를 바꿔 자금을 탈취할 수도 있습니다. 이러한 공격의 결과는 네트워크 마비, 사용자 자금 손실, 블록체인 기술에 대한 신뢰도 저하 등으로 나타납니다.

이러한 위험한 시나리오를 방지하기 위해서는 모든 입력 데이터를 엄격하게 검증하고, 검증된 암호화 라이브러리를 사용하며, 코드를 정기적으로 감사해야 합니다. 과학적, 기술적 표준에 의해 검증된 포괄적이고 지속 가능한 거래 처리 방식만이 이러한 암호화 공격으로부터 비트코인 ​​네트워크를 확실하게 보호하고 시스템 참여자의 자금 유출 가능성을 최소화할 수 있습니다.

암호화 스크립트 및 거래를 다룰 때 안전한 관행을 효과적으로 구현하는 것은 비트코인 ​​네트워크의 보안과 탈중앙화를 유지하는 데 필수적인 조건이며, 이를 준수하지 않으면 미래에 암호화폐 기술의 안정적인 개발과 적용이 불가능합니다.


이 결론은 해당 취약점의 심각성과 비트코인 ​​암호화폐 보안에 미치는 중대한 영향을 강조하며, 이는 해당 주제의 과학적 접근 방식과 완성도에 부합합니다.

  1. https://arxiv.org/html/2508.01280v1
  2. https://underdefense.com/wp-content/uploads/2018/07/Anonymised-BlackBox-Penetration-Testing-Report.pdf
  3. https://dl.acm.org/doi/10.1145/3700706.3700713
  4. https://www.paloaltonetworks.com/cyberpedia/cryptojacking
  5. https://www.wiz.io/academy/what-is-cryptojacking

필요하다면 특정 암호화 기능의 보다 심층적인 기술 구현이나 인기 있는 비트코인 ​​라이브러리와 통합된 파이썬 코드 예제에 대해 도움을 드릴 수 있습니다.

출처:  pikabu+1

  1. https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
  2. https://top-technologies.ru/ru/article/view?id=37634
  3. https://osp.ru/os/2025/02/13059629
  4. https://cyberleninka.ru/article/n/metodika-analiza-dannyh-v-blokcheyn-sisteme-bitcoin
  5. https://cyberleninka.ru/article/n/uyazvimosti-smart-kontraktov-blokcheyn-platformy-ethereum
  6. https://aml.university/d/844tioCCL91oKA5vDZATJjwrb92DS9zXiUTv2kCX
  7. https://dblib.rsreu.ru/data/publications/6360_text.pdf
  8. http://doi.sciencen.org/wp-content/uploads/%D0%9D%D0%98%D0%9A-294-%D0%98%D0%B2%D0%B0%D0%BD%D0%B5%D0%BD%D0%BA%D0%BE%D0%B2%D0%B0-28-38.pdf
  9. https://shop.renlife.ru/articles/tekhnologiya-blokchejn-kak-ustroena
  10. https://www.ulsu.ru/media/documents/%D0%9C%D0%A3_%D0%B4%D0%BB%D1%8F_%D0%A1%D0%A0%D0%A1_%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%B1%D0%BB%D0%BE%D0%BA%D1%87%D0%B5%D0%B9%D0%BD_%D0%B8_%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B0.pdf
  1. https://habr.com/ru/articles/771980/
  2. https://cryptodeep.ru/bitcoin-bluetooth-attacks/
  3. https://polynonce.ru/bitcoinlib/
  4. https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
  5. https://pikabu.ru/tag/Telegram%20(%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0),%D0%90%D1%80%D0%B1%D0%B8%D1%82%D1%80%D0%B0%D0%B6%20%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D1%8B
  6. https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3526-private-key-debug-%D0%BD%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F- %D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%BD%D1%8B%D1%85-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0% B8-%D0%B8-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D0%B2-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD %D0%B8%D0%B8-%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0-%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%8 7%D0%B5%D1%81%D0%BA%D0%BE%D0%B9-%D0%BA%D1%80%D0%B8%D0%B2%D0%BE%D0%B9-secp256k1-%D1%83%D0%B3%D1%80%D0%BE %D0%B7%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%8D%D0%BA%D0%BE%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-bitcoin%2F
  7. https://pikabu.ru/tag/YouTube,%D0%90%D1%80%D0%B1%D0%B8%D1%82%D1%80%D0%B0%D0%B6%20%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D1%8B
  8. https://cryptodeep.ru/blockchain-api-and-web-services/

필요한 경우, 이 수정 사항의 보안성을 검증하기 위한 보다 자세한 설명이나 테스트 예시를 작성하는 데 도움을 드릴 수 있습니다.

  1. https://www.block-chain24.com/faq/chto-takoe-bitcoinlib-i-kak-hakery-ego-atakovali
  2. https://polynonce.ru/bitcoinlib/
  3. https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3526-private-key-debug-%D0%BD%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F- %D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%BD%D1%8B%D1%85-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0% B8-%D0%B8-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D0%B2-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD %D0%B8%D0%B8-%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0-%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%8 7%D0%B5%D1%81%D0%BA%D0%BE%D0%B9-%D0%BA%D1%80%D0%B8%D0%B2%D0%BE%D0%B9-secp256k1-%D1%83%D0%B3%D1%80%D0%BE %D0%B7%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%8D%D0%BA%D0%BE%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-bitcoin%2F
  4. https://www.itsec.ru/news/pohititel-dannih-maskirovalsia-pod-obichniy-biblioteku-python
  5. https://ftp.zhirov.kz/books/IT/Python/Python%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD %D0%B8%D1%8F%20%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E% D1%82%20(%D0%94%D0%B6%D0%B8%D0%BC%D0%BC%D0%B8%20%D0%A1%D0%BE%D0%BD%D0%B3).pdf
  6. https://habr.com/ru/articles/817237/
  7. https://habr.com/ru/companies/bitfury/articles/327272/
  8. https://bitcoinlib.readthedocs.io
  9. https://www.block-chain24.com/faq/chto-takoe-kriptokorrelyaciya-i-kak-ee-ispolzovat-dlya-luchshego-upravleniya-riskami
  10. https://dzen.ru/a/Zjfl2-2jIG3-FNxL

특정 CVE 사례나 개인 키가 포함된 데이터베이스에 대한 공격 사례에 대한 심층 분석이 필요하시면 상세한 분석을 제공해 드릴 수 있습니다.

  1. https://www.forbes.com/sites/digital-assets/2025/09/08/new-security-breach-threatens-crypto-and-everyday-apps/
  2. https://orbit.dtu.dk/files/255563695/main.pdf
  3. https://www.sciencedirect.com/science/article/abs/pii/S1084804525001948
  4. https://repository.uel.ac.uk/download/89aa353204b80b51820478f691748d4b100e446975d9f74e6da2c6b9239804af/248057/Accepted%20Paper.pdf
  5. https://arxiv.org/pdf/2503.22156.pdf
  6. https://www.sciencedirect.com/science/article/pii/S1057521924003715
  7. https://www.scheller.gatech.edu/directory/research/information-technology-management/niculesecu/pdf/impact-of-crypto-on-cybersecurity-august-et-al-2025.pdf
  8. https://pubsonline.informs.org/doi/10.1287/mnsc.2023.00969

BitWasp 라이브러리의 Utxo 클래스에 제공된 코드는 비트코인 ​​거래 출력 구조(OutPoint 및 TransactionOutputInterface)를 단순히 캡슐화하는 코드이며,  해당 코드에는 비밀 키나 개인 키가 유출되는 명백한 부분이 없습니다  .

Utxo 클래스는 개인 키를 다루지 않고 이전에 사용된 트랜잭션 출력물을 저장하고 접근을 제어하는 ​​클래스입니다. 전체 코드는 다음과 같습니다.

  • 생성자는 OutPoint 및 TransactionOutputInterface 객체를 저장합니다.
  • 게터는 이러한 객체를 반환합니다.

모든 속성은 비공개이며, 단순히 거래 데이터를 캡슐화합니다. 개인 키를 생성, 저장 또는 처리하는 메커니즘은 없습니다. 따라서 이 코드 조각만 고려한다면 명시적인 개인 키 유출 취약점은 없습니다.


비트코인 라이브러리에서 개인 키 취약점은 일반적으로 어디에서 발생합니까?

BitWasp 라이브러리 및 기타 유사한 구현체에 대한 정보를 통해 주요 암호화 취약점이 다음과 같은 영역과 관련되어 있음을 알 수 있습니다.

  • 개인 키 생성 또는 검증 코드 오류(예: 하한값 검사 미실시로 인해 유효하지 않은 키 사용 허용)
  • 서명 알고리즘(ECDSA) 구현상의 오류로 인해 서명으로부터 개인 키를 복구할 수 있습니다.
  • 개인 키 또는 시드 구문을 보호되지 않은 형태로 전송하는 행위
  • 결정론적 키 생성기(예: BIP32)의 취약점.

BitWasp와 관련하여 ECDSA 트랜잭션 서명에서 개인 키가 노출될 수 있는 버그가 발견되었습니다(2020-2022년). 하지만 이는 라이브러리의 다른 부분에 해당하며 Utxo 클래스에는 적용되지 않습니다.


재개하다

이 특정 코드 조각에는  개인 키 유출 취약점이 없습니다  . 이는 거래 출력을 위한 래퍼 클래스이며, 개인 키를 직접 다루지 않습니다.

개인 키의 취약점을 분석하려면 키 처리, 서명 생성 및 보안 관련 코드, 즉 심각한 오류가 있는 부분을 살펴봐야 합니다(예: 난수 생성 함수, ECDSA 서명 및 유효성 검사 함수).

  • 개인 키 생성 기능(키 범위 검사 포함)
  • 서명 프로세스(ECDSA 서명)
  • 열쇠 관리(보관, 비상 접근 등).

BitWasp의 다른 파일에서 개인 키의 취약점을 찾는 데 도움이 필요하면 이러한 모듈에 대한 심층 분석을 수행할 수 있습니다.

제시된 코드는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점을 직접적으로 노출하지 않습니다. 해당 코드는 BitWasp\Bitcoin 라이브러리에서 암호화 어댑터, 매개변수, 네트워크 설정 및 타원형 암호화 계산을 초기화하고 관리하는 역할을 합니다.

핵심 사항:

  • 해당 클래스는 어댑터, 매개변수, 포인트 생성기, 네트워크 등을 가져오기 위한 정적 메서드만 포함합니다.
  • 외부 소스로부터 개인 키를 저장하거나 전송하는 코드는 없습니다.
  • 개인 키와 개인 키 관련 작업은 일반적으로 지갑, 서명 및 개인 정보 보호를 담당하는 다른 클래스 또는 모듈에 저장되고 수행됩니다.
  • 이 코드에는 개인 키 관리 기능이 없으므로 키 유출은 불가능합니다.

잠재적 취약점을 분석해 보면,  setAdapter()(58행)을 통한 어댑터 설정의 유연성과 (66행)을 통한 네트워크 매개변수  설정의 유연성 setNetwork()으로 인해 공격자가 암호화 어댑터를 교체할 수 있습니다(예: 취약하거나 제대로 보호되지 않은 어댑터로). 그러나 이는 키의 직접적인 노출보다는 아키텍처적 약점에 가깝습니다.

따라서 제시된 코드 조각에는  개인 키를 직접 관리하지 않고 암호화 구성 요소 작업만 처리하므로 취약점이나 개인 키 유출이 없습니다  . 취약점을 찾으려면 개인 키와 그 저장소를 직접 다루는 모듈을 분석해야 합니다.


제공된  코드에는  비밀 키 또는 개인 키 유출과 관련된 명백한 암호화 취약점이 포함되어 있지 않습니다.

이 코드는 비트코인 ​​키 및 서명 작업의 표준 구현(WIF 가져오기/내보내기, BIP38 암호화/복호화, HDKey 유도, ECDSA 서명)을 보여줍니다. 다음 내용을 포함합니다.

  • 모든 비밀 키는 임의로 출력되거나 노출되지 않고 개인 변수(예: , self.secret,  self.private_byte)  에 저장됩니다  .self.private_hex
  • 개인 키를 생성하기 위해  암호학적으로 강력한 난수 생성기인 가 random.SystemRandom()사용됩니다  .os.urandom()
  • 입력 키에 대해 체크섬 검증이 사용됩니다.
  • 개인 키의 암호화(BIP38) 및 복호화 절차는 주소 해시 검증을 통해 비밀번호를 확인하는 방식으로 올바르게 구현되었습니다.

취약점이 주요 정보 유출에 있다고 가정할 때, 잠재적 위험 영역은 다음과 관련될 수 있습니다:

  • 개인 키를 추가적인 보호 조치 없이 메모리에 저장하는 것(표준 파이썬 코드에서는 이것이 불가피합니다).
  • .info()이러한 메서드를 부주의하게 호출할 경우  개인 키가 로그에 기록되거나 출력될 수 있지만  .as_dict(include_private=True), 이는 코드 자체의 취약점을 의미하는 것이 아니라 오용을 의미합니다.
  • 메모리에서 키 배치(key batches)를 안전하게 제거할 수 없는 문제(하지만 이는 대부분의 구현에서 흔히 발생하는 문제이며 이 코드에만 국한된 것은 아닙니다).

코드 자체에는 비밀 키가 기록되거나, 잘못 반환되거나, 공개 구조체에 기록되거나, 개인 데이터가 암호화되지 않은 상태로 디스크에 평문으로 저장되는 명백한 부분이 없습니다.

요약하자면:

  • 암호화 취약점으로 인해 비밀키가 유출될 수 있는 해당 줄 번호가   제시된 코드에서 누락되어 있습니다 .
  • 이 코드는 비트코인 ​​개인 키를 다루는 표준 방식을 따릅니다.
  • 코드 실행 환경의 보안을 확보하는 것이 좋습니다(메모리 보호, 로그 접근 제한, 주요 백업의 안전한 저장).

제시된 코드에는 비밀 키 또는 개인 키 유출과 관련된 명백한 내용이 포함되어 있지 않습니다(예: 로그에 개인 키를 기록하거나, 오류 메시지 또는 화면에 개인 키를 표시하는 행위).

이 코드 조각은 비트코인 ​​주소 및 암호화 작업을 위한 엄격한 유틸리티 함수를 구현하는 인코딩, 디코딩 및 암호화 작업(해싱, 주소 변환) 라이브러리의 일부입니다.

개인 키 유출 분석:

  • 코드에는 개인 키를 생성하거나 직접 표시하는 기능이 없습니다.
  • 모듈 경고를 제외하고는 민감한 데이터를 로그(_logger.warning/info)에 기록하는 작업은 없습니다.
  • 암호화 작업(aes_encrypt, aes_decrypt, scrypt_hash)은 키를 노출하지 않고 암호화 라이브러리를 올바르게 사용합니다.
  • 오류는 비밀 정보의 내용을 공개하지 않고 예외를 발생시킵니다.
  • 이 함수는  addr_base58_to_pubkeyhash체크섬 검증을 사용하지만 개인 키를 명시적으로 처리하지는 않습니다.

잠재적 위험 영역:

  • 만약 이 코드 외부의 어딘가에서 개인 키가 로그(_logger)에 직접 출력되거나 전역 변수에 기록된다면 이는 취약점이 될 수 있지만, 여기에는 그러한 동작이 없습니다.
  • 해당 함수를 호출하는 코드에서 오류가 발생하거나 잘못 사용하면 메모리 누수가 발생할 수 있습니다.
  • 비밀 키가 포함된 변수는 신중하게 저장하고 관리해야 하지만, 여기서는 그렇지 않은 것 같습니다.

결과:

 이 코드 조각에서는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점이 발견되지 않았습니다 .

만약 잠재적인 데이터 유출이 있는 특정 코드 라인을 말씀하시는 것이라면, 해당 코드에서는 개인 키가 명시적으로 노출되거나 직접 처리되지 않으므로 개인 키가 사용되는 맥락이나 함수를 명확히 설명해 주시기 바랍니다.

제공해주신 코드에는  암호화 취약점(예: 비밀 키 또는 개인 키 유출)과 관련된 누출이나 오류가 포함되어 있지 않습니다.

이 코드는 기본적으로 다음을 구현합니다.

  • 로깅 초기화,
  • 지갑의 주소 유형 및 키 구조를 다루는 함수를 정의합니다.
  • 구성 매개변수와 상수를 사용합니다.
  • 함수를 더 이상 사용하지 않는 함수로 표시하는 데코레이터를 구현합니다.

모든 코드는 메타데이터, 구성 및 상수를 사용하여 작동하며,  개인 키를 직접 처리, 저장 또는 전송하지 않으며  , 개인 데이터가 로그에 출력되지 않습니다.

이 라이브러리에 취약점이 있다면, 이 코드 조각에는 그 취약점이 존재하지 않습니다.

원하시면 개인 키, 서명 또는 암호화 연산과 관련된 프로젝트의 다른 부분도 분석해 드릴 수 있습니다.

제시된 코드에는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점이 명백하게 드러나는 부분이 없습니다.

이 코드는 비트코인 ​​스크립트 인터프리터(Script)와 피연산자 스택(Stack)의 구현체이며, 개인 키를 직접 출력, 기록 또는 공개하는 연산을 포함하지 않습니다. 개인 키는 Key 및 Signature 객체 내부에서만 사용되며, 명시적으로 출력되거나 접근 가능한 변수/로그에 기록되지 않습니다.

개인 키 유출이 발생하지 않은 이유

  • Key키는 객체를 통해  전달되고 처리됩니다  Signature(예: 구문 분석 메서드에서  keys.append(Key(data))).
  • 개인 키는 전역 변수, 로그에 기록되지 않으며 함수에서 반환되지 않습니다.
  • 로그(  _logger)에는 개인 정보가 포함되지 않은 오류 및 경고 메시지만 포함됩니다.
  • 신뢰할 수 없는 위치에 개인 키를 출력하거나 저장하는 기능은 없습니다.

취약점이 발생할 가능성이 있는 곳

  • 개인 키가 호출에 포함되거나  _logger.error(msg)(현재 코드에서는 이런 일이 발생하지 않습니다)._logger.warning()
  • 해당 방법  op_checksig과 기타 암호화 검사는 개인 매개변수를 노출하지 않고 키를 올바르게 사용합니다.
  • Script 클래스 함수 에서는  __init__키가 객체로 전달되지만, 스크립트 컨텍스트 외부에서는 직접 확장되거나 조작되지 않습니다.

만약 특정 정보 유출 위치(예: 개인 키 출력 또는 로깅)를 예상하신다면, 이 코드에는 그러한 위치가 없습니다. 이 코드는 공개 키와 개인 키 수준에서 암호화를 올바르게 처리하며, 그 내용을 노출하지 않습니다.

숨겨진 취약점이나 간접적인 취약점(예: 약한 난수 생성, 키를 이 클래스 외부에 부적절하게 저장하는 경우)에 관심이 있다면, 이 코드 조각에서는 그러한 취약점을 보여주지 않으므로 다른 자료를 찾아보셔야 합니다.


제공된 코드는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점을 직접적으로 노출하지 않습니다. 해당 코드는 비트코인 ​​거래 처리를 위한 라이브러리와 관련이 있으며, Input 클래스는 키와 서명을 처리하지만, 개인 키를 사용하는 모든 작업은 Key 및 Signature 객체를 통해 올바르게 수행되며, 개인 키를 명시적으로 노출하거나 로그에 기록하지 않습니다.

코드의 주요 보안 사항:

  • 개인 키는 서명 시 로컬에서 사용되며(스텐실 서명 방식  sign), 로그에 기록되거나 출력되지 않습니다.
  • 주요 객체  Key또는  HDKey개인 키는 에 저장되며  private_byte, 이는 직접 내보내거나 공개적으로 제공하지 않습니다.
  • 개인 키는 로그 및 오류에 표시되지 않으며, 키가 없는 경우 서명 생성이 오류와 함께 수행되지 않습니다.
  • 개인 키를 평문으로 명시적으로 저장하는 전역 변수나 파일 작업은 발견되지 않았습니다.

취약점이 의심된다면 개인 키가 어디에 있는지 주의 깊게 살펴보세요.

  • 외부 소스 또는 인수를 통해 외부(예: 메서드)에서 전달되지만  sign코드  add_input내에서는 Key 클래스를 통해 즉시 처리되며 직접 노출되지 않습니다.
  • 메모리나 덤프에 저장될 수 있지만, 개인 키 처리 코드의 일부는 전체적으로 표시되지 않습니다.
  • 구문 분석 또는 로깅 오류는 개인 정보를 출력하지 않습니다.

요약하자면, 이 코드에는 명시적인 개인 키 유출 취약점이 없습니다.  취약점을 파악하려면 추가적인 정보가 필요할 수 있습니다. 예를 들어, 잘못된 라이브러리 사용, 이 코드 외부에서의 키 로깅, 또는 직렬화/역직렬화 오류 등이 있을 수 있습니다.

sign개인 키에 대한 보다 구체적인 검색이나 분석이 필요한 경우 키와 서명이 저장되고 직렬화되는 방식(예: ,  update_scripts,  ) 을 자세히 살펴볼 수 있지만  verify, 제공된 코드 조각에서는 기본적인 보안 검사만 구현되어 있습니다.


제공된 코드에는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점이 포함되어 있지 않습니다.

이 코드는 화폐 가치(Value)를 처리하고, 이를 최소 단위(사토시)로 변환하며, 다양한 암호화폐 네트워크를 고려하여 형식을 지정하는 클래스와 함수의 구현입니다. 개인 키, 비밀 키, 서명 또는 암호화/복호화와 같은 기밀 정보 유출이나 노출 위험을 초래하는 작업은 포함되어 있지 않습니다.

취약점이 없는 이유:

  • 이 클래스는  Value숫자 값과 금액의 문자열 표현만 처리할 수 있습니다.
  • 개인 키는 저장, 전송 또는 처리되지 않습니다.
  • 해당 코드에는 입출력 작업, 네트워크 상호 작용 또는 민감한 정보 로깅이 없습니다.
  • 모든 방법은 공개된 숫자 데이터(사토시 및 기타 단위로 표시된 금액)와 함께 작동합니다.

재개하다

이 코드에는 개인 키 유출 취약점이 없습니다. 이러한 취약점을 식별하려면 개인 키 작업, 암호화 연산, 저장 및 전송이 이루어지는 코드 부분(예: 개인 키 생성 또는 불러오기, 트랜잭션 서명, 복호화)을 분석해야 합니다.


결론적으로, 본 논문은 비트코인 ​​클라이언트의 RPC 암호 관리에서 발견된 심각한 취약점이 비트코인 ​​암호화폐 전체의 보안에 중대한 위협이 된다는 점을 강조합니다. 자격 증명 탈취 및 무단 접근(CWE-284/285)으로 분류되는 이 취약점을 악용하면 네트워크 노드와 사용자 개인 키를 원격으로 제어할 수 있게 됩니다. 이는 공격자가 무단 거래를 실행하고, 자금을 탈취하며, 비트코인 ​​생태계에 대한 신뢰를 훼손할 수 있도록 합니다.

이 공격은 종종 암호를 평문으로 보호 없이 전송하고 저장하는 방식으로 이루어지며, 이는 RPC 인터페이스를 통한 원격 명령 실행을 포함한 다양한 공격을 용이하게 합니다. 비트코인에서 이 특정 취약점을 직접적으로 등록한 CVE는 없지만, 유사한 취약점으로 인해 여러 차례 심각한 피해가 발생한 사례가 있습니다.

보안을 확보하려면 비밀 정보 유출을 최소화하고, 안전한 통신 채널을 사용하며, 인증 데이터를 안전하게 저장하고, 접근 키를 정기적으로 변경하는 등의 원칙을 엄격히 준수해야 합니다. 이러한 조치를 완벽하게 이행해야만 심각한 공격을 방지하고, 사용자 자금의 무결성과 가용성을 유지하며, 비트코인 ​​네트워크의 안정성을 확보할 수 있습니다.

따라서, 논의된 취약점과 그와 관련된 위험한 공격은 인증 관리의 약점이 암호화폐 시스템에 얼마나 치명적인 결과를 초래할 수 있는지를 명확히 보여주는 사례이며, 이 분야의 보안 관행에 대한 지속적인 연구와 개선의 필요성을 강조합니다.

  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/778200/
  5. https://cyberleninka.ru/article/n/minimizatsiya-riskov-v-kreditno-finansovoy-sfere-blokcheyn
  6. https://habr.com/ru/articles/807565/
  7. https://se.math.spbu.ru/thesis_download?thesis_id=16
  8. https://cryptodeep.ru/bit-flipping-attack-on-wallet-dat/
  9. https://cyberleninka.ru/article/n/minimizatsiya-riskov-v-kreditno-finansovoy-sfere-blokcheyn/pdf
  10. https://elibrary.ru/item.asp?id=46592622

BitWasp의 개인 키 취약점에 대한 자세한 사례를 원하시면, 발견된 사례 중 하나를 제공해 드릴 수 있습니다.

그러한 정보가 필요하시면 말씀해 주세요.

  1. https://www.ivanparraga.com/content/files/2023/08/Mastering-Bitcoin-Book-print3_rc1.pdf
  2. https://polynonce.ru/bitcoin-php-bitwasp/
  3. https://packagist.org/packages/bitwasp/bitcoin
  4. https://cryptodeep.ru/bitcoin-bluetooth-attacks/
  5. https://www.youtube.com/watch?v=01LEyuNgRSQ
  6. https://pikabu.ru/tag/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B0,%D0%A7%D0%B0%D1%82-%D0%B1%D0%BE%D1%82
  7. https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOorBQWbZFZm7xDSjSR16a9NVgOFRskdo6Be-J3chTCoStKQvTIJ-
  8. https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
  9. https://habr.com/en/articles/181372/
  10. https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_2_12995184

게시물 탐색

By