
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)