Ya, ya, sé que estoy un poco pesao con las criptomonedas y sus ataques, pero es que no dejan de sorprenderme. Evidentemente hay muchas más vulnerabilidades y ataques en el mundo: a distintos softwares, a sistemas, a coches conectados, a dispositivos del Internet of Things, a móviles… pero este tipo de ataques a criptomonedas no deja de sorprenderme por lo imaginativos que son. En esta ocasión, un cibermalote ha aprovechado un error en el código de Bitcoin Core para robar 15.000 dólares. Y sí, hace poco unos cibercriminales robaron en un casino después de conseguir acceder a las máquinas traga-perras a través de un termómetro acuario que había en el casino y que estaba conectada a Internet (espectacular, ¿verdad?), pero los ataques para robar criptomonedas no se quedan atrás en cuanto a imaginación y sofisticación… es decir, que los malos saben dónde está el dinero y quieren robarlo, eso de vulnerar la seguridad de un servidor de correo para enviar emails de phishing no tiene tanta gracia y no es tan lucrativo.
¿Qué es Bitcoin Core?
Hace unos días se nos instaba a todos los usuarios del software Bitcoin Core a actualizar de forma urgente por un error que podía originar una Denegación de Servicio en la aplicación, es decir, que se cerrara y dejara de funcionar. Bitcoin Core es uno de los primeros software que surgió para gestionar tu cartera de criptomonedas, pero además de eso funciona como un nodo de la red de Bitcoin, por lo que tu ordenador descargará una copia de toda la cadena de bloques y la almacenará en tu ordenador incluyendo cada nueva transacción y formarás así parte de la red y de la ‘cadena de custodia’. Es con diferencia el software más utilizado para almacenar criptomonedas, yo por ejemplo lo utilizo para guardar las criptomonedas que no tengo en un Exchange. Ya hemos hablado de las diversas posibilidades de almacenar criptomonedas, así que pásate por los artículos pasados si has llegado aquí y no sabes muy bien de qué estamos hablando.
El bug de double-spending
El bug en sí no parecía poner en peligro tus cripto-ahorros… un problema en una validación de entrada duplicada podía hacer que el programa cascara… estupendo, pues actualizamos y listo. Si alguno de vosotros tiene conocimientos de programación y quiere saber más sobre el problema de validación del ‘double-spent’ (CVE-2018-1744), os recomiendo este espectacular análisis de Jimmy Song. Pero como la mayoría de los lectores de este blog (5 de los 7) no está familiarizado con la programación, vamos a explicarlo de una forma más sencilla: básicamente las transacciones de Bitcoin se podían ejecutar por duplicado de forma lícita, es decir, la red permitía que si Bob tiene 1 BTC y quiero venderlo, puedo enviárselo a Alice y a Nick y la red descartará la transacción que no se complete, de manera que las transacciones van mucho más rápidas porque simplemente se rechazan las no-completadas, no hay que esperar a que Nick me diga que no quiere mi Bitcoin para después enviárselo a Alice:
El problema es mucho más grave de lo que parece ya que este bug permitía que mineros maliciosos pudiesen inflar los Bitcoins en circulación simplemente utilizando este double-spending… pero esto podría haber sido catastrófico para la red, por lo que los desarrolladores decidieron mantenerlo en secreto (no me canso de repetirlo: la seguridad por oscuridad NUNCA es una buena idea). Se publicó una vez que ya la vulnerabilidad había sido resuelta y cuando la mayoría de los nodos de la red habían sido actualizados con la excusa de la denegación de servicio… pero la actualización no fue lo suficiente rápida como para evitar que un malote pudiera explotarla.
El ataque:engañar a la red diciendo que hay el doble de monendas de las que de verdad hay
El pasado 26 de septiembre, uno de estos ‘posibles mineros maliciosos’ aprovechó el error de double-spending para crear 240 millones de monedas de una criptomoneda llamada PINGEONCOIN (PGN), cuyo valor aproximado es de 15.000 dólares. ¿Por qué PGN y no Bitcoins? Porque PGN no tenía aún el software actualizado. El cibercriminal consiguió generar todas estas monedas y vendió el 50% de los 240 millones, no pudo venderlas todas porque se congelaron los depósitos y las retiradas de forma preventiva al detectar el enorme número de monedas que se estaban moviendo.
Ni que decir tiene que esto tuvo un impacto brutal para PGN, que perdió el 22% de su valor en unas pocas horas y en este momento se encuentra al valor mínimo posible, 1 satoshi (unos 0,000067 dólares):
Y nos vuelve a llevar a la importancia de las actualizaciones, aunque en esta ocasión no podríamos haber evitado el ataque sobre la red.