El fallo de entropía en COLDCARD: un commit de cinco caracteres que expuso fondos de usuarios

Fuentes: When random.bytes() runs but doesn't work

El desarrollador de Core-Lightning ddustin reconstruyó, a partir del historial de commits del firmware de COLDCARD, el origen del reciente fallo de seguridad que permitió el robo de fondos de usuarios. El commit que introdujo la vulnerabilidad titulada simplemente 'runs' modificó 1.534 líneas de código con un mensaje de solo cinco caracteres, una ratio de comentarios por código de 0,003, considerada inaceptable para cambios en funciones críticas de seguridad. Un segundo commit, con el mensaje 'x' (un único carácter) y alrededor de 1.000 líneas alteradas, agravó el problema.

En el commit 'runs', el programador intentó anular las funciones de generación de números aleatorios del hardware STM32 mediante una redefinición de la variable pyb_rng_get_obj. Al generar un error de compilador por símbolo duplicado, optó por desactivar el generador hardware configurando MICROPY_HW_ENABLE_RNG a 0 y añadió el comentario 'tenemos nuestra propia versión de este código'. La medida silenció el error pero eliminó la llamada al RNG por hardware y dejó activo el inseguro Yasmarang.

El código sobrescrito, además, no era el que utilizaba la función random.bytes() invocada al crear un nuevo monedero, que acabó recurriendo a la entropía débil. ddustin advierte de la necesidad de procesos de revisión más estrictos en el código criptográfico de los monederos hardware.