Bitcoin Core ha incorporado una protección para impedir que firme determinadas transacciones en las que la salida aprobada por el usuario no queda vinculada criptográficamente al destino del pago. El problema afecta a un caso concreto de las transacciones parcialmente firmadas de Bitcoin (PSBT) y podía permitir que una firma siguiera siendo válida aunque se modificara el destinatario bajo ciertas condiciones, sin necesidad de obtener la clave privada.
El riesgo estaba en un modo específico de firma
La vulnerabilidad se relaciona con SIGHASH_SINGLE, un modo de firma diseñado para vincular cada entrada con la salida que ocupa la misma posición en la transacción. Cuando no existe una salida en esa posición, esa protección se comporta de forma distinta según el tipo de bitcoin gastado.
En las entradas heredadas, la ausencia de la salida correspondiente puede generar una firma sobre un valor hash fijo. Según los desarrolladores de Bitcoin Core, esa firma podría reutilizarse contra otras salidas no gastadas controladas por la misma clave si se repiten las mismas condiciones estructurales.
Las transacciones SegWit v0 mantienen una protección más sólida en este escenario, ya que la firma continúa vinculada a la moneda concreta que se gasta y a su importe. Sin embargo, el destino de la transacción puede quedar sin vincular. El resultado es un problema de autorización: un monedero o un dispositivo de firma podría mostrar al usuario un pago determinado y producir después una firma que no garantizase que el receptor aprobado permanece intacto.
El fallo no expone las claves privadas ni equivale por sí mismo a su robo. El riesgo reside en que una firma aparentemente válida no cubra todos los detalles que el usuario cree haber autorizado.
Bitcoin Core bloquea la firma de estas solicitudes
Bitcoin Core ya rechazaba este caso límite a través de su interfaz para firmar transacciones sin procesar. No obstante, la ruta utilizada para las PSBT, incluida walletprocesspsbt, todavía podía llegar a firmarlo.
El cambio desplaza la comprobación a la lógica compartida de creación de firmas de Bitcoin Core. De este modo, las entradas afectadas, tanto heredadas como SegWit v0, ya no se firman cuando presentan esta configuración de salida ausente. Otras entradas válidas incluidas en la misma PSBT pueden continuar su proceso.
Las PSBT se utilizan habitualmente para coordinar transacciones entre monederos de software, dispositivos físicos y firmantes fuera de línea. Permiten que un sistema prepare una operación y la envíe a otro para firmarla sin transferirle el control de las claves privadas. La modificación refuerza, por tanto, una frontera de seguridad distinta de la custodia de las claves: la firma debe comprometerse con los datos de la transacción que el usuario aprobó realmente.
La propuesta de mejora BIP 174, que define las PSBT, ya indica que los firmantes deben rechazar los modos de firma que no sean aceptables y recomienda utilizar SIGHASH_ALL cuando no se haya especificado una alternativa. El nuevo código de Bitcoin Core impide que esta configuración concreta llegue a la fase de firma.
La protección aún no está en una versión estable confirmada
El cambio se incorporó a la rama principal de desarrollo de Bitcoin Core el 25 de septiembre. Bitcoin Optech informó de la actualización el 2 de octubre. Sin embargo, a 4 de octubre no figuraba una versión publicada que incluyera la corrección ni se había confirmado su incorporación a una versión anterior.
Hasta que exista una versión de producción con la salvaguarda, los proveedores de monederos y las integraciones con dispositivos de firma deben revisar por separado cómo gestionan las solicitudes con SIGHASH_SINGLE. La corrección de Bitcoin Core limita el caso en su propia lógica, pero la protección también depende del comportamiento de las aplicaciones que construyen, muestran y firman las PSBT.












