Investigadores sospechan que una vulnerabilidad en el firmware de la cartera de hardware COLDCARD fue explotada para robar aproximadamente 88.6 millones de dólares en Bitcoin de miles de carteras cuyas semillas se generaron con un generador de números aleatorios defectuoso.

La firma de investigación de activos digitales Galaxy Research afirma haber identificado una primera ola de transacciones que probablemente esté vinculada a la vulnerabilidad, drenando aproximadamente 1,083 BTC, valorados en 70.2 millones de dólares, de 1,196 direcciones el 30 de julio. El ataque, que duró 41 minutos, ocurrió unas 30 horas antes de que Coinkite revelara públicamente la falla.

Cada transacción utilizó una tarifa fija idéntica de 30 satoshis por byte virtual y no dejó salida de cambio, lo que lleva a Galaxy a creer que los atacantes usaron una herramienta automatizada. "Firma: cada barrido pagó una tarifa fija idéntica de 30.0 sat/vB, un sobrepago de 30 a 75 veces en comparación con la mediana de 0.4 a 1.0 sat/vB de esa semana, y no dejó salida de cambio", explicó Galaxy. "Eso parece una herramienta automatizada que gasta claves que ya poseía, no propietarios moviendo fondos".

El 1 de agosto, Galaxy Research identificó una segunda y tercera ola, elevando el total estimado a 1,367 Bitcoin, aproximadamente 88.6 millones de dólares, robados de 4,585 direcciones. En el momento de su informe, los Bitcoin robados permanecían en las direcciones controladas por los atacantes.

Chainalysis descubrió que el atacante priorizó carteras de alto valor, robando aproximadamente 30 millones de dólares durante los primeros diez minutos y tomando 1.8 millones de dólares de una sola víctima. La compañía dijo que esto sugiere que el atacante había identificado y estudiado las carteras afectadas antes de comenzar los robos.

Falla en el RNG de COLDCARD

Los equipos de Ingeniería y Seguridad de Bitcoin de Block afirman que, después de ver informes de Bitcoin robados de carteras COLDCARD, trabajaron con otros investigadores para analizar el firmware del dispositivo e identificar la vulnerabilidad subyacente. Block dice que los investigadores rastrearon el problema hasta un error de integración en el código de generación de números aleatorios (RNG) de COLDCARD y divulgaron sus hallazgos a Coinkite el 30 de julio.

"El firmware de COLDCARD contiene un error de integración de RNG que hace que ngu.random use el respaldo determinista Yasmarang de MicroPython en lugar del RNG de hardware STM32", explica el informe de Block.

COLDCARD incluye un generador de números aleatorios de hardware separado, pero una verificación incorrecta en el firmware hizo que usara un generador de software determinista en su lugar. El generador de respaldo se basaba en el identificador del microcontrolador del dispositivo y los valores de tiempo del sistema, que Block dice que no son fuentes criptográficamente seguras de aleatoriedad y pueden ser observables o reconstruibles.

Esto permitió a los atacantes generar posibles semillas de cartera fuera de línea, determinar sus direcciones de Bitcoin y compararlas con las direcciones visibles en la cadena de bloques. Una coincidencia confirmaría la semilla correcta, permitiendo al atacante generar las claves privadas necesarias para robar los fondos.

Un aviso de Coinkite dice que las semillas afectadas incluyen las generadas en dispositivos Mk2 y Mk3 con versiones de firmware 4.0.1 a 4.1.9, dispositivos Mk4 y Mk5 anteriores a la versión estándar 5.6.0 o Edge 6.6.0X, y dispositivos Q anteriores a la versión estándar 1.5.0Q o Edge 6.6.0QX.

El nuevo firmware que corrige la falla está disponible como versión 4.2.0 o posterior para Mk2 y Mk3, 5.6.0 o posterior para dispositivos Mk4 y Mk5 estándar, 1.5.0Q o posterior para dispositivos Q estándar, y versión 6.6.0X o 6.6.0QX para las versiones Edge correspondientes.

Sin embargo, hay que señalar que actualizar el firmware no repara una semilla generada previamente. Los usuarios afectados deben verificar su copia de seguridad existente, instalar el firmware corregido, generar y registrar de forma segura una nueva semilla, verificar la nueva dirección de la cartera en el dispositivo, enviar una pequeña transacción de prueba y luego mover los fondos restantes. La copia de seguridad antigua debe conservarse hasta que la migración esté completa y confirmada.

Coinkite dice que las semillas complementadas con al menos 50 tiradas de dados justas, independientes y privadas no se consideran en riesgo por esta falla. Una frase de contraseña BIP-39 única y fuerte también dificulta la explotación, pero los usuarios deben migrar de todos modos porque no repara la semilla subyacente.

Coinkite dice que sus productos TAPSIGNER, OPENDIME y SATSCARD no se ven afectados porque utilizan códigos base diferentes. Coinkite también afirma que destruyó todos los dispositivos COLDCARD que estaban esperando envío con el firmware afectado. Los clientes cuyos dispositivos ya habían sido enviados fueron contactados por correo electrónico con el aviso de seguridad e instrucciones para migrar sus fondos.

image
image
Transactions for stolen COLDCARD assets over time
Transactions for stolen COLDCARD assets over time
article image
article image