Tips
- Un hacker de sombrero blanco descubrió una vulnerabilidad en un contrato inteligente Ethereum que puso en riesgo casi 10 millones de dólares en ETH.
- De la noche a la mañana, se organizó un equipo de rescate para sacar los fondos del peligro.
- El esfuerzo unió a un equipo de expertos en seguridad de cadenas de bloques y mineros de todo el mundo.
Un investigador de seguridad de blockchain y hacker de sombrero blanco especializado en Ethereum, conocido como samczsun, publicó hoy un detallado "post mortem" de una operación encubierta que resultó en el rescate de 25.000 ETH, por un valor de más de 9,6 millones de dólares en ese momento. Los fondos se salvaron de un contrato inteligente en Ethereum.
How do you rescue 10 million dollars from a vulnerable smart contract without letting attackers know it’s there? Last Tuesday, @epheph, @sparkpool_eth, @tzhen, @wadealexc, and I found out.https://t.co/WOjO651VIw
— samczsun (@samczsun) September 24, 2020
El 15 de septiembre, samczsun estaba revisando los contratos inteligentes de Ethereum en busca de vulnerabilidades (como suele hacer). Eventualmente, descubrió lo que más tarde resultó ser parte del protocolo de Lien Finance: un contrato inteligente que contenía más de 25.000 ETH.
Estos fondos podrían haber sido tomados por cualquiera.
Según el post, el contrato inteligente contenía una función de "quemado". Esencialmente, esto permitía a cualquier usuario acuñar un montón de tokens sin valor y cambiarlos por todo el ETH almacenado en el contrato, escapando con un alijo de casi 10 millones de dólares. Por el bien del mundo DeFi, Samczsun decidió intervenir.
Como el equipo de Lien Finance era anónimo, el Sombrero Blanco se puso en contacto con todos los involucrados. Alexander Wade, un investigador de seguridad de ConsenSys —una de las dos compañías que auditó el contrato inteligente (y también financia a la editorial independiente Decrypt)— y el especialista en seguridad de Ethereum Scott Bigelow pronto se unieron a la operación de rescate.
Siendo realistas, había dos maneras en que la situación podría haberse resuelto. Primero, Lien Finance podría haber revelado públicamente la vulnerabilidad, pero eso habría creado una oportunidad perfecta para que los hackers arrebataran los fondos, como colocar un cartel de "dinero gratis".
Segundo, el equipo de hackers pudo haber explotado el contrato inteligente y luego devolver los fondos a sus legítimos dueños. Pero esto definitivamente habría atraído a los llamados bots frontrunners— avanzados predadores del mempool de Ethereum.
El mempool, expresamente llamado "Bosque oscuro de Ethereum", es un "área temporal" especial donde las transacciones se congregan antes de que los mineros las acepten para incluirlas en el siguiente bloque. Y esta área está constantemente patrullada por robots especiales que buscan cualquier transacción explotable para secuestrarla.
Básicamente, los "frontrunners" podrían copiar automáticamente cualquier transacción en el mempool, reemplazar esas direcciones con las suyas propias y asegurarse de que la operación duplicada sea recogida por los mineros primeramente. En la situación actual, eso significa que 10 millones de dólares podrían haber sido fácilmente robados por los pioneros en cuestión de segundos. El secreto era esencial.
Con la ayuda de la investigadora de blockchain Tina Zhen, el equipo añadió miembros tanto de CertiK -la segunda compañía que auditó el contrato inteligente- como de la pool de minería Ethereum SparkPool al esfuerzo de rescate, para finalmente llegar a Lien Finance.
Después de un corto período de integración, los codificadores de SparkPool pasaron las siguientes horas desarrollando y probando un "API de sombrero blanco" especializado que permitiría a los mineros recoger una transacción sin mostrarla en el mempool. A su vez, los miembros del equipo de whitehat terminaron el guión para generar cuatro transacciones secuenciales firmadas que finalmente salvarían los 25.000 ETH.
Pero estas transacciones no fueron diseñadas para retirar directamente los fondos. Si se ejecutaban en el orden correcto, transferirían 30.000 fichas de SBT y LBT -que son infinitamente acuñables- a Lien Finance, permitiéndole convertir estas fichas de nuevo en ETH a través de la función de quemado con la operación final.
Cuando todos los preparativos se completaron, el equipo de hackers finalmente comenzó la operación de rescate. Trabajando con una compañía minera, las transacciones evadieron con éxito a los robots. Esto se debe a que las transacciones no se enviaron al mempool, sino que fueron colocadas directamente en un bloque por los propios mineros.
"Después de adaptar el guión de creación de transacciones para alimentar las transacciones directamente al nuevo punto final de SparkPool, llegó el momento. "Dudé por un momento, pero este fue absolutamente nuestro mejor esfuerzo. Podríamos perder 9,6 millones de dólares, pero no habría arrepentimientos", explicó el post, añadiendo, "Los ~15 bloques que tomó antes de que nuestras transacciones fueran incluidas se sintieron como horas, pero finalmente, tuvimos nuestras inmaculadas transacciones: minadas, en orden, no revertidas".
Ahora, lo que quedaba era que el equipo de Lien Finance cambiara las fichas de SBT y LBT por ETH usando la función de quemado. Unos momentos después de que se ejecutara la transacción final, Etherscan informó de que se había completado con éxito, barriendo 25.000 ETH del peligro.
Así, el equipo de gabardina "escapó del bosque oscuro" y ahorró una pequeña fortuna.