Hack de Wintermute replicado en una computadora portátil simple en menos de 48 horas al explotar la falla Profanity

Amber Group, un proveedor de tecnología de cadenas de bloques, replicó el truco de Wintermute en menos de 48 horas usando una computadora portátil básica. Un informe del Grupo Amber declaró:

“Utilizamos una Macbook M1 con 16 GB de RAM para calcular previamente un conjunto de datos en menos de 10 horas… Terminamos la implementación y pudimos descifrar la clave privada de 0x0000000fe6a514a32abdcdfcc076c85243de899b en menos de 48 horas”.

El corte se atribuyó a las direcciones personalizadas creadas con la herramienta Blasfemias, lo que permite a los usuarios generar direcciones ethereum específicas con caracteres particulares. En el caso de Wintermute, la dirección contenía siete ceros a la izquierda. Las direcciones personalizadas permiten que las cuentas tengan caracteres similares, lo que facilita la identificación de las direcciones públicas en la cadena de bloques.

Otro impacto de una dirección de Ethereum con varios ceros a la izquierda es una reducción en las tarifas de gas debido al espacio reducido que se necesita para almacenar la información en la cadena de bloques. Sin embargo, eliminar un elemento de aleatoriedad del proceso criptográfico utilizado para generar la dirección tiene el costo de una seguridad reducida.

El análisis inicial sugirió que se necesitarían 1,000 GPU en solo 50 días para generar todas las claves privadas posibles para las direcciones que comienzan con siete ceros a la izquierda. Sin embargo, Amber Group ahora afirma que se puede lograr usando una sola computadora portátil en menos de 48 horas.

La criptografía explicada

Blasfemia es una herramienta de generación de direcciones para el ecosistema Ethereum. El código base se puede descargar fácilmente desde GitHub y está disponible desde 2017. Sin embargo, la versión actual del código base incluye una advertencia que desaconseja el uso de la herramienta. El creador de la herramienta, johguse, agregó el siguiente mensaje al archivo readme.md el 15 de septiembre de 2022.

“Recomiendo enfáticamente no usar esta herramienta en su estado actual. Este repositorio pronto se actualizará con información adicional sobre este tema crítico”.

Además, se eliminaron los binarios centrales para evitar que los usuarios pudieran compilar el código base "para evitar un mayor uso inseguro de esta herramienta".

Profanity utiliza la "potencia de GPU con OpenCL local a través de un algoritmo simple" para generar claves privadas y públicas de Ethereum hasta que encuentra una dirección que coincide con las reglas establecidas por el usuario. Por ejemplo, si un usuario desea crear una dirección de Ethereum que termine en 'AAA', continuará funcionando hasta que genere una dirección con estos caracteres como sufijo.

Cuando se genera una dirección que no cumple con las condiciones detalladas en el conjunto de reglas, Profanity "agrega 1 a la clave privada y deriva una nueva dirección de Ethereum hasta que encuentra la que cumple con las reglas".

Las direcciones de Ethereum generalmente se generan localmente utilizando criptografía de curva elíptica. Al generar una dirección de Ethereum, no se realiza ningún cálculo para comprobar si la clave privada se ha utilizado en el pasado para otra dirección. Sin embargo, esto se debe a la gran cantidad de posibles direcciones de Ethereum.

Este video explica la verdadera magnitud de Cifrado de 256 bits utilizado en la criptografía de Ethereum. También se puede hacer una comparación simple en la que hay aproximadamente 2^76 granos de arena en el mundo pero 2^160 posibles direcciones de Ethereum.

Sin embargo, cuando los caracteres de las direcciones de Ethereum están predeterminados, el cálculo para generar la clave privada se vuelve significativamente más sencillo y la cantidad de direcciones posibles se reduce drásticamente.

El Exploit

Amber Grouped explicó que la falla del método Profanity proviene del uso de una semilla de 32 bits para generar direcciones.

“Para generar una clave privada aleatoria, Profanity primero usa el dispositivo aleatorio para generar una semilla. Pero, lamentablemente, la semilla es de 32 bits, que no se puede usar directamente como clave privada”.

La semilla de 32 bits se alimenta a través de un generador de números pseudoaleatorios (PRNG) que utiliza una función determinista. Este método PRNG da como resultado una forma sencilla de determinar todas las semillas de clave pública viables utilizadas en Profanity.

“Dado que solo hay 2^32 posibles pares de claves iniciales (d_0,0, Q_0,0) y la iteración en cada ronda es reversible, es posible descifrar la clave privada de cualquier clave pública generada por Profanity”.

El método utilizado por Amber Group fue adquirir la clave pública de la dirección, precalcular las posibles claves públicas de Profanity, calcular las claves públicas usando OpenCL, comparar las claves públicas calculadas y luego reconstruir la clave privada una vez que se encuentra una coincidencia.

Debido a la simplicidad del método, Amber Group recomienda que "sus fondos no estén seguros si su dirección fue generada por Blasfemias".

Grupo ámbar dijo CryptoSlate que, en relación a si se necesita un mejor algoritmo criptográfico, “la respuesta es obviamente sí… la industria puede ver cuán vulnerable es este tipo de diseño”.

Fuente: https://cryptoslate.com/wintermute-hack-replicated-on-simple-laptop-in-under-48-hours-by-exploiting-profanity-flaw/