A principios de esta semana, la consultora de seguridad de la empresa Independent Security Evaluators (ISE), con sede en Estados Unidos, publicó un informe sobre claves privadas para la blockchain de Ethereum.

A pesar de establecer alrededor de 700 claves privadas débiles que están siendo utilizadas regularmente por múltiples personas, los investigadores encontraron un "bandido blockchain" que ha logrado recolectar casi 45.000 ether (ETH) al adivinar con éxito esas claves privadas frágiles. Cointelegraph entrevistó a Adrian Bednarek, analista principal de seguridad de ISE, para averiguar más sobre lo que ellos describen como "ethercombing".

Antecedentes de la investigación y principales hallazgos

Bednarek dice que descubrió al hacker por accidente. En ese momento, estaba investigando para un cliente corporativo que planeaba implementar su propio monedero con un algoritmo integrado de generación de claves .

"Como analista de seguridad, antes de comenzar cualquier evaluación, hay que entender las tecnologías subyacentes muy claramente, básicamente como si las estuvieras creando tú mismo", le dijo a Cointelegraph.

"La generación de claves privadas fue uno de los componentes que tuvimos que investigar, y yo estaba repasando lo básico de lo que es una clave privada en Ethereum: ¿Qué tan grande es? ¿Cómo se genera? ¿Y cómo se usa para derivar la clave y la dirección públicas?"

En Ethereum, Bitcoin (BTC) o cualquier otra blockchain importante que soporte el protocolo ECDSA (Elliptic Curve Digital Signature Algorithm), las claves privadas están representadas por números de 256 bits. ISE lo redujo a ocho "subregiones" de 32 bits en el espacio de claves de 256 bits durante su investigación, porque forzar brutalmente una clave privada dentro de una región más grande es una improbabilidad estadística.

No dejes de leer: Propietarios comunes, fondos comunes: Lo que sabemos sobre el escándalo Bitfinex/Tether

Esas ocho subregiones contenían una cantidad total de 34.000 millones de claves más débiles, que ISE analizó posteriormente. "Me llevó un día entero", dice Bednarek.

Cabe destacar que esas claves se generaron debido a un código defectuoso y a generadores de números aleatorios defectuosos, y que los investigadores se centraron específicamente en las claves subóptimas.

"La clave privada es tu identificación de usuario y tu contraseña al mismo tiempo", explicó el analista de seguridad al desglosar la mecánica básica. "Es distinto a lo que necesitas para iniciar tu sesión bancaria, para lo que tienes tu nombre de usuario y contraseña [...] Por lo tanto, cuando dos personas utilizan la misma contraseña para crear una Brainwallet [es decir, monederos que contienen frases de contraseña como parte de la generación de claves privadas] —como 'password123'— ambas tendrán exactamente el mismo monedero". Como dice Bednarek, "es como vincular a dos personas a la misma cuenta bancaria".

Inicialmente, el especialista de ISE descubrió que la clave privada de "1" *, que se escogió porque es el límite inferior de una posible clave privada, se estaba utilizando realmente en la blockchain. Además, ha participado en varios miles de transacciones.

* – (0x0000000000000000000000000000000000000000000000000000000000000001, si se escribe utilizando el código de 256 bits)

"Eso fue una bandera roja", recordó Bednarek. "¿Por qué hay gente usando la clave privada de 1? Eso no debería ser posible". Su equipo comenzó a escanear más claves para ver qué tan extendido estaba el problema. Aunque los investigadores de ISE habían establecido que este tema no es particularmente omnipresente, habían encontrado hasta 732 claves privadas débiles asociadas a un total de 49.060 transacciones.

Te puede interesar: El estallido de la burbuja del Bitcoin: Una autopsia

"Aproximadamente, hay cerca de 50 millones de llaves que han sido usadas en  la blockchain de Etereum, y solo hemos descubierto 732 de ellas."

El bandido blockchain

Como se mencionó anteriormente, durante su investigación, el equipo de ISE notó cómo algunas de los monederos asociados con las claves privadas —encontradas con sus métodos subóptimos— tenían una gran cantidad de transacciones que iban a una dirección específica, y no había dinero que volviera a salir. Como dijo Bednarek en un video explicativo publicado en el sitio web de ISE:

"Había un tipo que tenía una dirección que estaba por ahí, desviando dinero de algunas de las claves a las que teníamos acceso. Encontramos 735 claves privadas, y resultó que él tomó dinero de 12 de esas claves a las que también teníamos acceso. Es estadísticamente improbable que adivinara esas claves por casualidad, así que probablemente estaba haciendo lo mismo. [...] Básicamente estaba robando fondos tan pronto como llegaban a los monederos de la gente."

En una conversación con Cointelegraph, Bednarek explicó que el hacker (o un grupo de hackers) había establecido un nodo para robar automáticamente fondos de direcciones con claves débiles. Para verificar eso, los investigadores usaron una trampa: Enviaron un dólar usando una clave privada débil, de la que sabían que el hacker estaba al tanto, para ver qué tan rápido sería tomado. El dinero desapareció en cuestión de segundos, dijo el empleado de ISE:

"Si fuera algo manual, tal vez se lo habrían llevado en un día o algo así. Pero tan pronto como lo enviamos nos fuimos al explorador de la blockchain y vimos que había una transferencia que salía inmediatamente, en cuestión de segundos. Así que básicamente lo que [el hacker] tiene es un nodo blockchain que es parte de la red de transacciones establecida en alguna parte. Tan pronto como ve que las transacciones llegan con una clave privada de la que él tiene conocimiento, envía inmediatamente una solicitud para transferir el dinero".

Según los datos obtenidos de Etherscan, la cartera del hacker contiene alrededor de 45.000 ETH (con un valor de más de 7,3 millones de dólares en el momento de escribir este artículo). Durante el valor más elevado de ether, se estima que el botín del bandido podría haberse vendido por más de 50 millones de dólares.

Según la sección de comentarios de la dirección del monedero del estafador, había estado robando fondos durante varios años. Uno de los comentarios, supuestamente presentado por el principal proveedor de monederos de ETH, MyEtherWallet (MEW), incluye un enlace a un hilo en Reddit de 2016 titulado "Los nodos Ethereum con configuraciones de RPC inseguras se explotan activamente". En él, un redditor describía la configuración de un nodo Ethereum "con su API HTTP RPC expuesta a Internet" y siendo atacado a los pocos minutos de su puesta en marcha.

"Si se busca en Google la dirección [del hacker], hay mucha gente que se queja de él", confirma Bednarek, admitiendo que las tácticas del defraudador han demostrado ser bastante exitosas:

"Este tipo ha adoptado un enfoque múltiple para robar dinero."

Sigue leyendo: Las acusaciones del Fiscal General de New York están "llenas de inexactitudes", dice carta de Bitfinex a los usuarios

El analista de seguridad describió entonces el método del defraudador con más detalle: "Uno: está viendo malas claves privadas. Dos: está buscando monederos débiles basados en contraseñas y RPC mal configurados. Se supone que no debes exponer el RPC de tu nodo Ethereum, pero a veces la gente lo hace, y si no tienes la contraseña establecida, alguien puede básicamente vaciar el monedero predeterminado asociado con el nodo".

Pero esta apropiación de activos no es un problema exclusivo de la blockchain de Ethereum, advierte el investigador de seguridad de ISE. "“La blockchain está funcionando como estaba previsto, es la manera en que la gente la está usando", dijo, describiendo un problema relacionado con la ética que su equipo enfrentó mientras realizaban su investigación:

"Antes de que empezáramos con esto (la investigación), teníamos un dilema ético: ¿y si con una de esas clave encontramos un monedero con un millón de dólares? ¿Lo dejamos ahí? Pero si lo dejamos ahí, sabemos que está detrás de una clave privada defectuosa y es probable que lo roben, por lo que seríamos un poco responsables de que este dinero fuera robado porque podríamos haber avisado a alguien. Pero el segundo problema es, ¿a quién notificamos? No hay una manera fácil de identificar al propietario de una clave privada. ¿Quizás podríamos tomar el dinero temporalmente hasta que alguien pueda probar que es suyo? Pero eso crea muchos problemas legales. Así que el director general de la empresa [para la que estaban investigando] se puso en contacto con el IFS para pedir asesoramiento jurídico y básicamente le dijeron: `si encuentras algo, déjalo ahí. No hagas ninguna transferencia. Así no te meterás en problemas legales".

Asesoramiento sobre seguridad e investigación adicional

Por lo tanto, según Bednarek, las claves privadas tienden a ser vulnerables debido a dos factores principales. El primero es codificar los errores en el software responsable de generarlos. En segundo lugar, algunos propietarios de criptos tienden a obtener claves privadas idénticas a través de frases de contraseña débiles como "abc123", o incluso dejándolas en blanco.

Por ejemplo, el informe de ISE estableció que una de las claves privadas débiles más populares es la generada a partir de una frase de recuperación vacía, es decir, "   ", utilizando el moendero de Parity. Se han reportado 8,772 transacciones en esta dirección con un total transferido de 5.215.586 ETH.

"Durante un tiempo, Parity permitió usar una contraseña predeterminada de nada y generaría la clave privada basada en eso", explica Bednarek, añadiendo que el desarrollador del monedero supuestamente arregló el problema en algún momento. "Creo que han introducido unos requisitos mínimos para contraseñas [desde entonces]. Puede ser un solo caracter, pero no puedes usar contraseñas en blanco en Parity en este momento si estás usando la última versión de su software".

Ningún creador de monederos ha contactado con ISE todavía, según Bednarek:

"Es un tema interesante porque es difícil decir qué monedero fue el responsable, si es que hubo un monedero en absoluto; podría ser solo que la gente introdujo las claves privadas equivocadas, podrían ser las primeras versiones de depuración de los monederos, podrían ser los propios desarrolladores. Es un poco difícil decir por qué existe y qué monedero es el culpable. Es algo que creo que nunca sabremos".

También puede interesarte: Informan que Samsung se une a los gigantes corporativos interesados en las criptos

El consejo principal de Bednarek para aquellos que no son expertos en computación es usar monederos conocidos y confiables, posiblemente cambiando a monederos  de hardware o de papel si hay grandes cantidades de criptomoneda involucradas. Dijo que:

"Si va a haber comercio o tenencia de una gran cantidad de dinero, utiliza un monedero de hardware donde la clave privada nunca será revelada. Muchos de mis amigos que son poseedores a largo plazo usan monederos de papel, en el que generan una clave aleatoria y la almacenan en papel para que nunca llegue a tocar la computadora".

Sin embargo, siempre hay algún riesgo, aún cuando se trata de software popular, advirtió Bednarek, mencionando el ejemplo del monedero de Iota, que fue comprometido por un desarrollador de Oxford que fue arrestado y acusado de robar alrededor de 10 millones de euros el mes pasado.

Dado que el monedero Iota es de código abierto, su código se publicó en Github. En algún momento, el estafador modificó el generador de números aleatorios al enviar un cambio al código.

"Eso se hizo de una manera muy ofuscada", dijo Bednarek. "A pesar de que mucha gente podía revisar el código", simplemente asumieron que debería funcionar, de acuerdo con él.

De esta manera, el hacker podía ver cómo se generaban las claves privadas y reproducirlas utilizando su código inyectado, explicó el especialista de ISE.

"Después de que mucha gente perdiera mucho dinero, alguien finalmente invirtió sus modificaciones al generador de números aleatorios y pudieron ver que estaba creando números secuenciales dentro del rango específico del espacio de la clave".

En cuanto al futuro, ISE tiene previsto seguir supervisando a mayor escala las blockchains y las claves privadas débiles. "Trasladaremos nuestro método de digitalización para utilizar las GPU, donde podremos analizar 38.000 millones de claves en cuestión de segundos", dijo Bednarek a Cointelegraph.

Más información en: Según un ejecutivo de BBVA, las criptomonedas no son una alternativa creíble al dinero en su estado actual

"A medida que hagamos que el análisis sea más eficiente, podremos hacer algunas cosas adicionales, como ir tras los brainwallets u otros algoritmos de generación de claves que podrían ser defectuosos. Así que nos expandiremos a diferentes áreas para identificar más claves."

Además, el grupo de investigación sobre seguridad va a publicar más información —incluidas las claves públicas defectuosas— para que la gente haga su propia investigación y se mantenga advertida de posibles violaciones de la seguridad. "Tal vez esto se convierta en un esfuerzo de colaboración para ayudar a encontrar algunas de las causas de esto", sugirió Bednarek.