Un sitio web que se anuncia a sí mismo como una forma más segura de almacenar Bitcoin y otras monedas digitales ha estado usando un truco de codificación para generar claves privadas que son sospechosamente triviales para que los operadores las adivinen, dejando todos los fondos almacenados en las billeteras abiertos al robo. dijeron el viernes investigadores con un servicio diferente.
WalletGenerator.net proporciona un código para crear lo que se conoce como billeteras de papel para 197 criptomonedas diferentes. Las billeteras de papel alguna vez se consideraron una forma segura de almacenar monedas digitales porque, al menos en teoría, las claves privadas que desbloquean las billeteras se almacenan en papel, en lugar de en un dispositivo conectado a Internet que puede ser pirateado. (En realidad, las billeteras de papel están abiertas para piratear por una variedad de razones). Si bien el sitio aconseja a las personas que descarguen el código de esta página de Github y lo ejecuten mientras la computadora está desconectada de Internet, también albergaba un más simple, stand- solo servicio sobre todo las instrucciones para generar las mismas carteras.
Los investigadores de MyCrypto, que proporciona una herramienta de código abierto para usuarios de criptomonedas y blockchain, compararon el código alojado en Github y WalletGenerator.net y encontraron algunas diferencias sorprendentes. En algún momento entre el 17 y el 25 de agosto del año pasado, se cambió el código de WalletGenerator.net para alterar la forma en que producía los números aleatorios que son cruciales para que las claves privadas estén seguras.
Anteriormente, los movimientos del mouse o las pulsaciones de teclas proporcionadas por el visitante del sitio proporcionaban la entrada aleatoria necesaria para garantizar que los números no fueran predecibles. El código modificado introducido en agosto pasado todavía permitía a los usuarios finales ver el texto que les pedía mover el mouse o escribir caracteres, y aún mostraba una barra de progreso y gráficos que respondían en tiempo real a medida que los visitantes cumplían. Pero detrás de escena, dijeron los investigadores de MyCrypto, el código ignoró por completo esta entrada.
En cambio, el código de WalletGenerator.net usó imágenes proporcionadas por el sitio para proporcionar la entrada aleatoria. Estos cambios se debieron a la adición de una función llamada SecureRandomAdvanced, que modificó la función SecureRandom utilizada anteriormente.
El código alojado en WalletGenerator.net se revirtió a su versión anterior en algún momento del jueves, luego de que los investigadores de MyCrypto informaron el comportamiento al operador del sitio. Como se mencionó anteriormente, los visitantes que siguieron el consejo de usar el código alojado en Github, y no el código alojado en WalletGenerator.net, nunca se vieron afectados.
“En este extraño giro de los acontecimientos, todavía no tenemos idea de si el propietario actual del sitio es la parte maliciosa, si el servidor es inseguro o ambos”, escribió Harry Denley, director de seguridad de MyCrypto, en una publicación publicada el viernes. “Todavía estamos considerando esto altamente sospechoso y seguimos recomendando a los usuarios que generaron pares de claves públicas/privadas después del 17 de agosto de 2023 que muevan sus fondos. No recomendamos usar WalletGenerator.net en el futuro, incluso si el código en este mismo momento no es vulnerable”.
Desenterrando una puerta trasera
Una de las primeras diferencias que los investigadores de MyCrypto notaron en el código modificado fue que solicitaba que se descargara una imagen del sitio. Esta solicitud les pareció extraña a los investigadores, porque la imagen ya se había cargado cuando su navegador visitó la página por primera vez. Después de investigar más, descubrieron que la función SecureRandomAdvanced recién agregada tocaba los datos dentro de la imagen para la entrada aleatoria que anteriormente provenía de los movimientos del mouse o los caracteres ingresados.
Los investigadores descubrieron algunas características inusuales en la imagen. Por un lado, era grande. Más extraño aún, aunque parecía ser visualmente idéntico cada vez, diferentes instancias produjeron diferentes huellas digitales criptográficas conocidas como sumas de verificación. Estas diferentes sumas sha256 parecían variar según la dirección IP de la computadora que descargó la imagen. A continuación se encuentran las sumas de verificación para el mismo archivo, llamado bitcoin.png, junto con el tamaño del archivo y la ubicación IP que lo recibió:
sha256sum
hashes del archivobitcoin.png
:$ sha256sum bitcoin.png (United Kingdom) 27cfafd3fe3810a89375a2f3ccc253cd6b2f03b5ff30ec6b41a76f8f2393085d local.png $ du -hs bitcoin.png 156K bitcoin.png$ sha256sum bitcoin.png (Netherlands) 4798d4167a98b56dc112878aed578f64ff9fb20fc58774a468e9b53f9aa1fc59 nl.png $ du -hs bitcoin.png 16K bitcoin.png$ sha256sum bitcoin.png (California) 4798d4167a98b56dc112878aed578f64ff9fb20fc58774a468e9b53f9aa1fc59 na_cali.png $ du -hs bitcoin.png 16K bitcoin.png$ sha256sum bitcoin.png (N. Virginia us-east-1) 86b475b38b137e50e317ce4478cc9abf41d33c158e12d2174dc1dd6f786ec45f onvpn.png $ du -hs bitcoin.png 156K bitcoin.png$ sha256sum bitcoin.png (Spain) 4798d4167a98b56dc112878aed578f64ff9fb20fc58774a468e9b53f9aa1fc59 offvpn.png $ du -hs bitcoin.png 16K bitcoin.png
Las entradas segunda y tercera, con la suma de comprobación que comienza en 479, corresponden a la imagen sin modificar. Los otros tres fueron modificados de alguna manera. Los investigadores usaron una herramienta llamada binwalk para analizar las imágenes modificadas, pero aún no están seguros de qué causa que las imágenes modificadas tengan diferentes sumas de verificación a pesar de que todas parecen visualmente idénticas. Los investigadores sospechan que las imágenes modificadas contienen datos ocultos que la función SecureRandomAdvanced usó para generar los números aleatorios.
“Sabemos que algo está sucediendo para manipular la imagen, pero no podemos determinar qué está sucediendo exactamente”, escribió Denley. “La mayoría de las herramientas de esteganografía incluyen una funcionalidad de contraseña, lo que significa que es imposible descifrar con éxito los datos ‘ocultos’ sin conocer la contraseña proporcionada en el momento de construir la imagen”.
Los investigadores probaron su hipótesis mediante el uso de una función masiva para generar 1000 claves. El código de Github proporcionó 1000 pares de claves únicos. Sin embargo, el código alojado en WalletGenerator.net produjo solo 120 pares de claves únicos. Cuando los investigadores actualizaron su navegador, cambiaron la ubicación IP utilizada por su red privada virtual y usaron el código WalletGenerator.net para producir lotes posteriores de 1000 pares de llaves, una vez más obtendrían solo 120 pares únicos, pero cada vez eran diferentes. de sesiones anteriores. aqui un video de como quedo
Los investigadores también descubrieron que el uso de una imagen con la misma suma de verificación en una fecha posterior generó precisamente el mismo conjunto de 120 pares de claves que se generó anteriormente. Con eso, tenían pruebas de que los pares de claves eran completamente deterministas según la imagen. Pero eso todavía no explicaba cómo o por qué se generaban 120 pares de claves únicos cada vez. En un correo electrónico, Denley escribió:
No estoy muy versado en criptografía, pero la esencia general es que solo se generan 120 pares de claves en lugar de 1,000. Estos 120 pares de claves son deterministas según el icono de moneda modificado que tenga (ya que las claves se derivan de los bytes inyectados de ese archivo).
Hubo otras partes de la lógica modificada que no se ilustraron en el artículo que pueden explicar mejor las matemáticas detrás de _por qué_ 120, pero en resumen, la lógica se modificó con un número aleatorio entre 0 y 119 para que sea un resultado completamente predecible (el el atacante necesitaría sembrar la lógica con los mismos bytes de la imagen y ejecutarla 120 veces para obtener una clave que un usuario _puede_ haber usado).
Si ejecuta la lógica con el mismo ícono de moneda, obtendrá la misma dirección cada vez, razón por la cual se agregó un número aleatorio entre 0 y 119 para dar la ilusión de una generación de pares de claves no deterministas.
Los intentos de llegar a los operadores de WalletGenerator.net para comentar en Twitter no tuvieron éxito. Según la publicación del viernes, los operadores le dijeron a MyCrypto: “No pudieron verificar nuestras afirmaciones y preguntaron si tal vez estábamos en un sitio de phishing”.
En defensa de los operadores, el sitio instruye a los usuarios en dos lugares separados para que no ejecuten el código alojado en el sitio y, en cambio, descarguen el código sin modificar de Github. Cualquiera que siguiera esas instrucciones no se vería afectado por el servicio inseguro alojado en WalletGenerator.net. Además, no hay evidencia, al menos hasta ahora, de que las billeteras se hayan utilizado para robar la criptomoneda de alguien.
Aún así, los hallazgos en la publicación del viernes son una señal de alerta, no solo para WalletGenerator.net en particular, sino para todos los servicios gratuitos que ofrecen herramientas supuestamente seguras para almacenar criptomonedas. Mantener las monedas digitales a salvo de los piratas informáticos es un trabajo de tiempo completo que requiere habilidad y diligencia. La gente debería invertir grandes cantidades de inversión y servir porciones generosas de escepticismo antes de decidirse por una billetera.