CryptoJS RNG Débil Detrás de Robos de $5.7 Millones Afecta a Cinco Aplicaciones de Carteras de Criptomonedas

Coinspect ha identificado que CryptoJS.lib.WordArray.random() es el generador de números aleatorios débil que permitió los robos en carteras Ill Bloom. Introducido hace 12 años en la biblioteca de criptografía JavaScript, esta función suministraba entropía débil que afectaba a las aplicaciones de cartera utilizadas para generar frases de recuperación. El análisis on-chain de Coinspect sitúa el robo medido en dos barridos desde finales de mayo en un límite inferior de aproximadamente $5.7 millones.

Aplicaciones afectadas y estado de corrección

La firma de seguridad blockchain, que acuñó el nombre Ill Bloom en julio, ha confirmado ahora cinco aplicaciones que usaron el generador como fuente de entropía para la generación de frases de recuperación: RRWallet, discontinuada y sin solución; Bexo Wallet, corregida en la versión 20.1.0 aunque las compilaciones actualizadas aún no se habían subido; NanChat, que confirmó de forma independiente que las versiones anteriores a la 1.3.0 estaban afectadas y lo corrigió en la 1.3.0; Bitcoin Libre, que corrigió el problema en la versión 4, lanzada en julio de 2024; y Milo, discontinuada y sin solución.

Coinspect informó a The Hacker News que estas son las mismas cinco carteras que mencionó sin nombrar en julio. La firma advirtió que no puede confirmar que haya identificado todas las carteras vulnerables. Otras carteras móviles o extensiones de navegador afectadas pueden haber existido, pero no pudieron ser examinadas porque ya fueron retiradas de las tiendas de aplicaciones o mercados de extensiones, o porque los proveedores las reemplazaron con versiones parcheadas y las versiones vulnerables más antiguas ya no estaban disponibles.

Detalles técnicos del fallo

La divulgación pública no proporciona rangos completos de versiones afectadas para RRWallet, Bexo, Bitcoin Libre o Milo. Actualizar la aplicación no repara una frase existente. Una frase de recuperación generada por una versión afectada sigue siendo adivinable dondequiera que se importe, incluso en una cartera de hardware. Los usuarios cuyas frases provienen de una ruta afectada necesitan crear una nueva de forma segura y mover los fondos. Coinspect dice que las semillas generadas por hardware y la mayoría de las carteras de software actuales no se ven afectadas.

Coinspect analizó entropía de 128 y 256 bits. Esas deberían producir espacios de búsqueda de 2^128 y 2^256, pero el generador vulnerable los redujo a aproximadamente 2^39 y 2^47, lo suficientemente pequeños para enumerarlos en hardware ordinario. La firma reprodujo la cadena de ataque enumerando salidas, convirtiéndolas en frases BIP39, derivando direcciones y verificándolas contra datos públicos de blockchain.

Historia de la vulnerabilidad en CryptoJS

La biblioteca corrigió esto una vez, luego retiró la corrección. El generador Multiply-With-Carry, sembrado desde Math.random(), llegó en junio de 2014. Las versiones 3.2.0 y 3.2.1 cambiaron a aleatoriedad criptográfica nativa, pero la 3.3.0 restauró el código débil porque el cambio se consideró disruptivo. Una actualización dentro de 3.x podría mover un proyecto de una versión corregida a una vulnerable. La versión 4.0.0 restauró la aleatoriedad nativa permanentemente en febrero de 2020.

Coinspect identificó ferrumnet/bip39, un fork de React Native que reemplazó la aleatoriedad criptográfica nativa del bip39 upstream con CryptoJS, como una ruta hacia el software de cartera, no la única. El mantenedor de CryptoJS, Evan Vosberg, publicó GHSA-rg76-677x-56q9 el 5 de agosto con una calificación crítica y una puntuación CVSS de 9.0. Su campo de paquete enumera todas las versiones inferiores a la 4.0.0, a pesar de las excepciones 3.2.0 y 3.2.1.

El aviso dice que una aplicación se ve afectada solo si usa la función vulnerable para generar valores sensibles a la seguridad. Llevar la dependencia sola no satisface esa condición, por lo que el rango del paquete es más amplio que el conjunto de aplicaciones explotables. Una vez que una frase de recuperación se genera a partir de la salida de la función, el hash posterior o el procesamiento PBKDF2 no pueden restaurar la entropía faltante, ni una actualización posterior del paquete.

Impacto y recomendaciones

Coinspect dice que la falla fue explotada en dos oleadas de robo. Un barrido del 27 de mayo tomó alrededor de $3.14 millones de 431 cuentas. Una segunda ejecución entre el 30 de mayo y el 13 de julio tomó $2.55 millones de direcciones vinculadas a 522 semillas, incluidos aproximadamente 2.18 millones de USDT de una cuenta de Tron el 4 de julio. El análisis posterior rastrea 2,114 semillas identificadas y direcciones asociadas en Bitcoin, Ethereum, Tron, Rootstock y Polygon. Juntos, los análisis sitúan las pérdidas medidas en $5,690,922 hasta el 13 de julio, que Coinspect describe como un límite inferior.

Coinspect estimó a partir de datos de blockchain que la población afectada asciende a miles en redes compatibles con Ethereum Virtual Machine (EVM) y Bitcoin, pero no proporcionó un desglose cartera por cartera. Hasta el 6 de agosto, NanChat era la única aplicación nombrada que había publicado un aviso público. Coinspect dijo a The Hacker News que la corrección de Bexo 20.1.0 no es específica de plataforma, pero que las compilaciones actualizadas aún no se habían subido.

The Hacker News verificó los registros oficiales de la tienda de Bexo el 6 de agosto. La App Store de Apple listaba la versión 18.3.5 como la versión actual para iPhone, mientras que Google Play mostraba una actualización de Android el 20 de mayo pero sin número de versión público. Ninguna lista confirmó que la versión 20.1.0 estuviera disponible en el momento de la revisión. Coinspect aconsejó a los usuarios de carteras que siguen activas consultar los canales oficiales de los proyectos para obtener orientación actual sobre versiones y migración. The Hacker News también contactó a Bexo para aclaraciones.

El aviso de NanChat dice a los usuarios que crearon una cartera antes de la v1.3.0 que la consideren comprometida y migren. La versión 1.3.0 incluye una herramienta para generar una nueva semilla y mover los fondos. El fundador y CEO de Coinspect, Juliano Rizzo, informó el problema el 10 de junio; la corrección se lanzó dos días después. Coinspect dijo que retuvo los detalles técnicos durante dos meses mientras notificaba a los proveedores y buscaba direcciones expuestas.

El verificador público de Coinspect acepta direcciones de cartera, no frases de recuperación ni claves privadas. Una coincidencia significa que los activos vinculados a la misma frase pueden estar en riesgo inmediato. Un resultado negativo solo significa que la dirección no está en los conjuntos de datos publicados actualmente.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *