Un bug reportado en Solana puso en evidencia un medio por el que un hacker pudo haber sustraído varios millones de dólares de las distintas DApps que están desplegadas en la red.

El bug o error en cuestión fue reportado por la empresa de ciberseguridad Neodyme y afecta a la Solana Program Library (SPL), una librería usada para la generación de DApps en Solana.

Los investigadores de Neodyme, explicaron todo el proceso para explotar dicha vulnerabilidad en su blog oficial. Bajo el título de «Cómo hacerse millonario, 0,000001 BTC a la vez» (en inglés, How to Become a Millionaire, 0.000001 BTC at a Time), los expertos de Neodyme indican que el fallo permitiría a un atacante obtener hasta 27 millones de dólares por hora, y que los principales afectados por la vulnerabilidad serían protocolos como Tulip Protocol, Solend y Larix.

En total, los hackers tendrían acceso a unos $2.600.000.000 USD. Esto teniendo en cuenta el Total de Valor Bloqueado (TVL) de los distintos protocolos que usan SPL en Solana. Por sus características y dimensiones, este podría considerarse fácilmente como uno de los fallos más graves del ecosistema Solana, aunque por suerte el bug no fue explotado y ya ha sido corregido.

Te puede interesar: El gasto energético de la red Solana es muy inferior al de Google, los iPhone y otras criptomonedas

El bug pudo costar miles de millones a Solana

El error, que ya ha sido debidamente parcheado, tal como puede verse en GitHub de SPL, tuvo su origen en diciembre de 2020, cuando se creó el issue 991, que proponía mejorar las operaciones matemáticas de la librería y evitar vectores de ataques.

Sin embargo, pese al trabajo de los desarrolladores por corregirlo en ese entonces, en junio de este año el fallo aún continuaba presente. En el issue 1869, un usuario mostraba una prueba de concepto sobre como explotar este fallo.

Todo esto indica que el error estuvo al menos 11 meses dentro de la librería y no fue explotado de ninguna manera, con las terribles consecuencias que hubiera tenido. En palabras del equipo de Neodyme «un error de redondeo puede parecer inocuo y sin embargo puede llevar a vulnerabilidades criticas», y el mejor ejemplo de esas palabras está expuesto en todo este caso, aunque por suerte paso totalmente desapercibido para los hackers.

Robando millones, trocito a trocito

El bug en SPL funcionaba de forma bastante sencilla y por decirlo de una forma, elegante. El problema se originaba en que la librería no manejaba de forma consistente los redondeos. Por lo que, en cada operación bajo ciertas condiciones era posible hacerse furtivamente con decimales hasta convertirlas en cantidades millonarias.

El equipo de Neodyme comenzó su investigación el 1 de diciembre del año pasado. Allí, se encontraron con que el error podía ser explotado de forma efectiva. De hecho, la operación permitía que, trocito a trocito, un hacker bien documentado pudiera robarse toda una fortuna de distintos protocolos en Solana que usan la librería SLP.

Así, se dieron cuenta que había un grave error en las operaciones de redondeo. Cada vez que se realizaba una operación, la cantidad se redondeaba al número entero más cercano en el punto de retirada. La condición para que esto ocurrirá es que se le debiera al usuario una fracción de la unidad de referencia más pequeña de Solana (Lamport, el equivalente a satoshi en BTC). El resultado directo de esto, es que un usuario podría terminar con más o menos tokens dependiendo de la cantidad operada y, en promedio, dentro del protocolo se mantendría todo igual.

Sin embargo, esta situación poco consistente permitiría a un hackers usar el sistema en su propio beneficio. Para ello, solo tendrían que preparar un smart contract que explote el fallo y así llevarse los tokens que quieran. Y eso, fue lo que precisamente lograron los investigadores de Neodyme, advirtiendo a todos del error y ayudando con su arreglo.

De hecho, la prueba presentada para dar constancia del error les permitió hacerse con 0,000001 BTC (0,047 dólares). Y, si querían hacerse con más, solo debían reejecutar las operaciones. De esa forma, podrían ir sumando más dinero a su monedero hasta irse con un buen botín. Los investigadores calcularon que el exploit podría permitirle a un hacker obtener unos $7.500 USD por segundo o lo que es lo mismo, cerca de 27 millones de dólares por hora.

Estatus actual

Actualmente el fallo está solucionado, no solo en SLP sino también en los principales protocolos de código abierto que hacen uso de esta librería de Solana. La magia del software libre es que rápidamente se pueden compartir las mejoras y arreglos entre los distintos proyectos para que todos estemos más seguros. No obstante, Solana tiene un mix de proyectos bastante interesante y muchos de ellos son código cerrado.

Un buen ejemplo de esta situación lo vemos en Raydium. Este DEX es uno de los más usados en Solana con un TVL de 1,7 mil millones de dólares en la actualidad. Se trata de una gran aplicación, pero tiene un fuerte problema: es de código cerrado. Por tanto, es imposible verificar el código que hace funcionar el protocolo, para ayudar a detectar errores y más.

Por supuesto, esto no convierte a Raydium en una mala aplicación; aunque en el ecosistema blockchain estamos acostumbrado a los estándares y código abiertos. En esa situación, lo de Raydium es claramente un caso extraño.

Pero toda esta situación puede cambiar en un futuro no muy lejano. Hechos como el de este bug, harían pensar dos veces a los desarrolladores a la hora de implementar y liberar el código de sus protocolos. Todo ello, por supuesto, en pro de la seguridad y de la evolución de Solana como proyecto y ecosistema blockchain. En todo caso, una cosa es muy clara, Solana seguirá creciendo y consolidándose como una de las cadenas de bloques más importantes y eficientes del ecosistema cripto.

Continúa leyendo: Solana se rompe tras alcanzar su máximo de TPS por la alta demanda y uso de la red