12PALABRAS

Inicio › Entropía débil: cuando tu frase de recuperación nunca fue impredecible

Entropía débil: cuando tu frase de recuperación nunca fue impredecible

Una billetera es tan segura como el azar del que nació. Si el programa que generó tu frase usó un generador de números aleatorios defectuoso, esa frase queda dentro de un conjunto lo bastante chico como para recorrerlo entero por computadora, y alguien puede llegar a los fondos sin tocar el dispositivo y sin que nadie haya hecho nada mal. Es la única clase de ataque que no se previene con disciplina ni se repara con una actualización: la clave ya nació débil, y la salida es generar una nueva y mover los fondos.

1. Randstorm: billeteras hechas en el navegador, 2011-2015

Cuándo. Claves generadas entre 2011 y 2015; primer aviso público en abril de 2018, divulgación de Unciphered en noviembre de 2023.

El defecto. Las billeteras creadas dentro de una página web usaban BitcoinJS, que pedía azar a la función SecureRandom() de la librería jsbn. Esa función tenía una rama muerta, pensada para Netscape 4: la llamada al generador seguro, según el aviso KETAMINE, se saltea en silencio, sin fallar. Quedaba Math.random(), que en el Chrome de esos años solo podía producir 2^32 valores distintos. KETAMINE describe configuraciones con sustancialmente menos de 48 bits de entropía.

Cuánto se perdió. Ningún robo público confirmado y atribuido a Randstorm, y sin CVE. Solo hay una estimación de una única fuente, nunca reproducida: Unciphered cuenta 1,4 millones de BTC en billeteras de esa ventana y asume comprometido entre el 3 y el 5 por ciento, unos 1.200 a 2.100 millones de dólares.

Si te afecta. Tres señales: la billetera nació en una página web entre 2011 y 2015; nunca vino de una frase de 12 o 24 palabras generada fuera del navegador; los fondos siguen en la dirección original. El verificador de keybleed.com ya no funciona: la única salida es billetera nueva y transferir.

2. Milk Sad: el comando bx seed, 2017 a 2019

Cuándo. Código vulnerable desde bx 3.0.0 (marzo de 2017) hasta bx 3.6.0 (agosto de 2019); robos entre mayo y julio de 2023; divulgación el 8 de agosto de 2023, CVE-2023-39910.

Qué pasó. Una persona con billetera de hardware, PIN y respaldo en papel descubrió el 21 de julio de 2023 que estaba vacía. Al consultar a conocidos con el mismo procedimiento apareció una segunda víctima, vaciada en el mismo minuto de la cadena. Habían generado sus semillas en portátiles sin conexión, como recomendaba la documentación oficial.

El defecto. El subcomando bx seed usaba Mersenne Twister MT19937, un generador pensado para simulaciones, sembrado con una única lectura del reloj: 32 bits. No agrega información, solo expande esos 32 bits hasta los 128, 192 o 256 que el usuario pedía.

Cuánto se perdió. Unos 29,65 BTC, más de 850.000 dólares al cambio de agosto de 2023 y más de 900.000 sumando las otras siete cadenas; más de 1.350 ETH descubiertos después llevan el orden de magnitud a unos 3,4 millones, que los investigadores presentan como cota inferior.

Si te afecta. Si entre 2017 y 2023 la semilla salió de una línea de comandos con bx seed, bx entropy, bx mnemonic-new, bx hd-new o bx ec-new, conviene asumir lo peor sin esperar confirmación.

3. Profanity: las direcciones lindas de Ethereum, 2022

Cuándo. Señalado en el repositorio en enero de 2022 y divulgado el 15 de septiembre de 2022; el CVE-2022-40769 registra explotación observada ya en junio.

El defecto. Profanity generaba direcciones de Ethereum con un patrón elegido, por ejemplo varios ceros al inicio. Tomaba la semilla del sistema pero la truncaba a 32 bits: el universo entero de claves cabía en unos 4.300 millones de opciones. Peor aún, la búsqueda del patrón avanzaba incrementando la clave privada, lo que sobre curva elíptica es una operación pública y reversible desde la clave pública. Amber Group lo reprodujo con una laptop en menos de 10 horas de precómputo.

Cuánto se perdió. La mesa de trading Wintermute perdió alrededor de 160 millones de dólares el 20 de septiembre de 2022, cifra declarada por su propio CEO. Antes hubo 3,3 millones drenados de varias direcciones; después, 732 ETH, QANplatform, friesDAO y REFI. El piso verificable ronda los 168 millones.

Si te afecta. El único criterio es la procedencia. Si generaste una dirección con una herramienta de direcciones personalizadas, o alguien te la entregó ya hecha, dala por comprometida y mueve todo; si controla un contrato, transfiere también esa propiedad. Wintermute tenía diez cuentas hechas con Profanity y bloqueó nueve: la que quedó afuera por un error humano costó 160 millones.

4. Ill Bloom: billeteras de software sin identificar, 2018-2026

Cuándo. Divulgado por Coinspect el 6 de julio de 2026. Las direcciones afectadas se fondearon entre septiembre de 2018 y mayo de 2026; hubo dos barridos, en mayo y en junio-julio de 2026.

El defecto. Ciertas aplicaciones generaron la entropía BIP39 con un generador no criptográfico, dejando un espacio de frases acotado y enumerable. Coinspect no publicó cuál es el generador ni cuántos bits efectivos quedaron: cualquier cifra de combinaciones que circule es ilustración periodística. Identificaron cinco implementaciones vulnerables y no nombraron ninguna: aplicaciones móviles poco difundidas y extensiones de navegador.

Cuánto se perdió. Primer barrido: 3.140.968 dólares desde 431 cuentas. Segundo: unos 2.550.000 más sobre 522 semillas. Total documentado al 13 de julio de 2026: alrededor de 5,69 millones, sobre 2.114 direcciones con actividad.

Si te afecta. Hay verificador público y pide solo una dirección: illbloom.org. Un resultado negativo no es garantía, porque los conjuntos no son exhaustivos. Actualizar la aplicación o importar la misma frase en otra billetera no corrige nada: el defecto está en la frase, no en el programa que la muestra.

5. COLDCARD: el firmware que no usó su propio chip, 2021-2026

Cuándo. La guarda defectuosa llegó a producción con el firmware v4.0.0 en marzo de 2021. Los barridos ocurrieron el 29 de julio de 2026 y se descubrieron el 30; firmware corregido el 31.

El defecto. La librería criptográfica del firmware comprobaba si una macro estaba definida, no si estaba activada. COLDCARD la definía con valor cero justamente para desactivar ese camino y usar el generador por hardware del chip. Como la macro existía aunque valiera cero, la función de azar quedó atada a un generador de software sembrado con valores predecibles del propio equipo. En Mk2 y Mk3 el techo más favorable son unos 40 bits, y la estimación realista es menor; en Mk4, Mk5 y Q son unos 72. Lo esperado eran 128.

Cuánto se perdió. Galaxy Research confirma con alta confianza 1.596 BTC, unos 100 millones de dólares, sobre unas 7.300 direcciones; con una cuarta oleada menos confirmada llega a 2.055 BTC. Al menos 15 atacantes distintos. Las monedas robadas llevaban en promedio 3,18 años quietas.

Si te afecta. Tres datos que no son secretos: modelo y versión de firmware con la que se generó la semilla, no la de hoy (Mk2 y Mk3 con 4.0.1 a 4.1.9; Mk4 y Mk5 anteriores a 5.6.0 o 6.6.0X Edge; Q anteriores a 1.5.0Q o 6.6.0QX Edge); si se ingresaron al menos 50 tiradas de dados privadas; si hay una frase de paso fuerte y única.

Lo que se repite en los cinco

Las tres defensas que funcionaron

Dados propios. Es la única defensa que ataca la causa: la entropía la aporta la persona, desde afuera del programa que falla. En COLDCARD, el firmware afectado mezclaba con hash cada tirada junto con la semilla del equipo, así que el defecto no restaba lo que la persona había aportado. Coinkite indica que entre 50 y 98 tiradas justas y privadas aportan al menos 128 bits, y 99 o más unos 256; con al menos 50 nunca registradas, no considera esa semilla en riesgo por este problema. Con menos, o si no se recuerda cuántas fueron, corresponde migrar.

Passphrase BIP39. Rompe el ataque porque es un secreto que nunca pasó por el generador defectuoso: el atacante puede reconstruir la semilla débil entera y aun así no llega a las claves. El equipo de Milk Sad la califica de protección moderada a fuerte y recomienda al menos 128 bits de una fuente independiente. No repara nada: una frase corta, común o tomada de una cita es adivinable, y aun con una fuerte hay que migrar.

Multisig con dispositivos distintos. No arregla una semilla mala; cambia la aritmética. Para gastar hay que romper el quórum completo, lo que obliga a que todas las llaves necesarias hayan nacido del mismo defecto. Solo sirve si vienen de dispositivos y programas independientes: un multisig armado con llaves nacidas en equipos vulnerables no protege. Los investigadores de Block lo afirman así para COLDCARD; el fabricante no aborda el tema.

Cómo verificar sin entregar nada

Regla única: ningún chequeo legítimo necesita tu frase de recuperación ni tu clave privada. Se verifica con datos públicos: una dirección o una clave pública. Cualquier sitio o mensaje que pida las 12 o 24 palabras para decirte si estás afectado es un robo, y estos casos ya generaron su ola de estafas.

Para Randstorm y Profanity no hay verificador operativo. Circulan además repositorios titulados exploit de Randstorm y ofertas de ayuda para los casos de 2026: no les entregues datos, y desconfía de quien pida firmas, aprobaciones o fondos para proteger una billetera.

Preguntas frecuentes

¿Si actualizo el firmware o la aplicación se arregla?

No. La actualización corrige la generación futura, no la clave que ya nació: una semilla creada con un generador defectuoso sigue siendo débil en cualquier programa donde se la importe.

¿Una billetera de hardware me protege de esto?

Solo si la semilla nació dentro del dispositivo y ese dispositivo no tenía el defecto. En Milk Sad las víctimas usaban billeteras de hardware con semillas generadas afuera; en COLDCARD el defecto estaba en el equipo mismo.

¿Puedo saber mirando la blockchain si mi dirección es vulnerable?

No. Una dirección generada con entropía débil es indistinguible de una correcta. La detección es por procedencia: qué programa, qué versión y qué año.

¿Sirve la passphrase BIP39 si mi semilla es débil?

Sirve como barrera, no como reparación: es un secreto que nunca pasó por el generador defectuoso, así que quien reconstruye la semilla sigue sin llegar a las claves. Debe ser larga y única, y aun así corresponde migrar.

¿Qué hago primero si creo que estoy afectado?

Generar una semilla nueva en un dispositivo o software confiable y transferir los fondos, empezando por el saldo más grande. No importes la frase vieja en ningún lado ni la escribas en una pantalla conectada.

Si no puedes reconstruir con qué herramienta y qué versión nació cada una de tus semillas, esa es la pregunta que ordena la auditoría de autocustodia de 12 Palabras.

Auditar mi setup

Sin registro. Sin cuenta. Sin cookies. Nunca pedimos tu frase semilla — y técnicamente no podemos: esta web no tiene permiso para enviar datos a ningún lado.