Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en btcd (CVE-2024-38365)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
11/10/2024
Última modificación:
20/08/2025

Descripción

btcd es una implementación alternativa de nodo completo de bitcoin escrita en Go (golang). El cliente de Bitcoin btcd (versiones 0.10 a 0.24) no volvió a implementar correctamente la funcionalidad "FindAndDelete()" de Bitcoin Core. Esta lógica es crítica para el consenso: la diferencia de comportamiento con los otros clientes de Bitcoin puede llevar a que los clientes de btcd acepten un bloque de Bitcoin no válido (o rechacen uno válido). Esta falla de consenso se puede aprovechar para causar una división de la cadena (aceptando un bloque de Bitcoin no válido) o se puede explotar para atacar los nodos de btcd (rechazando un bloque de Bitcoin válido). Un atacante puede crear una transacción estándar donde FindAndDelete no devuelva una coincidencia pero removeOpCodeByData sí, lo que hace que btcd obtenga un signo diferente, lo que lleva a una división de la cadena. Es importante destacar que esta vulnerabilidad puede ser explotada de forma remota por cualquier usuario de Bitcoin y no requiere ningún poder de hash. Esto se debe a que la diferencia en el comportamiento puede ser provocada por una transacción "estándar" de Bitcoin, es decir, una transacción que se retransmite a través de la red P2P antes de que se incluya en un bloque de Bitcoin. `removeOpcodeByData(script []byte, dataToRemove []byte)` elimina cualquier envío de datos de `script` que contenga `dataToRemove`. Sin embargo, `FindAndDelete` solo elimina las coincidencias exactas. Entonces, por ejemplo, con `script = " "` y `dataToRemove = "data"` btcd eliminará ambos envíos de datos, pero `FindAndDelete` de Bitcoin Core solo elimina el primer envío ``. Esto se ha corregido en la versión v0.24.2 de btcd. Se recomienda a los usuarios que actualicen. No hay workarounds para este problema.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:btcd_project:btcd:*:*:*:*:*:*:*:* 0.10.0 (incluyendo) 0.24.2 (excluyendo)