Bitcoin Core integra una correzione per la vulnerabilità di firma che potrebbe dirottare fondi senza esporre le chiavi
Punti chiave
- •Bitcoin Core ha integrato il 25 settembre una correzione che impedisce la firma di PSBT nei casi in cui il caso limite di SIGHASH_SINGLE con output mancante potrebbe lasciare una firma valida dopo la modifica del destinatario.
- •La vulnerabilità non espone le chiavi private, ma per gli input legacy una firma su un valore hash fisso potrebbe potenzialmente essere riutilizzata contro altri output non spesi controllati dalla stessa chiave in condizioni strutturali corrispondenti.
- •Le firme SegWit v0 vincolano ancora la specifica moneta spesa e il suo importo, ma l'output di destinazione può rimanere non vincolato, creando un problema di autorizzazione per wallet e dispositivi di firma.
- •Il nuovo controllo è stato spostato nella logica condivisa di creazione delle firme di Bitcoin Core, estendendo la repulsione già esistente per le transazioni raw al percorso PSBT, incluso il comando walletprocesspsbt, consentendo al contempo il procedere degli input validi nella stessa PSBT.
- •Al 4 ottobre nessuna release di produzione o backport confermato conteneva la salvaguardia, spingendo fornitori di wallet e integrazioni di firma hardware a rivedere la propria gestione delle richieste SIGHASH_SINGLE invece di attendere una release di Bitcoin Core.

Bitcoin Core ha aggiunto una salvaguardia contro la firma di transazioni che potrebbero non vincolare crittograficamente i fondi alla destinazione di pagamento approvata dall'utente. La modifica, integrata nel ramo di sviluppo master del progetto il 25 settembre, affronta una vulnerabilità specifica nelle transazioni Bitcoin parzialmente firmate, o PSBT, che potrebbe produrre una firma valida senza proteggere l'output previsto. Bitcoin Optech ha evidenziato l'aggiornamento il 2 ottobre.
Il problema non espone la chiave privata dell'utente. Crea invece un rischio diverso: in condizioni specifiche, una firma può rimanere valida anche dopo la modifica del destinatario della transazione.
Come funziona la debolezza di SIGHASH_SINGLE
Ogni firma Bitcoin contiene un flag sighash che definisce quali parti della transazione la firma vincola. SIGHASH_SINGLE è una di queste modalità di firma, progettata per vincolare un input all'output che occupa la posizione corrispondente in una transazione. Quando non esiste un output in quella posizione, la protezione viene meno in modi diversi a seconda del tipo di bitcoin speso.
Per gli input legacy, il caso dell'output mancante può produrre una firma su un valore hash fisso. Gli sviluppatori di Bitcoin Core hanno dichiarato che tale firma potrebbe quindi essere riutilizzata contro altri output non spesi controllati dalla stessa chiave quando sono presenti le stesse condizioni strutturali.
Le transazioni SegWit v0 mantengono protezioni più forti, perché la firma vincola ancora la specifica moneta spesa e il suo importo. L'output di destinazione, tuttavia, può rimanere non vincolato. Ciò crea un problema di autorizzazione per wallet e dispositivi di firma: il software potrebbe presentare all'utente un pagamento mentre produce una firma che non garantisce crittograficamente che il destinatario approvato rimanga invariato.
Bitcoin Core blocca la richiesta di firma rischiosa
Bitcoin Core aveva già respinto questo caso limite tramite la sua interfaccia di firma delle transazioni raw, ma il percorso PSBT — incluso il comando walletprocesspsbt — poteva comunque firmarlo. Il nuovo codice sposta il controllo nella logica condivisa di creazione delle firme di Bitcoin Core, così la stessa repulsione ora si applica a tutti i percorsi di firma di Bitcoin Core, impedendo la firma degli input legacy e SegWit v0 interessati e consentendo al contempo il procedere degli altri input validi nella stessa PSBT.
Le PSBT sono comunemente usate per coordinare transazioni tra wallet software, dispositivi hardware e firmatari offline.ono ai costruttori di transazioni di trasmettere informazioni a un firmatario separato senza dare a quel sistema il controllo delle chiavi private. La correzione rafforza quindi un confine che gli sviluppatori di wallet devono far rispettare indipendentemente dalla sicurezza delle chiavi: una firma crittografica valida deve vincolare i dettagli della transazione che l'utente ha effettivamente autorizzato.
La Bitcoin Improvement Proposal 174, che definisce le PSBT, istruisce già i firmatari a rifiutare le modalità di firma inaccettabili e raccomanda SIGHASH_ALL quando non viene specificata un'alternativa. La modifica di Bitcoin Core impedisce esplicitamente che questa configurazione con output mancante raggiunga la fase di firma.
Nessuna release di produzione con la correzione per ora
Gli utenti non dispongono ancora di una release di produzione confermata contenente la salvaguardia. La modifica del 25 settembre è stata integrata nel ramo di sviluppo di Bitcoin Core e, al 4 ottobre, gli elenchi delle release pubblicate dal progetto non avevano individuato una versione corretta né confermato un backport. Un backport porterebbe la stessa salvaguardia in una versione già rilasciata; finché uno non compare negli elenchi, la protezione esiste solo nel codebase di sviluppo.
Ciò lascia ai fornitori di wallet e alle integrazioni di firma hardware una decisione immediata: rivedere la propria gestione delle richieste SIGHASH_SINGLE invece di attendere che una release di Bitcoin Core imponga la stessa protezione a valle.
Il rapporto originale è stato pubblicato su CryptoSlate.