제시된 Base58ExtendedKeySerializer 클래스(PHP) 코드에서 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점은 이 코드 조각에서 직접적으로 나타나지 않습니다. 이 클래스는 base58check를 사용하여 계층적 키를 직렬화하고 파싱하는 기능만 수행합니다. 개인 키 관련 모든 작업은 `$this->serializer` 객체(ExtendedKeySerializer)를 통해 이루어지며, 이 클래스는 인코딩 및 디코딩만 처리합니다.
개인 키 유출의 주요 위험은 일반적으로 다음과 관련이 있습니다.
- 개인 키의 잘못된 생성 또는 저장(예: 생성 오류, secp256k1 곡선 매개변수 오류, 점군 순서 오류 취약점과 같은 경우)
- 암호화 없이 안전하지 않은 저장 또는 직렬화
- 개인 키를 평문으로 기록하거나 출력하는 행위
이 코드에서 잠재적인 취약점은 serialize() 메서드입니다. 이 메서드는 직렬화 결과를 Base58::encodeCheck를 통해 반환하는데, 이 메서드는 암호화된 형식이 아닌 base58check로만 인코딩합니다. 만약 이 메서드를 사용하는 상황에서 개인 키가 포함된 문자열이 노출될 수 있다면, 이는 취약점이 될 수 있습니다.
하지만 실제 개인 키 유출을 정확하게 식별하려면 ExtendedKeySerializer 클래스의 코드와 이 클래스가 호출되는 부분을 분석해야 합니다.
검색 및 일반 분석에 따르면, 이러한 라이브러리에서 흔히 발견되는 취약점은 개인 키 생성 또는 검증 오류(예: secp256k1 곡선의 순서 상수 계산 오류)와 관련이 있으며, 이는 키의 정확성을 저해하고 잠재적으로 보안 침해 로 이어질 수 있습니다(취약성 분석에서 N의 순서 계산 오류 예시를 확인할 수 있는데, 그룹 순서 값이 잘못되면 유효하지 않은 키가 생성될 수 있습니다).
코드 실행 결과
- 이 특정 코드 조각에서는 키 유출 취약점이 직접적으로 드러나지 않습니다. 키의 직렬화 및 구문 분석만 처리하기 때문입니다.
- 잠재적 위험: 암호화되지 않은 형식으로 개인 키를 반환할 수 있는 직렬화기를 사용하는 경우. 이는 문자열 자체의 문제가 아니라 아키텍처 및 사용 환경의 문제입니다.
- 개인 키 유출 취약점을 분석하려면 프로젝트 내의 ExtendedKeySerializer 구현 및 키 생성 부분을 직접 살펴보아야 합니다.
원하시면 ExtendedKeySerializer 코드 분석이나 BitWasp Bitcoin PHP 라이브러리에서 개인 키 생성 및 저장 관련 특정 취약점 검색을 도와드릴 수 있습니다.
제시된 ScriptWitnessSerializer 클래스 의 코드 에는 비밀 키 또는 개인 키 유출로 이어지는 직접적인 암호화 취약점이 포함되어 있습니다. 이 클래스는 스크립트의 증거 데이터가 포함된 ScriptWitness 구조체의 직렬화 및 파싱을 담당하지만, 개인 키를 직접 저장하거나 처리하지는 않습니다.
주요 방법은 다음과 같습니다.
PHPpublic function fromParser(Parser $parser): ScriptWitnessInterface
그리고
PHPpublic function serialize(ScriptWitnessInterface $witness): BufferInterface
그들은 길이와 내용을 나타내는 데 varint와 varstring을 사용하여 바이너리 형식으로만 증인 데이터를 읽고 씁니다.
이 코드에는 취약점이 없습니다. 그 이유는 다음과 같습니다.
- 개인 키를 사용하는 작업은 금지되어 있습니다.
- 비밀 정보를 출력하거나 기록하는 기능은 없습니다.
- 개인 키를 노출시킬 수 있는 변환 방법은 없습니다.
- 직렬화 방식은 단순히 이진 데이터를 연결하는 것입니다.
잠재적인 보안 위험은 직렬화 결과를 이 클래스 외부에서 사용할 때만 발생합니다.
- 직렬화된 검증 데이터에 민감한 정보(예: 개인 키)가 포함되어 있고 보호 장치 없이 저장되거나 전송되는 경우,
- 만약 증인 데이터가 보안 침해 발생 시 시스템의 다른 곳에서 사용된다면.
결론적으로, 이 코드에는 개인 키 유출과 관련된 암호화 취약점이 없습니다.

성공적인 복구 시연: 10,000,000,000 BTC 지갑
사례 연구 개요 및 검증
크립토딥테크(CryptoDeepTech) 연구팀은 10,000,000,000 BTC (복구 당시 약 1,257,250달러) 가 들어 있는 비트코인 지갑에 접근하여 해당 취약점의 실질적인 영향을 성공적으로 입증했습니다 . 목표 지갑 주소는 1BnN5a635CZW8iGQ8v3CrF4egPX9x1GDzV 로 , 비트코인 블록체인 상에서 공개적으로 확인 가능한 주소이며 거래 내역과 잔액이 확인되었습니다.
이번 시연은 취약점의 존재와 공격 방법론의 효과성을 실증적으로 검증하는 역할을 했습니다.

복구 과정에는 지갑의 개인 키를 재구성하기 위해 취약점을 체계적으로 적용하는 작업이 포함되었습니다. 취약점의 매개변수를 분석하고 축소된 검색 공간 내에서 잠재적인 키 후보들을 체계적으로 테스트한 결과, 팀은 지갑 가져오기 형식(WIF)에서 유효한 개인 키인 5KXmT6temphf5bSZ9ENPZVrg68WGrz6FGx72jZkAP2AtuRbVNQr를 성공적으로 식별했습니다.
이 특정 키 형식은 추가 메타데이터(버전 바이트, 압축 플래그 및 체크섬)가 포함된 원시 개인 키를 나타내며, 대부분의 비트코인 지갑 소프트웨어로 가져올 수 있도록 합니다.

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

블록체인 메시지 디코더: www.bitcoinmessage.ru
유효한 개인 키를 확보한 후, 팀은 지갑 제어권을 확인하기 위해 검증 거래를 수행했습니다. 이러한 거래는 개념 증명을 보여주는 동시에 복구된 자금의 대부분을 합법적인 반환 절차에 사용할 수 있도록 구성되었습니다. 전체 과정은 투명하게 문서화 되었으며 , 거래 기록은 비트코인 블록체인에 영구적으로 기록되어 취약점 악용 가능성과 성공적인 복구 방법론에 대한 불변의 증거로 활용되었습니다.
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a47304402202b9fba6e70db1b542839da2929b91780b161449ff9f062fb06764c8f4783473f0220199100b9c2398ab47defa8a81a54fb8587c8813b48c63f2b84663a001da726e40141041b4d2d64fec17955b9762f81758eb632842959e6d67774fd2f6303d077732a7a32d9c099b8e59db078c81023c551556535d292ab1a3dc369c590df1ae185d199ffffffff030000000000000000426a407777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420313235373235305de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914764592627d1faad35260539264f2d677097d57db88ac00000000
암호 분석 도구는 비트코인 지갑 소유자의 요청에 따른 공인 보안 감사뿐만 아니라 암호 분석 , 블록체인 보안 및 개인 정보 보호 분야의 학술 및 연구 프로젝트, 그리고 소프트웨어 및 하드웨어 암호화폐 저장 시스템 모두에 대한 방어 애플리케이션을 위해 설계되었습니다.
CryptoDeepTech 분석 도구: 아키텍처 및 작동 방식
도구 개요 및 개발 배경
크립토딥테크(CryptoDeepTech) 연구팀은 취약점을 식별하고 악용하도록 특별히 설계된 암호화 분석 도구를 개발했습니다. 이 도구는 블록체인 보안 연구 및 취약점 평가에 중점을 둔 광범위한 프로젝트의 일환으로 귄터 죄이어(Günther Zöeir) 연구 센터 의 연구실에서 개발되었습니다. 이 도구는 엄격한 학술적 기준을 준수하여 개발되었으며, 두 가지 목적을 가지고 설계되었습니다. 첫째, 약한 엔트로피 취약점의 실질적인 영향을 입증하는 것, 둘째, 향후 유사한 취약점으로부터 보호하는 데 도움이 될 수 있는 보안 감사 프레임워크를 제공하는 것입니다.
이 도구는 암호 분석 요소와 최적화된 검색 방법론을 결합한 체계적인 스캔 알고리즘을 구현합니다. 이 도구의 아키텍처는 비트코인 네트워크의 방대한 주소 공간에서 취약한 지갑을 효율적으로 식별하는 동시에 취약점으로 인해 발생하는 수학적 제약을 해결하도록 특별히 설계되었습니다. 이는 블록체인 포렌식 기능 에 있어 중요한 진전을 의미하며 , 악의적인 공격에 의해 악용될 때까지 발견되지 않을 수 있는 광범위한 취약점을 체계적으로 평가할 수 있게 해줍니다.
기술 아키텍처 및 운영 원칙
CryptoDeepTech 분석 도구는 여러 상호 연결된 모듈 로 구성되어 있으며 , 각 모듈은 취약점 식별 및 악용 과정의 특정 측면을 담당합니다.
- 취약점 패턴 인식 모듈 : 이 구성 요소는 공개 키 생성 과정에서 나타나는 약한 엔트로피의 수학적 특징을 식별합니다. 블록체인 상의 공개 키 구조적 특성을 분석하여 취약성과 일관된 특성을 보이는 주소를 표시할 수 있습니다.
- 결정론적 키 공간 열거 엔진 : 이 도구의 핵심인 이 엔진은 엔트로피 취약점으로 인해 축소된 키 공간을 체계적으로 탐색합니다. 보안 키 생성에 대한 무차별 대입 방식과 비교하여 계산 요구 사항을 획기적으로 줄이는 최적화된 검색 알고리즘을 구현합니다.
- 암호화 검증 시스템 : 이 모듈은 표준 타원 곡선 암호화를 사용하여 대상 공개 주소에 대해 후보 개인 키를 실시간으로 검증합니다. 이를 통해 유효한 키 쌍만 성공적인 복구로 식별되도록 보장합니다.
- 블록체인 통합 레이어 : 이 도구는 비트코인 네트워크 노드와 직접 연동하여 주소, 잔액 및 거래 내역을 검증하고, 취약한 지갑과 그 내용에 대한 상황 정보를 제공합니다.
이 도구의 작동 원리는 응용 암호 분석 에 기반을 두고 있으며 , 특히 키 생성 과정에서 엔트로피 부족으로 인해 발생하는 수학적 취약점을 표적으로 삼았습니다. ESP32 의사난수 생성기(PRNG) 결함의 정확한 특성을 이해함으로써 연구원들은 제한된 검색 공간을 효율적으로 탐색하는 알고리즘을 개발할 수 있었고, 일반적으로 불가능한 계산 작업을 실행 가능한 복구 작업으로 전환할 수 있었습니다.
| # | 출처 및 제목 | 주요 취약점 | 영향을 받는 지갑/기기 | 크립토딥테크 역할 | 주요 증거/세부 사항 |
|---|---|---|---|---|---|
| 1 | 크립토뉴스닷컴(CryptoNews.net) 보도 : 비트코인 지갑에 사용되는 중국산 칩이 거래자들을 위험에 빠뜨리고 있다. | 중국산 ESP32 칩에서 발견된 CVE-2025-27840 취약점에 대해 설명합니다. 이 취약점은 무단 거래 서명 및 원격 개인 키 탈취를 허용합니다. | ESP32 기반 비트코인 하드웨어 지갑 및 ESP32를 사용하는 기타 IoT 장치. | 크립토딥테크는 화이트햇 해커들이 칩을 분석하고 취약점을 발견한 사이버 보안 연구 회사라고 소개합니다 . | 크립토딥테크(CryptoDeepTech)가 거래 서명을 위조하고 10 BTC가 들어 있는 실제 지갑의 개인 키를 복호화하여 해당 공격이 실현 가능하다는 것을 입증했다는 점에 주목하십시오. |
| 2 | Bitget 뉴스: 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 지갑을 대상으로 테스트했습니다. |
| 4 | Poloniex Flash Flash 1290905 – ESP32 칩 취약점 | 비트코인 지갑에 사용되는 ESP32 칩에 심각한 취약점(CVE-2025-27840)이 있어 개인 키 도난으로 이어질 수 있다는 짧은 경고입니다. | ESP32 기반 모듈 및 관련 네트워크 장치를 사용하는 비트코인 지갑. | 해당 취약점에 대한 해외 언론 보도를 전달하고, 독자들에게 독립적인 전문가들의 외부 연구 자료를 참조하도록 암묵적으로 안내합니다. | 완전한 분석이라기보다는 시장 뉴스 지표 역할을 하지만, 거래자들 사이에서 ESP32/CVE-2025-27840 문제에 대한 인식을 높이는 데 도움이 됩니다. |
| 5 | X(트위터) – BitcoinNewsCom이 ESP32의 CVE-2025-27840에 대해 트윗했습니다. | 여러 유명 비트코인 하드웨어 지갑에 사용되는 ESP32 칩에서 심각한 취약점(CVE-2025-27840)을 발견했다고 발표합니다 . | ESP32 기반의 “여러 유명 비트코인 하드웨어 지갑”과 더 넓은 암호화폐 하드웨어 생태계. | (링크된 기사에 보도된) 보안 연구원들의 연구 성과를 강조하지만 , 연구팀에 대한 자세한 정보는 제공하지 않습니다. 기본 정보는 CryptoDeepTech에서 가져왔습니다. | X에 대한 신속한 뉴스 배포 수단으로, CryptoDeepTech의 익스플로잇 시연 및 10 BTC 테스트 지갑에 대한 자세한 내용을 담은 장문의 기사 로 트래픽을 유도합니다. |
| 6 | ForkLog (EN) 비트코인 지갑 칩에서 심각한 취약점 발견 | ESP32의 CVE-2025-27840 취약점을 통해 공격자가 업데이트를 이용해 마이크로컨트롤러를 감염시키고 , 승인되지 않은 거래에 서명하고, 개인 키를 탈취하는 방법에 대한 자세한 내용입니다. | ESP32 칩은 수십억 개의 IoT 기기와 Blockstream Jade와 같은 하드웨어 지갑에 사용됩니다. | 해당 문서에서는 크립토딥테크(CryptoDeepTech) 전문가들이 결함을 발견하고, 다양한 공격 방식을 테스트하며, 실제 익스플로잇을 수행했다고 명시적으로 밝히고 있습니다. | 이 글에서는 CryptoDeepTech의 스크립트를 사용하여 유효하지 않은 키를 생성하고, 비트코인 서명을 위조하고, 소규모 그룹 공격을 통해 키를 추출하고, 가짜 공개 키를 제작하는 방법을 설명하며, 실제 10 BTC 지갑에서 검증한 결과를 제시합니다. |
| 7 | AInvest 비트코인 지갑, 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가 들어 있는 지갑의 개인 키를 성공적으로 해독했다는 보고가 나왔는데 , 이는 그들의 뛰어난 암호 분석 능력을 보여주는 것이다. |
| 9 | CoinGeek 의 Blockstream Jade 지갑과 ESP32 칩 내부에 숨겨진 위협 | 이 보고서는 CVE-2025-27840을 하드웨어 지갑 결함의 더 넓은 맥락에서 다루며, ESP32의 취약한 난수성으로 인해 개인 키를 추측하기 쉽고 자체 보관 보안을 약화시킨다는 점을 강조합니다. | ESP32 기반 지갑(Blockstream Jade 포함) 및 ESP32로 제작된 모든 DIY/맞춤형 서명 도구. | CryptoDeepTech의 연구가 이론을 넘어 실제 행동으로 이어졌음을 강조합니다. 그들은 ESP32의 취약점을 이용해 10 BTC가 들어 있는 지갑을 해킹했습니다. | 크립토딥테크(CryptoDeepTech)의 10 BTC 지갑 해킹 성공 사례를 중심으로, 칩 수준의 취약점이 하드웨어 지갑을 대규모로 조용히 손상시킬 수 있음을 주장합니다. |
| 10 | ESP32 칩 결함 으로 암호화폐 지갑이 해킹 위험에 노출됨… | CVE-2025-27840은 취약한 의사난수 생성기(PRNG), 유효하지 않은 개인 키 허용, 그리고 위조된 ECDSA 서명 및 키 도용을 허용하는 Electrum 관련 해싱 버그 의 조합으로 분석됩니다 . | ESP32 기반 암호화폐 지갑(예: Blockstream Jade) 및 ESP32가 내장된 다양한 IoT 장치. | 해당 취약점을 발견하고 , CVE를 등록하고, 통제된 시뮬레이션에서 키 추출을 시연한 CryptoDeepTech의 사이버 보안 전문가들에게 공로를 돌립니다. | 이 글은 크립토딥테크(CryptoDeepTech)가 10 BTC가 들어 있는 지갑에서 개인 키를 어떻게 은밀하게 추출했는지 설명하고 , 일렉트럼(Electrum) 기반 지갑과 전 세계 IoT 인프라에 미치는 영향에 대해 논의합니다. |
| 11 | ForkLog (RU) В чипах для биткоин‑кошельков обнаружили критическуу уязвимость | ESP32의 CVE-2025-27840 취약점에 대한 러시아어 보도 자료입니다. 이 자료에서는 공격자가 업데이트를 통해 칩을 감염시키고, 승인되지 않은 거래에 서명하고, 개인 키를 탈취할 수 있다고 설명합니다. | ESP32 기반 비트코인 하드웨어 지갑(Blockstream Jade 포함) 및 기타 ESP32 기반 장치. | 크립토딥테크 전문가들이 해당 칩의 결함에 대한 연구, 실험 및 기술적 결론 의 출처라고 설명합니다 . | 영어 버전과 동일한 실험 목록을 제공합니다. 유효하지 않은 키 생성, 서명 위조, ECC 하위 그룹 공격 및 가짜 공개 키 등 모든 실험은 실제 10 BTC 지갑에서 테스트되었으며, 이는 CryptoDeepTech가 실무 암호 분석가로서의 역할을 강화합니다. |
| 12 | SecurityOnline.info CVE-2025-27840: 초소형 ESP32 칩으로 전 세계 비트코인 지갑을 해킹할 수 있는 방법 | 후원자 전용 심층 분석 영상입니다. ESP32 설계의 작은 결함이 어떻게 전 세계 비트코인 지갑을 위협할 수 있는지 집중적으로 다룹니다 . (CVE-2025-27840 관련 내용) | 전 세계의 비트코인 지갑 및 기타 장치들은 ESP32 마이크로컨트롤러에 의존합니다. | CryptoDeepTech에서 제공한 이미지를 사용하고 있으며, 해당 보고서를 그들의 연구를 기반으로 한 전문적인 취약점 분석으로 제시합니다. | 전체 내용은 유료 구독자만 볼 수 있지만, 예고편을 통해 해당 기사가 CryptoDeepTech의 조사 결과와 마찬가지로 ESP32 결함과 이로 인한 지갑 개인 키 노출 문제를 다루고 있음을 알 수 있습니다. |
SilkStride 분석: BIP32 결정론적 키 생성 취약점을 이용한 비트코인 개인 키 추출

핵심 요점: SilkStride는 BIP32 계층적 결정론적 키 유도 알고리즘의 치명적인 결함, 특히 secp256k1 곡선 순서 상수의 오차(off-by-one)를 악용하여 공개 확장 키에서 개인 키를 복구함으로써 공격자가 분실된 비트코인 지갑을 재구성할 수 있도록 합니다.
추상적인
SilkStride는 비트코인의 BIP32 구현에서 발견되는 결정론적 키 유도 취약점을 악용하도록 설계된 고급 지갑 복구 및 암호 분석 프레임워크입니다. 특정 PHP 라이브러리 내에서 곡선 순서 NNN에 대한 잘못된 정의를 표적으로 삼아, SilkStride는 알려진 공개 확장 키(xpub)로부터 최종 사용자의 마스터 개인 키를 유도할 수 있습니다. 본 논문에서는 이 취약점의 근본 원인을 분석하고, 공격 방법을 상세히 설명하며, 이러한 개인 키 복구 공격으로부터 보호하기 위한 방어 전략을 논의합니다.
소개
비트코인의 BIP32 표준은 마스터 시드를 통해 편리한 계층적 키 생성을 가능하게 하여 확장 공개 키(xpub)와 확장 개인 키(xprv)를 생성합니다. 정상적인 작동은 secp256k1 곡선 순서 상수 NNN의 정확한 사용에 달려 있습니다. NNN 계산 오류는 전체 파생 체인을 손상시켜 공격자가 xpub에서 xprv로의 단방향 파생을 역으로 전환할 수 있도록 합니다. SilkStride는 이러한 역전환을 자동화합니다.
취약점 개요
영향을 받는 BIP32 구현에서 개발자는 NNN을 다음과 같이 잘못 정의했습니다.
잘못된=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
N_{\text{잘못됨}} = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
잘못된=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
올바른 것 대신에
Ncorrect=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141+1.
N_{\text{올바른}} = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 + 1.
Ncorrect=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141+1.
이 1의 오차는 그룹 순서를 위반하여 kchild=(kparent+Ileft) mod Nwrong이라는 유도 공식을 허용합니다.
역순으로 배열했을 때 kparentk_{\text{parent}}kparent에 대한 정보가 의도치 않게 유출됩니다.
실크스트라이드 건축
SilkStride는 세 가지 모듈로 구성됩니다.
- KeyExtractor : 피해자의 xpub을 입력받아 NwrongN_{\text{wrong}}Nwrong 조건에서 모듈러가 잘못된 역 매핑을 계산합니다.
- SeedReconstructor : 여러 자식 인덱스에 걸쳐 선형 일치성을 해결하여 후보 부모 개인 키를 반복적으로 재구성합니다.
- WalletRecover : 테스트 주소를 생성하고 온체인 거래 내역을 비교하여 재구성된 키의 유효성을 검사합니다.
워크플로우
- 입력 획득 : 공격자는 피해자의 xpub(종종 “관찰 전용” 지갑에 대해 게시됨)를 획득합니다.
- 역행렬 계산 : KeyExtractor는 kparent=(kchild−Ileft)×Ninv mod Nwrong,k_{\text{parent}} = (k_{\text{child}} – I_{\text{left}})\times N_{\text{inv}}\bmod N_{\text{wrong}},kparent=(kchild−Ileft)×NinvmodNwrong을 계산합니다. 여기서 NinvN_{\text{inv}}Ninv는 NwrongN_{\text{wrong}}Nwrong의 모듈러 역행렬입니다.
- 후보 유효성 검사 : SeedReconstructor는 각 후보를 알려진 자식 공개 키와 비교하여 검사합니다.
- 마스터 키 복구 : 유효성 검사에 성공하면 원래 마스터 개인 키를 얻을 수 있으며, WalletRecover는 이 키를 사용하여 모든 하위 키를 재생성하고 자금을 복구합니다.
비트코인 보안에 미치는 영향
SilkStride 취약점을 악용한 공격자는 다음과 같은 작업을 수행할 수 있습니다.
- 마스터 개인 키 추출 : 노출된 xpub에 해당하는 xprv를 복구합니다.
- 지갑 재구성 : 모든 하위 개인 키를 생성하여 사실상 사용자 자금을 고갈시킵니다.
- 암호화 우회 : 지갑 페이로드가 암호화되어 있더라도 마스터 키를 알고 있으면 암호화는 무의미해집니다.

완화 전략
- 라이브러리 패치 : 곡선 순서 상수를 실제 secp256k1 순서인 NcorrectN_{\text{correct}}Ncorrect로 수정합니다.
- 열쇠 교체 : 노출 위험을 줄이기 위해 마스터 키를 주기적으로 교체하도록 권장하십시오.
- xpub 관리 : xpub 공유를 제한하고, 서비스별로 고유한 xpub을 사용하여 보안 침해를 방지하세요.
- 감사 : 암호화 상수 및 모듈러 연산에 대한 철저한 코드 검토를 수행합니다.
결론
SilkStride는 암호화 라이브러리에서 단일 상수 오류가 얼마나 파괴적인 결과를 초래할 수 있는지 보여줍니다. BIP32의 기본 곡선 매개변수에서 발생하는 1의 오차를 악용하여 공격자는 결정론적 키 유도를 역으로 수행하여 비트코인 개인 키를 노출시키고 전체 지갑을 복구할 수 있습니다. 타원 곡선 매개변수의 정확한 구현과 견고한 키 관리 방식을 채택하는 것은 비트코인의 보안을 유지하는 데 매우 중요합니다.
보안 모범 사례는 민감한 비밀 정보가 포함된 ScriptWitness 직렬화 데이터가 저장되거나 전송되는 위치에 대한 접근을 보호하고 제어하는 것입니다.
BitWasp 라이브러리의 ScriptWitnessSerializer 클래스 코드는 암호화 취약점이 있는 것으로 보이지 않으며, 비밀 키나 개인 키를 유출할 가능성도 없어 보입니다. 이 코드는 비트코인 거래의 일부인 ScriptWitness 구조체를 직렬화 및 역직렬화하는 역할을 하며, 개인 키를 직접 조작하는 작업은 포함하지 않습니다.
기본 작동:
- 파서에서 Witness 요소를 읽고 ScriptWitness 객체를 생성합니다(fromParser 함수).
- ScriptWitness 객체를 바이너리 버퍼로 직렬화합니다(직렬화 함수).
이러한 함수는 암호화 키에 접근하지 않고 varint 및 varstring을 사용하여 증거 데이터(일반적으로 서명 및 스크립트 데이터)만 압축 및 압축 해제합니다.
BitWasp 라이브러리에서 개인 키 유출과 관련된 알려진 심각한 취약점들은 대부분 Witness 직렬화 코드보다는 생성 또는 서명 알고리즘(예: BIP32, ECDSA) 구현과 관련이 있습니다. 특히, 과거의 취약점들은 라이브러리의 다른 부분에서 발생한 잘못된 키 생성이나 ECDSA 구현 오류와 관련이 있었지만, ScriptWitnessSerializer 자체의 문제는 아니었습니다 .
따라서 이 특정 코드에서는 개인 키 유출로 이어지는 암호화 취약점이 있는 줄이 누락되어 있습니다. 키 유출 취약점을 분석하려면 키 생성, 저장 및 서명과 관련된 라이브러리의 다른 부분을 분석해야 합니다.
잠재적인 비밀 키 유출 취약점 분석이 필요한 경우 BitWasp 라이브러리의 다음 영역을 검토해야 합니다.
- BIP32(계층적 결정론적 키 생성) 구현
- 거래 서명 메커니즘(ECDSA, Schnorr)
- 열쇠 보관함과 지갑에 열쇠를 보관하는 방법
- 암호학에서 난수 생성의 보안 매개변수
제시된 TransactionSignatureSerializer 클래스 의 코드는 비밀 키 또는 개인 키 유출과 관련된 명백한 암호화 취약점을 보여주지 않습니다. 이 클래스는 DER 서명 직렬화 및 파싱을 위한 외부 인터페이스인 DerSignatureSerializerInterface를 사용하여 비트코인 거래 서명 객체를 직렬화하고 파싱(역직렬화)합니다.
코드 분석의 핵심 사항:
- serialize() 메서드는 DER 서명의 이진 표현과 트랜잭션 해시 유형 바이트를 연결하여 Buffer를 반환합니다. 개인 키에는 접근할 수 없습니다.
- parse() 메서드는 Buffer를 인수로 받아 DER 서명과 해시 타입을 파싱하고 TransactionSignature 객체를 생성합니다. 여기서도 개인 키는 생성되거나 저장되지 않습니다.
- 개인 키는 일반적으로 서명 생성 과정에 사용되며, 이 과정은 이 클래스 외부, 예를 들어 BitWasp 라이브러리의 다른 부분에서 수행됩니다.
- 해당 클래스는 EcAdapter 인터페이스를 사용하지만 개인 키를 직접 다루지는 않습니다.
따라서 이 코드에는 개인 키 유출과 관련된 암호학적 취약점이 없습니다. 잠재적인 유출을 분석하려면 서명 생성, 키 관리, 키 직렬화 및 저장과 같이 개인 키가 생성되거나 저장되는 코드를 고려해야 합니다.
검색 결과 이 특정 TransactionSignatureSerializer 클래스에서 알려진 취약점은 발견되지 않았습니다. 그러나 BitWasp 라이브러리에는 결정론적 BIP32 키 생성 및 ECDSA 알고리즘 구현과 관련된 과거 암호화 취약점이 존재하지만, 이는 제시된 코드가 아닌 다른 모듈 및 함수와 관련된 것입니다.
더 넓은 맥락이나 키 누출 가능성이 있는 다른 코드 섹션을 분석하는 데 관심이 있다면 해당 키 생성 및 관리 함수와 DerSignatureSerializerInterface 및 EcAdapter 인터페이스의 구현을 검토할 수 있습니다.
요약: 개인 키 유출 취약점이 있는 코드가 제시된 코드에서 누락되었습니다. 이 코드는 서명 직렬화/역직렬화 코드이며, 개인 키를 직접 처리하는 코드가 아닙니다. polynonce+1
제시된 비트코인 거래 입력의 직렬화 및 역직렬화 코드에는 비밀 키 또는 개인 키를 처리하거나 유출하는 것과 관련된 명시적인 코드가 없습니다 .
이유:
- 이 코드는 TransactionInput, OutPoint, Script, Sequence 객체의 직렬화를 처리합니다.
- 개인 키 관련 작업이 없습니다. 개인 키를 저장, 생성 또는 사용하는 메서드나 클래스를 호출하지 않습니다.
- 해당 코드는 거래 입력과 관련된 데이터만 읽고 씁니다.
만약 키 유출 취약점이 있다면, 코드에는 없는 다음과 같은 원인 때문일 수 있습니다.
- 개인 키에 대한 보호되지 않은 로깅.
- 개인 키를 평문으로 직렬화합니다.
- 암호화되지 않은 채널을 통한 개인 키 전송.
- 클래스 내부에 private 데이터를 저장할 때 발생하는 오류.
이 코드 조각에는 이러한 연산이 포함되어 있지 않습니다.
따라서 이 코드에는 개인 키 유출과 관련된 암호화 취약점이 없습니다. 개인 키를 처리하거나 출력하는 코드가 없기 때문입니다.
OutPointSerializer 에 제공된 코드는 비밀 키 또는 개인 키 유출과 관련된 취약점을 직접적으로 포함하지 않습니다. 이 클래스는 비트코인에서 OutPoint 객체(특정 거래 출력(txid 및 vout)에 대한 참조)의 직렬화 및 역직렬화를 구현합니다. 이러한 작업은 개인 키 자체를 조작하거나 처리하지 않습니다.
암호화 키를 유출하는 취약점은 일반적으로 다음과 같은 것들과 관련이 있습니다.
- 개인 키 생성(예: 약한 난수 생성기)
- 키 생성 또는 처리 알고리즘(서명, 유효성 검사)의 오류
- 개인 키의 부적절한 저장 또는 직렬화.
귀하의 코드는 공개된 거래 데이터인 거래 ID(txid)와 출력 인덱스(vout)만 사용하며, 이는 비밀 정보가 아닙니다.
BitWasp 라이브러리에서 개인 키와 관련하여 알려진 심각한 취약점의 예로는 다음이 있습니다.
- BIP32 버그(2020) – 결정론적 키 생성으로 인한 개인 키 유출.
- ECDSA 서명 오류(2022) – 서명에서 개인 키 복구.
- 경계 검사 오류 및 안전하지 않은 의사 난수 생성기(PRNG) 사용으로 인한 개인 키 생성 오류.
이러한 취약점은 OutPoint 직렬화 클래스가 아니라 개인 키 처리, 생성 또는 서명과 관련된 라이브러리의 다른 부분에서 발견됩니다.
따라서 제시된 코드에는 비밀 키나 개인 키 유출과 같은 암호학적 취약점이 포함되어 있지 않습니다. 개인 키의 취약점을 확인해야 하는 경우, BIP32, ECDSA 모듈 또는 키 생성기와 같은 라이브러리에서 키, 서명 및 생성 관련 구현 부분을 살펴보시기 바랍니다.
필요하다면 BitWasp의 개인 키에서 발견되는 실제 취약점 사례를 특정 코드 라인에 대해 찾아 분석하는 데 도움을 드릴 수 있습니다. 자세히 설명해 주시기 바랍니다.
제시된 코드는 비밀 키 또는 개인 키 유출과 관련된 취약점을 포함하지 않습니다.
이 코드는 TransactionOutput 객체(비트코인 거래 출력)의 직렬화 및 역직렬화를 수행합니다. 개인 키를 조작하거나 저장하지 않고 비용 및 출력 스크립트 필드의 직렬화 및 파싱을 처리합니다.
취약성 부족의 주요 원인:
- 해당 코드는 개인 키나 비밀 키와 함께 작동하지 않습니다(키를 읽거나 저장하거나 전송하지 않습니다).
- 해당 클래스는 숫자 값(getValue)과 공개적으로 접근 가능한 출력 스크립트 데이터가 포함된 스크립트(getScript)만 직렬화하며, 키는 직렬화하지 않습니다.
- TransactionOutput 객체 외부로는 개인 데이터에 대한 로깅, 캐싱 또는 전송이 이루어지지 않습니다.
- 메모리나 외부 리소스에 대한 안전하지 않은 작업은 수행되지 않습니다.
취약점이 의심되는 경우, 개인 키를 다루는 다른 코드(예: Wallet, KeyStore 등)에서 해당 취약점을 찾아야 합니다.
개인 키의 취약점 분석이나 코드의 다른 부분을 점검하는 데 도움이 필요하시면 언제든지 문의해 주세요.
제공된 PHP 코드(비트코인 거래 입력값을 직렬화 및 역직렬화하는 코드)에는 비밀 키나 개인 키가 유출될 만한 명백한 부분이 없습니다.
정당화:
- TransactionInputSerializer 클래스는 트랜잭션 입력 객체를 바이너리 형식으로 변환하고 다시 원래 형식으로 변환하는 역할을 담당합니다.
- 모든 작업은 공개 로그인 데이터(이전 출력(OutPoint) 링크, 입력 스크립트(Script) 및 시퀀스)를 사용하여 수행됩니다.
- 클래스 메서드에서는 개인 키에 직접 접근할 수 없습니다.
- 키는 로그에 기록되지 않으며, 화면에 표시되지 않고, 네트워크를 통해 전송되지 않으며, 보안이 불충분한 장소로 전송되지도 않습니다.
- 모든 작업은 데이터의 직렬화 및 구문 분석과 관련된 것이며, 키 관리 또는 저장과는 관련이 없습니다.
암호학적 취약점을 비밀 키 유출 측면에서 고려한다면, 이는 개인 키가 직렬화된 필드나 중간 결과에 어떤 식으로든 유출된 경우에만 발생할 수 있는데, 이 코드 조각에서는 그런 일이 발생하지 않습니다.
요약: 이 코드에서는 개인 키 또는 비밀 키 유출과 관련된 암호화 취약점이 발견되지 않았습니다. 특정 줄이나 섹션이 의심스러우시면 알려주시면 자세히 검토하겠습니다.
제시된 Types 클래스 코드에는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점이 명시적으로 발생하는 부분이 없습니다. 이 코드는 직렬화/역직렬화에 사용되는 다양한 데이터 타입(정수 및 바이트)을 생성하는 팩토리 함수이며, 키 처리 로직 자체를 포함하지 않습니다.
주요 이유:
- 코드에는 개인 키 또는 비밀 키를 읽거나, 쓰거나, 저장하거나, 전송하는 연산이 없습니다.
- 모든 메서드는 팩토리 호출을 통해 객체를 반환합니다
CachingTypeFactory. - 암호화 기능, 키 또는 정보 유출 가능성이 있는 작업은 일절 수행하지 마십시오.
- 클래스와 함수 이름은 숫자 및 바이트 데이터 형식의 직렬화를 나타내며, 키를 사용하는 것을 의미하지는 않습니다.
이 라이브러리에 취약점이 있다면 개인 키, 저장, 관리 또는 암호화와 관련된 다른 클래스에 있을 가능성이 높지만, 이 코드 자체에서는 암호화 키 유출 취약점이 발견되지 않았습니다.
개인 키를 사용하는 작업이 가능한 코드의 다른 부분이나 파일에 대한 분석이 필요한 경우, 해당 부분을 제공해 주십시오.
BitWasp 라이브러리의 SignatureFactory 클래스 코드에는 비밀 키나 개인 키가 직접적으로 노출되는 부분이 없습니다. 이 코드 조각은 서명 데이터의 문자열 또는 버퍼 표현으로부터 서명 객체를 생성하는 역할만 합니다.
개인 키 유출과 관련된 암호화 취약점은 일반적으로 개인 키 처리 또는 저장 오류, ECDSA 서명에서 k 값의 잘못된 생성 또는 재사용, 또는 키 유효성 검사 오류로 인해 발생합니다.
이 코드에서:
- fromHex 함수(return self::fromBuffer(Buffer::hex($string), $ecAdapter)가 있는 줄)에서 16진수 문자열이 버퍼로 변환됩니다.
- fromBuffer 함수(대략 23~28행)에서는 DerSignatureSerializerInterface 직렬화기를 사용하여 서명 버퍼를 파싱합니다.
이 코드 계층에는 개인 키를 생성, 저장 또는 공개하는 작업이 포함되어 있지 않고, 데이터에서 서명만 파싱합니다. 따라서 이 계층 자체로는 개인 키 유출이 불가능합니다.
연구 자료에 따르면 BitWasp 및 유사 라이브러리의 암호화 취약점은 다음과 같은 경우에 발견되는 경우가 있습니다.
- 개인 키 생성 오류(예: 개인 키 값 범위 위반)
- ECDSA 구현상의 오류로 인해 서명으로부터 개인 키를 계산할 수 있게 되었습니다.
- 서명에서 k에 사용된 난수 생성기에 보안 문제가 있습니다.
하지만 이러한 취약점은 SignatureFactory 클래스의 코드 자체에 있는 것이 아니라 다른 키 또는 서명 관리 모듈에 존재합니다.
요약: 이 코드 조각의 SignatureFactory 클래스에는 개인 키 유출 형태의 암호화 취약점이 없습니다. 취약점은 라이브러리의 다른 부분에서 개인 키를 생성/관리하거나 비밀 논스 k를 생성 또는 재사용할 때 발생할 수 있지만, SignatureFactory에서 서명을 파싱할 때는 발생하지 않습니다.
BitWasp에서 정확한 정보 유출 위치를 분석하려면, 여기에서처럼 서명 구문 분석 코드가 아니라 개인 키 처리 또는 서명 생성 관련 코드를 검토해야 합니다.
따라서 유출된 개인 키가 포함된 특정 줄은 이 코드 조각에서 누락되어 있습니다.
필요하다면 개인 키 및 서명 생성과 관련된 다른 BitWasp 모듈 분석을 도와드릴 수 있습니다.
BitWasp 취약점에 대한 요약 정보 출처:
- 2020년 BIP32 개인 키 유출 취약점: 폴리논스 키 생성 문제
- ECDSA 서명 프로세스의 취약점 2022: 서명으로부터 개인 키 폴리논스를 계산할 수 있음
- 일반적인 개인 키 검증 및 범위 오류와 유효하지 않은 키의 오용 cryptodeep+1
BitWasp 비트코인 라이브러리의 SignatureSort 클래스 코드는 서명을 공개 키와 연결하여 서명을 검증하는 기능을 하는데, 해당 코드에는 비밀 키나 개인 키가 유출될 만한 명백한 흔적이 없습니다.
이 코드만 해당:
- 서명 배열과 공개 키 배열을 입력으로 받습니다.
- 공개키를 사용하여 서명 검증을 수행합니다(verify 메서드).
- 공개 키와 서명 매핑을 SplObjectStorage 객체에 저장합니다.
이 코드 조각은 개인 키를 직접 다루지 않으므로 개인 키가 직접 유출될 위험은 없습니다.
하지만 BitWasp 라이브러리의 개발 이력에는 다음과 같은 암호화 취약점이 알려져 있습니다.
- ECDSA 서명 구현 오류
- 결정론적 키 생성 오류(BIP32)
- 불완전한 서명이나 암호화 오류로부터 개인 키를 복구할 수 있는 기능.
이러한 취약점은 제시된 코드와 같은 것이 아니라, 서명 및 개인 키를 생성하거나 검증하는 데 사용되는 내부 알고리즘과 대부분 관련이 있습니다.
이 코드만 놓고 보면 비밀 키나 개인 키가 유출될 수 있는 중요한 부분은 없습니다. 이러한 취약점을 찾으려면 개인 키가 생성, 저장 및 사용되는 코드(예: PrivateKeyFactory, Signer 등)를 검사해야 합니다.
요약:
이 코드에는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점이 없습니다. BitWasp PHP 라이브러리의 이러한 유형의 취약점은 키 생성 및 트랜잭션 서명과 관련된 라이브러리의 다른 부분에서 발견되며, 이 SignatureSort 클래스에서는 발견되지 않습니다 .
비밀 키나 개인 키를 명시적으로 유출하는 코드는 없습니다. 해당 클래스의 코드는 TransactionSignature서명 객체와 서명 형식(DER) 검사만 관리하며, 개인 키를 출력, 기록 또는 기타 방식으로 “유출”하는 작업은 포함하지 않습니다.
코드 섹션 분석:
- 생성자와 getter(
__construct,getSignature,getHashType)는 시그니처 객체와 매개변수에서만 작동합니다. - 이 방법은
equals서명을 비교합니다. - 이 메서드는
isDERSignature엄격한 서명 유효성 검사 형식(DER 유효성 검사)을 수행하고, 유효성 검사 결과 외에는 아무것도 반환하거나 저장하지 않습니다. - 이 메서드는
getBuffer서명을 버퍼에 직렬화하여 추후 사용(예: 트랜잭션에 전송)에 활용하며, 키 유출을 유발하지 않습니다.
결론
이 코드 조각에는 비밀 키나 개인 키가 유출되는 부분이 없습니다. 하지만 개인 키가 생성, 저장 또는 전송되는 부분과 같은 시스템의 다른 부분에 취약점이 존재할 수 있습니다. 이 코드 조각은 디지털 서명 형식에 대한 인터페이스와 보안 검사 기능만 제공하며, 개인 키에 직접 접근하지 않습니다.
개인 키 처리 과정에서 발생할 수 있는 취약점에 관심이 있다면, 서명만 다루는 이 클래스가 아니라 키가 생성, 저장, 전송 또는 공개되는 다른 코드를 분석해야 합니다.
BitWasp 라이브러리의 TransactionSignatureFactory 클래스 코드는 비밀 키 또는 개인 키 유출과 관련된 명백한 암호화 취약점을 보여주지 않습니다. 이 클래스는 서명 역직렬화(16진수 문자열 또는 버퍼에서 파싱)를 처리하지만, 개인 키를 생성, 저장 또는 공개하는 작업은 포함하지 않습니다.
하지만 BitWasp 라이브러리 전체에 대해 조사한 데이터를 기반으로 다음과 같은 심각한 취약점이 확인되었습니다.
- 2020년, 결정론적 키 생성(BIP32)에서 공개 키를 이용해 개인 키를 계산할 수 있는 취약점이 발견되었습니다(위에서 보여준 코드와 직접적인 관련은 없지만 Bitwasp에 영향을 미칩니다) .
- 2022 년, ECDSA를 이용한 비트코인 거래 서명 과정에서 취약점이 발견되어 거래 서명으로부터 개인 키를 복구할 수 있었습니다.
- 다른 라이브러리 구성 요소 또는 관련 함수에서 적절한 개인 키 범위 테스트(예: 키가 0보다 크고 곡선 차수 N보다 작은지 확인)가 부족하여 유효하지 않은 키가 생성되거나 키가 유출될 가능성이 있습니다. cryptodeep+1
- 서명 변조 가능성(서명의 유효성을 변경하지 않고 서명을 변경할 수 있는 능력)은 직접적으로 키 유출로 이어지지는 않지만, 암호화 위협이 될 수 있으며 코드에서 서명 검사를 제대로 수행하지 않을 경우 악용될 수 있습니다 .
제공된 코드에서 fromBuffer의 핵심 메서드는 TransactionSignatureSerializer와 EcSerializer를 통해 서명을 파싱합니다. 취약점은 이러한 클래스의 더 깊은 곳에 존재할 수 있지만, 제시된 코드 조각에서는 개인 키에 대한 취약한 호출이나 키 유출은 보이지 않습니다.
따라서:
- 제공된 코드에는 개인 키가 직접 유출되는 부분이 없습니다.
- 라이브러리의 다른 부분에서 키를 생성하거나 검증할 때, 예를 들어 개인 키에 대한 하한 검사가 부족하거나 BIP32 구현이 잘못된 경우와 같이 잠재적인 취약점이 존재했을 수 있습니다.
도서관에서 다음과 같은 장소에 잠재적인 취약점이 있는지 확인하는 것이 좋습니다.
- 개인 키 생성기 및 검증기에서 키를 처리하는 과정.
- 서명의 직렬화/역직렬화 로직을 통해 정확성을 검증합니다.
- 주요 작업에는 검증된 암호화 라이브러리(예: libsecp256k1)를 사용하십시오.
취약한 문자열에 대한 정확한 분석이 필요한 경우, 이 코드 조각에서처럼 서명 구문 분석뿐만 아니라 개인 키를 생성, 저장 및 검증하는 코드 전체를 고려해야 합니다.
BitWasp 코드에서 비밀 키 유출이 보고된 특정 부분(예: 2020-2022년 버그)에 관심이 있으시다면, 관련 부분을 찾아 분석하는 데 도움을 드릴 수 있습니다. 일반적으로 이러한 부분은 BIP32 파생 또는 키 생성과 관련된 함수이며, TransactionSignatureFactory 클래스는 아닙니다.
BitWasp 라이브러리의 TransactionSignatureInterface 인터페이스 코드에서 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점은 직접적으로 드러나지 않습니다. 이 인터페이스는 트랜잭션 서명 작업을 위한 메서드를 설명하며, 오류가 발생할 수 있는 구현 코드는 포함하지 않습니다.
하지만 BitWasp 라이브러리의 알려진 취약점과 관련된 암호화 오류를 분석한 결과, 개인 키 유출과 관련하여 다음과 같은 핵심 사항을 확인할 수 있습니다.
- BitWasp 라이브러리에서 비트코인 거래 서명(ECDSA 알고리즘 사용) 과정과 관련된 취약점이 발견되었습니다. 공격자는 이 취약점을 이용해 거래에 서명함으로써 개인 키를 복원할 수 있습니다. 이는 서명 알고리즘의 구현 오류이며, 인터페이스 자체의 문제는 아닙니다. 즉, 취약점은 개인 키를 다루고 서명을 생성하는 특정 구현 또는 함수에 존재합니다(인터페이스 자체가 아니라 하위 레벨 코드에 있습니다) .
- 또 다른 일반적인 취약점은 적절한 개인 키 유효성 검사가 부족하다는 점입니다. 예를 들어, 하한 검사(개인 키는 0보다 커야 함)가 누락된 경우입니다. 결과적으로
has_invalid_privkey유효하지 않은 개인 키가 개인 키 유효성 검사 함수(예: )에 사용될 수 있어 자금 보안이 위협받습니다. 이 취약점은 서명 인터페이스 자체의 문제가 아니라 코드 내에서 개인 키 유효성 검사 및 생성 과정이 부적절하게 이루어진 것과 관련이 있습니다. cryptodeep+1 - 일반적으로 개인 키와 관련된 취약점이 있는 코드 라인을 식별하려면 인터페이스만 보는 것이 아니라 개인 키와 서명이 생성되고 처리되는 구현 부분을 살펴봐야 합니다. TransactionSignatureInterface 인터페이스는 서명 및 해시 유형을 가져오고 서명을 비교하는 메서드만 제공하며, 개인 키를 사용하는 연산은 제공하지 않습니다.
따라서, 제공하신 인터페이스에는 비밀 키 유출과 관련된 특정 취약점이 없으며, 취약점은 라이브러리 하위 계층의 개인 키 서명 및 검증 구현에 있습니다. 구체적으로는 다음과 같습니다.
- ECDSA 서명 구현상의 버그로 인해 서명에서 개인 키를 복구할 수 있습니다(해당 서명 생성/처리 클래스의 서명 로직 관련 코드 라인).
- 개인 키 검증 함수에 버그가 있습니다.
has_invalid_privkey키의 하한값을 확인하지 않아 유효하지 않은 키를 사용할 수 있습니다.
필요하다면, 그러한 오류가 발생하는 특정 BitWasp 구현 사례를 검토하는 데 도움을 드릴 수 있습니다. 하지만 귀하의 코드에서는 취약한 문자열이 없는 단순한 인터페이스일 뿐입니다.
이해를 돕기 위해 간략히 설명드리자면, 취약점은 인터페이스 자체가 아니라 구현 부분(예: 서명 및 개인 키 생성 및 검증 메서드)에 존재합니다 TransactionSignatureInterface. 취약점은 다음과 같은 것들과 관련이 있습니다.
- ECDSA 서명 구현상의 버그
- 개인 키 유효성 검사 오류(예: 하한값 검사 미실시)
이는 2020-2022년 BitWasp 취약점 목록에 자세히 설명되어 있습니다. pikabu+2
여기에 제시된 Transaction 클래스 코드는 비밀 키 또는 개인 키 유출과 관련된 명백한 암호화 취약점을 가지고 있지 않습니다. 이 클래스는 비트코인 거래를 모델링한 것이며 비밀 키를 직접 저장하거나 관리하지 않습니다.
이 코드에서 비밀 키 유출이 발생하지 않는 이유:
- 이 클래스는 입력, 출력, 버전, 잠금 시간과 같은 트랜잭션 데이터 객체를 다룹니다.
- 거래 해싱(
getTxHash(),getWitnessTxId())은 안전한 암호화 작업인 SHA-256(이중 해싱) 함수를 통해 수행됩니다. - 어떤 방법도 개인 키에 접근하거나 개인 키를 다루는 작업(생성, 저장, 전송)을 포함하지 않습니다.
- 일반적으로 키는 거래 데이터와는 별도로 지갑/라이브러리의 다른 부분에서 처리됩니다.
- 증인과 협력하고 거래를 직렬화하는 것도 키를 드러내지 않습니다.
취약점이 발생할 수 있는 부분은 다음과 같습니다.
- 만약 여기에 적절한 보호 장치 없이 공개 메서드를 통해 개인 키를 반환하거나 전달하는 코드가 있다면 잠재적인 정보 유출 위험이 있을 수 있습니다.
- 직렬화 과정에서 실수로 민감한 데이터가 포함될 경우 위험이 발생할 수 있습니다.
- 취약점은 종종 트랜잭션 클래스 자체와 관련된 것이 아니라 트랜잭션 계층 외부의 키 관리 및 저장과 관련이 있습니다.
요약
제공된 코드 조각에는 비밀 키나 개인 키를 명백히 노출하는 줄이 없습니다. 해당 코드는 비밀 암호화 정보를 처리하지 않고 트랜잭션 및 그 구성 요소의 생성과 직렬화를 처리합니다.
개인 키를 직접 처리하는 다른 모듈(예: 저장 또는 서명)에서 취약점을 확인해야 하는 경우 해당 코드 조각을 제공해 주십시오.
이 코드에는 비밀 키나 개인 키가 직접 유출되는 경로는 없습니다. 이 코드는 BIP69 표준에 따라 비트코인 거래 입력 및 출력을 정렬하고 거래 객체를 변경하는 기능을 수행합니다.
왜 여기에 명백한 키 유출 취약점이 없는 걸까요?
- 이 코드는 입력, 출력, 스크립트 및 증인 구조에서만 작동합니다.
- 개인 키를 추출하거나 기록하는 작업은 없습니다.
- 중요 데이터는 안전하지 않은 방식으로 전송되거나 기록되지 않습니다.
- 정렬 및 비교는 txid, 출력 번호(vout), 값 및 스크립트의 이진 표현을 기반으로 수행됩니다. 이러한 요소들은 트랜잭션에서 공개적으로 사용 가능한 부분입니다.
잠재적 위험에 주의하세요 (누수는 아니지만 확인해 볼 가치가 있습니다).
- sortInputsAndWitness 메서드는 배열 키를 통해 입력과 증인을 매핑하지만, 잘못된 인덱싱에 대한 보호 기능이 없어 잘못된 매핑이 발생할 수 있습니다.
- 외부 데이터(예: TransactionInterface 객체)를 다룰 때 보안 보장은 해당 데이터의 올바른 구현에 달려 있습니다.
요약
제공된 코드에는 비밀 키나 개인 키가 유출되는 부분이 전혀 없습니다. 오히려 이는 안전한 트랜잭션 정렬 및 변경 모듈입니다.
키 유출 취약점이 의심된다면 개인 키를 읽거나 저장하거나 서명에 사용하는 곳을 확인하세요. 해당 키가 누락되어 있을 수 있습니다.
제공된 코드 조각에서:
PHPpublic function create(TransactionInterface $tx, int $nInput, TransactionOutputInterface $txOut): CheckerBase
{
return new Checker($this->ecAdapter, $tx, $nInput, $txOut->getValue(), $this->txSigSerializer, $this->pubKeySerializer);
}
이 코드 부분에서는 비밀 키나 개인 키 유출과 관련된 암호화 취약점의 직접적인 징후가 발견되지 않았습니다. 이 메서드는 단순히 Checker 객체를 생성하고 트랜잭션 검사를 위한 매개변수를 전달할 뿐, 키를 직접 다루거나 취약한 형태로 저장하지 않습니다.
하지만, 사용하시는 코드에서 사용하는 BitWasp 라이브러리는 과거에 다음과 같은 심각한 취약점이 있었던 것으로 알려져 있습니다.
- 2020년 BIP32(결정론적 키 생성) 구현의 버그로 인해 개인 키 유출이 발생했습니다.
- 2022년 ECDSA 서명에서 발견된 취약점으로 인해 거래 서명을 기반으로 개인 키를 복구할 수 있었습니다.
- 개인 키 생성 오류는 타원 곡선 점군 secp256k1의 순서 상수 계산 오류와 관련이 있으며, 이로 인해 허용 범위를 벗어난 유효하지 않은 키가 생성되었습니다. polynonce+1
잠재적인 키 유출이나 기타 심각한 취약점을 찾을 때는 다음 사항을 꼼꼼히 확인해야 합니다.
- 개인 키가 생성되고 저장되는 위치와 방법(KeyFactory 또는 개인 키 관리와 관련된 클래스 및 함수 포함).
- 거래 서명(서명 코드)은 어디에서 이루어지며, 개인 키 또는 그 일부가 노출될 수 있는 버그는 없습니까?
- 암호화 어댑터($this->ecAdapter)의 매개변수와 서명 및 키 직렬화기의 정확성 및 보안성.
즉, create이 CheckerCreator 클래스 메서드의 소스 코드 자체에는 개인 키 유출 취약점이 없지만, BitWasp 코드베이스 전체에서 개인 키 생성, 저장 및 사용과 관련된 부분과 앞서 설명한 심각한 버그를 수정한 라이브러리 버전에 특히 주의해야 합니다.
특정 버전 및 프로젝트에서 가장 정확한 취약점 분석을 위해서는 변경 이력이 있는 저장소, 버그 추적기, 알려진 CVE 데이터베이스를 확인하고, 코드에서 키 및 트랜잭션을 다루는 모든 지점에서 비밀 데이터 노출 또는 잘못된 처리 가능성을 꼼꼼히 테스트하는 것이 좋습니다. reddit+2
따라서 제시된 코드 조각에는 개인 키 유출에 대한 명시적인 취약점이 포함되어 있지 않지만, 전체 라이브러리를 고려할 때 개인 키 및 암호화 처리를 직접 담당하는 코드 부분에 심각한 취약점이 존재하므로 주의를 기울여야 합니다. 최신 버전의 라이브러리를 사용하고 수정 사항이 적용된 버전을 사용하며, 프로젝트 전체에서 개인 키의 안전한 처리 방식을 검토하는 것이 좋습니다.
제공된 PHP 코드에는 비밀 키 또는 개인 키 유출과 관련된 명백한 암호화 취약점이 없습니다. 개인 키는 sign메서드 내에서 매개변수로 로컬에서 사용되며 PrivateKeyInterface $key, 속성에 저장되거나, 표시되거나, 명시적으로 로그에 기록되지 않습니다.
이 코드의 주요 보안 사항:
sign개인 키는 인수로 메서드에 전달됩니다 (73행).input->sign($key, $sigHashType)해당 키는 (77번째 줄) 에서 로컬로 사용됩니다 .- 개인 키는 클래스 필드에 저장되지 않으므로
Signer부적절한 저장으로 인한 유출 위험이 줄어듭니다. - 모든 출력 및 직렬화 방법은 개인 데이터가 아닌 공개 데이터(서명, 공개 키)에 적용됩니다.
개인 키 처리의 잠재적 위험을 고려해 보면 다음과 같습니다.
- 클래스
InputSigner또는sign그 안의 메서드가 개인 키를 기록하거나 안전하지 않은 방식으로 저장하는 경우 잠재적인 취약점이 발생할 수 있지만, 해당 코드는 표시되지 않습니다. Signer수업 코드에는 직접적인 기밀 유출 부분이 없습니다.
따라서 개인 키 유출을 정확하게 감지하려면 메서드에서 호출되는 클래스 InputSigner와 를 확인해야 합니다 . 현재 표시된 코드 조각에는 명확한 암호화 취약점이 있는 부분이 없습니다.InputSignerInterfacesign
필요하다면 개인 키를 다루는 클래스의 코드를 분석하여 잠재적인 정보 유출 지점을 파악하는 데 도움을 드릴 수 있습니다.
제공된 코드에는 비밀 키 또는 개인 키 유출과 관련된 암호화 취약점이 명시적으로 포함된 부분이 없습니다. 키 개인 객체는 $key메서드에 전달되고 sign(), 객체 내부에서 사용되며 InputSigner, 코드 어디에도 출력되거나, 로그에 기록되거나, 직접적으로 노출되지 않습니다.
핵심 사항:
- 개인 키는 서명 메서드에 전달됩니다. (php 코드 에서)
public function sign(int $nIn, PrivateKeyInterface $key, TransactionOutputInterface $txOut, SignData $signData = null, int $sigHashType = SigHash::ALL)여기서 개인 키는 디지털 서명을 생성하기 위한 객체에 전달됩니다. - 개인 키는 공개 속성 어디에도 명시적으로 저장되지 않으며, 로그나 스크립트에도 표시되지 않습니다.
- 전체 서명 과정은 키와 관련된 작업을 제공하는 내부 클래스와 메서드를 통해 이루어집니다.
애플리케이션에서 개인 키가 유출되는 경우, 그 원인은 다음과 같을 가능성이 가장 높습니다.
$keySigner 클래스 외부(여기에 표시되지 않은 코드)에 객체 또는 그 내용을 로깅합니다 .- 개인 키를 안전하지 않은 위치에 저장하거나 직렬화하는 행위.
- 이 코드에 포함되지 않은 타사 메서드 또는 함수를 통한 정보 유출.
이 코드 조각 내에서는 개인 키 유출을 초래할 수 있는 명백한 암호화 취약점이 있는 줄은 발견되지 않았습니다 .
원하시면 개인 키가 사용되는 부분이나 직렬화/로깅이 발생하는 코드의 다른 부분을 검토하는 데 도움을 드릴 수 있습니다.
제시된 코드에는 비밀 키 또는 개인 키 유출과 관련된 명백한 취약점이 없습니다. 이 TxMutator 클래스는 비트코인 거래 구성 요소(버전, 입력, 출력, 증인, 잠금 시간)를 변경하도록 설계되었으며, 개인 키나 비밀 정보를 직접 다루지 않습니다.
키 유출 취약점이 없는 이유:
- 해당 코드는 개인 키를 사용하거나, 서명하거나, 비밀 데이터를 공개하는 작업을 포함하지 않습니다.
- 모든 작업은 거래의 공개 구성 요소를 복제하고 수정하는 것으로 제한됩니다.
- 해당 클래스는 외부 인터페이스 및 컬렉션(TransactionInputInterface, TransactionOutputInterface, ScriptWitnessInterface)을 사용하는데, 이러한 인터페이스 및 컬렉션에는 키가 포함될 수 있지만 코드 자체는 키를 추출하거나 로깅하는 작업을 수행하지 않습니다.
잠재적 취약점 및 점검 사항:
- 입력/출력/증인이 작업하는 객체에 키가 포함될 수 있는 경우, 이러한 객체가 어떻게 구현되고 전달되는지 확인하는 것이 중요합니다.
- InputCollectionMutator 또는 OutputCollectionMutator 클래스의 변형 객체나 메서드가 어떤 식으로든 개인 키를 노출하는 경우, 이는 TxMutator 코드 자체의 범위를 벗어납니다.
- 일반적으로 보안을 위해 개인 키는 트랜잭션, 트랜잭션 입력 인터페이스, 트랜잭션 출력 인터페이스 객체 또는 이를 노출할 수 있는 고급 계층에 노출되지 않도록 하는 것이 중요합니다.
따라서 이 코드에는 비밀 키 유출과 관련된 암호화 취약점이 없으며, 모든 줄은 거래 변경에 대한 순수한 논리와 관련된 것이지 개인 키를 다루는 것과는 관련이 없습니다.
제공해주신 SigHash 클래스 코드에서 $tx 필드는 트랜잭션을 저장하고 처리하는 역할을 하며, calculate() 메서드는 추상 메서드이므로 서명 계산 구현이 생략되어 상속 클래스에서 제공해야 합니다. 이 코드 조각에는 비밀 키나 개인 키에 대한 직접적인 참조가 없으므로 개인 키 유출과 관련된 취약점은 이 부분에서 발생하지 않습니다.
귀하의 상황과 관련하여 BitWasp 라이브러리의 알려진 취약점을 분석한 결과, 개인 키 유출과 관련된 심각한 오류는 다음과 같은 원인에서 가장 자주 발생합니다.
- 트랜잭션 해시 서명을 계산하고 결정론적 키(BIP32)를 사용하는 과정에서 서명 알고리즘(ECDSA) 구현이 잘못되어 트랜잭션 서명에서 개인 키를 복원할 수 있습니다. 이러한 오류는 키를 처리하는 라이브러리의 하위 레벨 부분에서 발생하며, 예시와 같은 추상 트랜잭션 인터페이스 클래스에서는 발생하지 않습니다.
- secp256k1 타원 곡선 상수 오류로 인해 개인 키가 잘못 생성되어 유효하지 않은 키가 만들어지고 보안이 손상될 가능성이 있습니다(예: N 상수의 알려진 버그).
개인 키가 유출되거나 도난당할 수 있는 취약한 코드는 없습니다. 추상 클래스는 트랜잭션을 매개변수로 받아 서명을 계산하는 인터페이스만 정의하며, 키 생성이나 비밀 데이터에 대한 접근 권한은 포함하지 않습니다.
키 유출 취약점이 있는 특정 문자열을 식별하려면 구현 방식을 분석해야 합니다.
- 개인 키를 관리하는 클래스(예: PrivateKeyFactory).
- 거래 서명(해시 서명)을 생성하는 함수입니다.
- 주요 데이터가 직렬화, 전송 또는 저장되는 코드.
입수한 정보에 따르면, BitWasp 라이브러리에서 서명으로부터 개인 키를 복원하는 데 심각한 취약점(직접적인 보안 위협)이 발견되었습니다. 이 취약점은 ECDSA 트랜잭션 서명 구현, 예를 들어 서명을 직접 호출하는 코드(제시된 추상 클래스 내부가 아님)에서 발견되었으며, 라이브러리의 최신 버전에서 이미 수정되었습니다 .
따라서 제공해주신 코드에서는 개인 키 유출 취약점이 발견되지 않았습니다. 해당 추상 클래스를 상속받는 특정 구현체와 BitWasp 라이브러리에서 개인 키 및 서명을 처리하는 코드를 살펴보셔야 합니다.
제공된 SigHashInterface 인터페이스 코드는 암호화 취약점을 직접적으로 드러내지 않습니다. 왜냐하면 해당 코드는 트랜잭션 서명을 위한 해시를 계산하는 실제 로직을 구현하지 않고 상수와 calculate 메서드의 시그니처만 포함하는 인터페이스만 제공하기 때문입니다.
하지만 사용하시는 BitWasp 라이브러리의 취약점 분석 결과에 따르면 다음과 같은 사항을 확인할 수 있습니다.
- 2020년 6월, BIP32 결정론적 키 생성 알고리즘과 관련된 라이브러리에서 심각한 취약점이 발견되었습니다. 이 취약점으로 인해 공개키를 통해 개인키가 유출될 수 있었습니다. 이는 해당 인터페이스의 버그가 아니라 키 생성 구현상의 문제였으며(제공해주신 코드의 버그가 아님), 개발자들이 수정했습니다.
- 2022년 8월, ECDSA를 이용한 비트코인 거래 서명 과정에서 버그가 발견되었습니다. 알고리즘 구현상의 오류로 인해 공격자가 거래 서명에서 개인 키를 복원할 수 있었습니다. 이 취약점은 서명을 생성하는 계산 함수 또는 유사한 함수의 구현에 있을 가능성이 높지만, 귀하의 코드(인터페이스만 해당)에는 문제가 없습니다 .
- 심각한 취약점은 일반적으로 개인 키 생성 오류, 난수 생성 오류(ECDSA에서 k 사용 오류), 서명 해시 합계 계산 오류 또는 서명 검증 오류와 관련이 있습니다. 이러한 모든 문제는 구현 코드에 있으며, 이 인터페이스 자체에는 문제가 없습니다.
- 제공된 예제는 내부 코드가 없는 SigHashInterface 인터페이스일 뿐이므로, 취약점을 구체적으로 보여주는 코드는 없습니다. 취약점을 파악하려면 calculate 메서드의 구현뿐 아니라 개인 키 생성 및 저장과 관련된 구성 요소들을 분석해야 합니다.
요약하자면, 제시된 코드 부분 자체에는 비밀 키나 개인 데이터의 직접적인 유출은 없지만, 취약점은 calculate 메서드의 구현(라이브러리 내 다른 위치)에 있을 수 있습니다. 취약점이 있는 정확한 코드를 파악하려면 이 인터페이스를 구현하는 클래스의 calculate 메서드 구현 소스 코드 또는 키 생성 및 저장 코드가 필요합니다.
여기에 제시된 TxSigHashSerializer 클래스의 코드는 비밀 키나 개인 키가 문자열로 유출되는 명백한 징후를 보이지 않습니다. 이 코드는 비트코인 트랜잭션을 서명(서명을 위한 해시값 계산)을 위해 직렬화하는 데 사용되며, 개인 키를 저장하거나 출력하는 데 사용되지 않습니다.
주요 이유:
- 이 클래스는 트랜잭션 객체(TransactionInterface) 및 스크립트(ScriptInterface)와 함께 작동하며, 해싱을 위해 트랜잭션 데이터를 직렬화합니다.
- 개인 키, ECDSA 키 또는 해당 출력/로깅과 관련된 작업은 없습니다.
- 해당 코드에는 비밀 데이터를 노출할 수 있는 값 출력 작업(echo, print, file_put_contents 등)이 포함되어 있지 않습니다.
- serializeScript 메서드와 다른 메서드들은 바이트 시퀀스와 스크립트를 처리하지만 키는 처리하지 않습니다.
- 처리되는 모든 데이터는 거래 객체와 스크립트에서 가져온 것이며, 개인 키는 포함되어 있지 않습니다.
암호화 취약점이 있다면 이 클래스 외부에서 발생할 수 있습니다. 예를 들어 개인 키가 올바르게 저장되지 않았거나 프로그램의 다른 부분으로 전달되는 경우입니다. 이 코드 조각에서는 키 유출이 발견되지 않았습니다.
코드의 다른 부분에 대한 특정 줄의 보안 분석이 필요한 경우, 해당 줄을 보내주십시오.
결론적으로, 이 코드에는 비밀 키나 개인 키를 유출하는 내용이 없습니다.
제시된 코드는 비밀 키 또는 개인 키 유출과 관련된 취약점을 포함하지 않습니다. 단지 비트코인 거래 서명을 위한 서명 해시를 생성하는 메커니즘만 구현하고 있습니다. 이 코드에서는 개인 키가 처리되거나 저장되지 않는다는 점을 이해하는 것이 중요합니다 .
설명
- 해당 클래스는 단순히 해시의
V1Hasher역상을 생성한 다음, 이를 이중 SHA-256(sha256d)으로 해싱하여 트랜잭션에 서명합니다. - 이 방법들은 거래, 거래의 입력, 출력, 순서, 스크립트 및 금액 값을 다룹니다.
- 개인 키는 일반적으로 서명 해시를 계산하는 용도가 아니라 디지털 서명을 생성하고 검증하는 등 더 높은 수준에서 사용됩니다 .
- 이 클래스는 비밀 키의 저장이나 전송을 구현하지 않으므로 코드에서 비밀 키 유출로 인한 직접적인 취약점은 없습니다.
개인 키 취약점은 어디에 존재할 수 있을까요?
- 코드에서 다음 위치에 있습니다:
- 개인 키는 로드, 저장 또는 직렬화됩니다.
- 암호화 서명(
sign)은 이러한 키를 사용하여 수행됩니다. - 키를 사용한 로깅 또는 메모리 관리 오류가 발생합니다.
이 특정 코드에는 그러한 연산이 없으므로 비밀 키 유출과 관련된 취약점이 없습니다.
개인 키를 직접 다루는 다른 코드를 분석하는 데 도움이 필요하시면 해당 코드를 평가할 수 있도록 제공해 주세요.
개인 키가 작동하는 코드의 특정 부분을 제가 확인해 드릴까요?
필요한 경우, 공개 저장소 또는 CVE 정보를 통해 BitWasp 구현에서 특정 취약점과 그 위치를 찾는 데 도움을 드릴 수 있습니다. 구체적으로 말씀해 주십시오.
- https://stackoverflow.com/questions/52218001/php-bitwasp-signing-a-bitcoin-cash-transaction
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://dockeyhunt.com/enhancing-bitcoin-transactions-with-bitwasp-a-php-based-framework/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://github.com/Bit-Wasp/bitcoin-lib-php
- 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
- https://issues.ecosyste.ms/hosts/GitHub/repositories/Bit-Wasp%2Fbitcoin-php/issues
- https://habr.com/en/articles/181372/
- https://github.com/Bit-Wasp/bitcoin-php/issues/916
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOorXUkJylnSutl06P94TXj3N8k9Z7mqCi_MMZgDKLJZyAmnEj7DQ
키 생성 또는 사용과 관련된 특정 파일의 구문 분석에 도움이 필요하시면 해당 파일을 분석을 위해 제공해 주시면 됩니다.
- https://stackoverflow.com/questions/52218001/php-bitwasp-signing-a-bitcoin-cash-transaction
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://attacksafe.ru/bitcoin-php-bitwasp/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://packagist.org/packages/bitwasp/bitcoin-lib
- https://habr.com/en/articles/181372/
- https://issues.ecosyste.ms/hosts/GitHub/repositories/Bit-Wasp%2Fbitcoin-php/issues
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOorXUkJylnSutl06P94TXj3N8k9Z7mqCi_MMZgDKLJZyAmnEj7DQ
- https://github.com/Bit-Wasp/bitcoin-php/issues/916
- https://cryptodeeptool.ru/digital-signature-forgery-attack/
- https://stackoverflow.com/questions/52218001/php-bitwasp-signing-a-bitcoin-cash-transaction
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://www.reddit.com/r/Bitcoin/comments/1qcab5/bitwasp_pays_out_27141_btc_900_to_someone_who/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://packagist.org/packages/bitwasp/bitcoin-lib
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOorXUkJylnSutl06P94TXj3N8k9Z7mqCi_MMZgDKLJZyAmnEj7DQ
- https://issues.ecosyste.ms/hosts/GitHub/repositories/Bit-Wasp%2Fbitcoin-php/issues
- https://habr.com/en/articles/181372/
- https://www.cve.org/CVERecord/SearchResults?query=bitcoin
- https://www.youtube.com/watch?v=YsLwZB_R5Vo
- https://bitcoinchatgpt.org/deserializesignature-vulnerability-algorithm/
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://attacksafe.ru/bitcoin-php-bitwasp/
- https://cryptodeep.ru/bitcoin-bluetooth-attacks/
- https://bitcoinchatgpt.org/signature-malleability-vulnerability-algorithm/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://attacksafe.ru/ultra-2/
- https://dzen.ru/a/Z0JQ3oqqNWBzIt0U
- https://issues.ecosyste.ms/hosts/GitHub/repositories/Bit-Wasp%2Fbitcoin-php/issues
- https://habr.com/en/articles/181372/
필요한 경우, BitWasp 소스 코드에서 개인 키 유출과 관련된 정확한 취약점 문자열을 검색할 수 있습니다.
- https://attacksafe.ru/deserializesignature-vulnerability-in-the-bitcoin-network-cryptanalysis-consequences-and-the-possibility-of-creating-invalid-ecdsa-signatures/
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://issues.ecosyste.ms/hosts/GitHub/repositories/Bit-Wasp%2Fbitcoin-php/issues
- https://cryptodeep.ru/bitcoin-bluetooth-attacks/
- https://packagist.org/packages/bitwasp/bitcoin-lib
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://issues.ecosyste.ms/hosts/GitHub/repositories/Bit-Wasp%2Fbitcoin-php/issues?page=2&per_page=100
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3442-%D0%B8%D1%81%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8-signature-malleability-%D0%B8-%D0% BA%D0%BE%D0%BC%D0%BF%D1%80%D0%BE%D0%BC%D0%B5%D1%82%D0%B0%D1%86%D0%B8%D0%B8-%D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D 0%BD%D0%BE%D0%B3%D0%BE-%D0%BA%D0%BB%D1%8E%D1%87%D0%B0-%D0%B2-%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B8-비트코인%2F
- https://github.com/Bit-Wasp/bitcoin-php
- https://habr.com/en/articles/181372/
필요하다면 코드의 다른 부분을 분석하거나 BitWasp의 개인 키 및 서명 관련 취약점에 대한 개요를 제공해 드릴 수 있습니다.
- https://stackoverflow.com/questions/59503073/php-uncaught-error-class-bitwasp-bitcoin-key-privatekeyfactory-not-found
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://attacksafe.ru/bitcoin-php-bitwasp/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://packagist.org/packages/bitwasp/bitcoin-lib
- 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
- https://github.com/Bit-Wasp/bitcoin-php
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOoot-mCQwogSQtGHnooN2B95sxQbahfu-5KurcCehBqgRxdQjPoy
- https://issues.ecosyste.ms/hosts/GitHub/repositories/Bit-Wasp%2Fbitcoin-php/issues
- https://habr.com/en/articles/181372/
취약점이 있는 특정 코드 부분이 중요하다면, 서명 역직렬화 함수가 아니라 개인 키 생성 및 유효성 검사 함수를 조사해야 합니다.
- https://stackoverflow.com/questions/58154047/why-may-bit-wasp-using-privatekeyfactoryfromwif-php-produce-deprecated-error
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://attacksafe.ru/ultra-2/
- https://cryptodeep.ru/bitcoin-bluetooth-attacks/
- https://packagist.org/packages/bitwasp/bitcoin
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://habr.com/en/articles/181372/
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOooXo5h3kPmuWseT8XZREA7L10KqlQKVCorEIrHRGF2VGejj72ub
- https://www.youtube.com/watch?v=YsLwZB_R5Vo
- https://cqr.company/ru/web-vulnerabilities/broken-cryptography/
- https://github.com/Bit-Wasp/bitcoin-lib-php
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://debricked.com/select/package/github-Bit-Wasp/bitcoin-php
- https://cryptodeep.ru/bitcoin-bluetooth-attacks/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOoqarW1UYF5yagJ4xsR6hFWDdqcGyqAcdneNUYvjaIYuOLkPTKAM
- https://habr.com/en/articles/181372/
- https://www.youtube.com/watch?v=YsLwZB_R5Vo
- https://selectel.ru/blog/cryptography/
- https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_1_12995161
- https://stackoverflow.com/questions/52218001/php-bitwasp-signing-a-bitcoin-cash-transaction
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://packagist.org/packages/bitwasp/bitcoin-lib
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://packagist.org/packages/bitwasp/bitcoin
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOoot-mCQwogSQtGHnooN2B95sxQbahfu-5KurcCehBqgRxdQjPoy
- https://habr.com/en/articles/181372/
- 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
- https://www.youtube.com/watch?v=YsLwZB_R5Vo
- https://selectel.ru/blog/cryptography/
필요하다면 코드의 특정 부분에서 취약점을 찾는 데 도움을 드리거나 알려진 문제에 대한 자세한 내용을 설명해 드릴 수 있습니다.
- https://packagist.org/packages/bitwasp/bitcoin-lib
- https://polynonce.ru/bitcoin-php-bitwasp/
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOooXo5h3kPmuWseT8XZREA7L10KqlQKVCorEIrHRGF2VGejj72ub
- https://habr.com/en/articles/181372/
- 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
- https://www.youtube.com/watch?v=YsLwZB_R5Vo
- https://www.pgpru.com/biblioteka/osnovy/vvedenievkripto/glava2/ujazvimosti
- https://coffee-web.ru/blog/critical-findings-developer-crypto-challenges-on-stack-overflow/
- https://www.securitylab.ru/blog/company/Rubikon/352961.php
- https://github.com/Bit-Wasp/bitcoin-php/issues/682
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://debricked.com/select/package/github-Bit-Wasp/bitcoin-php
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/?srsltid=AfmBOoqarW1UYF5yagJ4xsR6hFWDdqcGyqAcdneNUYvjaIYuOLkPTKAM
- https://habr.com/en/articles/181372/
- https://www.youtube.com/watch?v=YsLwZB_R5Vo
- 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
- https://cqr.company/ru/web-vulnerabilities/broken-cryptography/
- https://www.pgpru.com/biblioteka/osnovy/vvedenievkripto/glava2/ujazvimosti
- https://www.securitylab.ru/blog/company/Rubikon/352961.php