A principios de esta semana, el protocolo de préstamo descentralizado bZx fue explotado en ataques de "préstamos rápidos" consecutivos. Si bien las dos explotaciones eran distintas, los resultados finales siguieron siendo los mismos. En total, se obtuvieron 954,000 dólares de la plataforma. ¿Pero qué pasó exactamente? ¿Fue un exploit, un simple caso de arbitraje o un ataque malicioso? ¿Y a dónde van las finanzas descentralizadas a partir de aquí?

No ha sido una buena semana de publicidad para el sector DeFi. Para algunos, el movimiento que promete una alternativa al sistema financiero heredado empieza a parecer un experimento fallido. Para otros, los ataques equivalen a poco más que ser atrapados en el lado equivocado de un comercio. Pero independientemente de la semántica, ya sea que estos ataques transpiraron de una laguna legal legítima o fueron el resultado de un ataque premeditado, la fe en DeFi está siendo verdaderamente puesta a prueba.

El primer ataque

El 14 de febrero, se produjo el primer ataque. En un post-mortem compilado desde el incidente, el cofundador de bZx, Kyle Kistner, describe el momento exacto en que ocurrió el ataque. El equipo de bZx estuvo en la conferencia de ETHDenver, una velada de Ethereum que irónicamente celebra lo mejor de DeFi. Las alarmas comenzaron a sonar cuando el equipo recibió información sobre una transacción "sospechosa". "Inmediatamente regresamos a casa desde la hora feliz de tBTC", escribe Kistner.

Kistner notificó a los miembros del grupo de Telegram de la compañía, explicando que se había ejecutado un "exploit" en un contrato de bZx - que fue pausado rápidamente - y que una "porción de ETH" se perdió. La cantidad real extraída en el primer incidente ascendió a 1,193 Ether (ETH). Haciendo eco de las palabras del jefe de Binance, Changpeng Zhao, bZx afirmó que los fondos de los usuarios estaban "SAFU".

Afortunadamente para sus usuarios, bZx funciona con un sistema de seguridad: recoge el 10% de todos los intereses ganados por los prestamistas y los agrega a un fondo de seguro. En consecuencia, las pérdidas para los usuarios de bZx son nominales. Para la plataforma bZx, sin embargo, el ataque vino con un alto costo de reputación.

Realizando el robo

¿Pero cómo logró el atacante materializar un beneficio de 1.193 ETH de la nada? Para usar una explicación un tanto reductora, el atacante ideó una red de transacciones para ejecutar un "bombeo y descarga".

Así es como sucedió:

Primero, el atacante sacó un préstamo de 10,000ETH en la plataforma de préstamos DeFi, dYdX. Luego dividió el préstamo entre BZx y otra plataforma de préstamos conocida como Compound. los ETH enviados a Compound fueron usados para colateralizar otro préstamo por 112 wrapped Bitcoin (WBTC). Mientras tanto, los 1,300 ETH asignados a bZx se usaron para ir en corto a favor de WBTC.

Aprovechando la baja liquidez de un exchange descentralizado conocido como Uniswap, que comparte datos de precios con bZx a través de la red DeFi, Kyber, el atacante logró bombear el precio de WBTC en Uniswap a través del corto WBTC colocado en bZx.

El antagonista luego dumpeo el WBTC prestado de Compound en Uniswap, aprovechando la tasa de mercado inflada. Con las ganancias en mano, el atacante pagó el préstamo original de dYdX en su totalidad y se embolsó un beneficio fresco de 1,193 ETH dejando a bZx con un préstamo subcolateralizado.

Pero aquí está la sorpresa: Todo lo que se detalla arriba fue ejecutado en una sola transacción, realizada a través de un producto DeFi conocido como "flash loan".

Préstamos rápidos y errores en los contratos

Los préstamos rápidos permiten a los comerciantes tomar un préstamo sin ningún tipo de respaldo, es decir, eliminan la necesidad de una garantía. Son capaces de hacer esto porque el préstamo se devuelve inmediatamente. Los árbitros utilizan los préstamos rápidos junto con contratos inteligentes, que codifican para llevar a cabo operaciones de arbitraje calculadas: la compra y venta simultánea de activos en diferentes mercados.

Ejecutados atómicamente, los préstamos rápidos se comercializan como "sin riesgo", ya que la red Ethereum rectifica cualquier fallo en el pago del préstamo al revertir la transacción original. Como resultado de su naturaleza atómica, ninguna de las partes fue capaz de interceptar el ataque del flash loan mientras estaba sucediendo. Zhuoxun Yin, jefe de operaciones de dYdX - el exchange donde el préstamo flash fue prestado - le dijo a Cointelegraph:

"No estábamos al tanto de nada oficialmente hasta que todo sucedió. Estas transacciones son todas atómicas, lo que significa que todo se ejecuta o falla".

Sin embargo, no eran sólo préstamos rápidos a disposición del atacante. También se aprovecharon de las vulnerabilidades del contrato inteligente de BZx. Kistner explicó a Cointelegraph cómo se permitió que ocurriera el ataque inicial:

"El primer ataque fue bastante simple, ya que hicieron un gran comercio que se comió los fondos de los prestamistas. Se colocó una bandera en lo alto de la pila que permitió al comercio evitar un control sobre si estaban poniendo en peligro los fondos de los prestamistas".

El chequeo eludido que Kistner mencionó es el mismo que el ex ingeniero de Google, Korantin Auguste, menciona en su detallado análisis del ataque: "El atacante explotó un error en bZx que causó que comerciara una enorme cantidad en Uniswap a un precio inflado 3 veces".

Resulta que no se desencadenó una función crucial para verificar si se había producido un deslizamiento del mercado. Si lo hubiera hecho, habría anulado la posición del atacante en BZx, haciendo ineficaz el comercio. En cambio, se permitió al atacante continuar sin impedimentos.

Segundo asalto

Cuatro días después, el 18 de febrero, bZx fue víctima de otro ataque, forzando otra suspensión del protocolo. Al igual que el primero, los préstamos flash fueron utilizados para facilitar un bombeo y descarga en Uniswap, esta vez resultando en que el atacante se llevara 2,378 ETH.

Esta vez, el atacante pidió un préstamo flash de 7,500 ETH en bZx, cambiando 3,517 ETH por 940,000 Synthetix USD (sUSD), una moneda estable vinculada al dólar de los Estados Unidos. A continuación, el atacante utilizó 900 ETH para comprar otra ronda de sUSD en Kyber y Uniswap, aumentando el precio del sUSD a más de 2.5 veces el precio de mercado.

Entonces, usando el ahora inflado sUSD prestado de Synthetix como garantía, el atacante pidió un préstamo de 6,796 ETH en bZx. Usando el ETH recién prestado y el ETH sobrante del préstamo original, el atacante devolvió el préstamo flash de 7,500 ETH y una vez más sacó un beneficio, esta vez de 2,378 ETH.

Esto dejó a BZx con otro préstamo sin garantía. Afortunadamente, esto fue cubierto por el fondo de seguros

Culpando al oráculo

En lugar de una repetición del error original, que fue parcheado después del primer ataque, el segundo asalto fue aparentemente el resultado de la manipulación del oráculo.

Los oráculos son intermediarios basados en blockchain que alimentan con datos externos los contratos inteligentes. En este caso, el oráculo de precios de bZx transmitió el precio inflado del USD sin verificación, lo que llevó a bZx a creer que el préstamo de 6,769 ETH estaba totalmente garantizado. Un análisis de PeckShield, una empresa de seguridad de cadenas de bloques, resumió la explotación del oráculo de la siguiente manera:

"La manipulación del oráculo eleva sustancialmente el precio del token afectado, es decir, el sUSD, y la hace extremadamente valioso en el sistema de préstamos bZx. El atacante puede entonces simplemente depositar el sUSD comprado o acumulado anteriormente como garantía para pedir prestado WETH con fines de lucro (en lugar de venderlo o desecharlo)".

Yin señala que usando Kyber (y por proxy, Uniswap) como oráculo de precio, bZx puede haber estado pidiendo problemas: "Los protocolos deberían usar oráculos de alta calidad, no DEXs en cadena directamente como oráculos de precio. Los oráculos que son impulsados por reporteros fuera de la cadena serían más seguros". También señaló a los DEX que apoyan los activos de baja liquidez:

"Muchos DEX apoyan activos que son muy poco líquidos. La iliquidez significa que los mercados pueden moverse mucho más fácilmente. La liquidez necesita mejorar, lo que estoy seguro que sucederá con el tiempo - hay factores técnicos y de mercado que deben ser superados".

La volatilidad junto con la baja liquidez puede resultar una mezcla traicionera. En este caso, la caída del mercado era inevitable, y el atacante lo sabía. Afortunadamente, desde el incidente, bZx ha tomado la decisión de asociarse con la red descentralizada de oracle Chainlink y ha hecho uso de sus datos de precios.

¿Hack, ataque o arbitraje legítimo?

Para algunos, estos casos equivalen a poco más que un comercio competente de arbitraje. Sin embargo, la realidad no es tan simple. El atacante abusó de varias vulnerabilidades dentro de los protocolos de bZx, aprovechando los mercados de baja liquidez y empleando tácticas de manipulación flagrantes. Kistner, cofundador de bZx, le dijo a Cointelegraph que es un caso aislado:

"Es un ataque porque usó nuestro código de manera que no fue diseñado para producir un resultado inesperado que creó responsabilidades para terceros".

Compartiendo una opinión similar, Auguste sostiene que no importa cómo se mire, estos fueron ataques maliciosos:

"En ambos casos, hubo erorres explotados en el código de bZx, así que definitivamente fueron ataques y no pueden calificarse como un arbitraje inteligente o algo legítimo".

Cointelegraph también se puso en contacto con Thomas Glucksmann, vicepresidente de desarrollo de negocios globales de la empresa de análisis de cadenas de bloques, Merkle Science. Al igual que los demás, Glucksmann clasificó el incidente como un hacking, sugiriendo que sigue los mismos principios que el robo por cualquier otro medio.

Sin embargo, se apresuró a volver a centrar la atención en bZx, insinuando que cualquier vector de ataque debería haber sido parcheado antes, especialmente dadas las lecciones aprendidas del hack de la organización autónoma descentralizada en 2016.

"Los desarrolladores pueden típicamente evitar tales escenarios asegurando un proceso de auditoría de contrato inteligente y completo. Es sorprendente que algunos equipos aún no hayan aprendido de las consecuencias de la debacle de DAO y demuestra la actual fragilidad de los servicios de DeFi".

Sin embargo, Glucksmann no descartó del todo a BZx. En términos de control de daños, dice que tanto el post-mortem como el fondo de seguros ayudan mucho a suavizar el golpe.

¿Qué pasa con DeFi en su conjunto ahora?

Tras el último ataque a bZx, el sector DeFi informó de una importante pérdida de activos bloqueados, que cayó aproximadamente 140 millones de dólares desde un máximo de 1,200 millones de dólares el 18 de febrero. Sólo semanas antes de los ataques, DeFi se jactó de un hito de 1,000 millones de dólares en activos bloqueados. Este deterioro fue especialmente prevalente en el Ether bloqueado donde las pérdidas totalizaron alrededor de 200,000 ETH, de acuerdo con los datos del sitio de análisis, Defipulse.com.

Valor total bloqueado en DeFi

Sin embargo, Kistner no ve estas hazañas como la sentencia de muerte de DeFi. En su lugar, sugiere que es simplemente parte del desarrollo del ecosistema:

"La NASA no contrató a gente que escribiera un código perfecto para lanzar transbordadores espaciales. Lo que tenían eran rigurosos procesos en marcha a lo largo de todo el ciclo de desarrollo del código. Tenemos que tratar el lanzamiento de una DApp de DeFi como tratamos el lanzamiento de un transbordador al espacio."

Si bien DeFi está todavía en sus comienzos, el mercado, que antes era un nicho, sigue madurando y se está convirtiendo en el centro de atención de la corriente principal. Sin embargo, el sector está funcionando sin un marco de pruebas adecuado, una omisión que seguramente provocará más tropiezos.

Related: DeFi Begins to Move From a Niche Market to Mainstream Finance

Para Glucksmann, si bien es necesario hacer mayor hincapié en los protocolos de "prueba de combate" antes de su lanzamiento, también es necesario debatir sobre la reglamentación apropiada. Por lo tanto, es demasiado pronto para dar de baja al sector:

"Hasta la fecha, los únicos modelos de negocio rentables en el espacio de criptos eran la minería, los exchanges y la provisión de liquidez. Los servicios de DeFi, como los préstamos, podrían ser los siguientes. La falta de reglamentación que abarque a DeFi en muchas jurisdicciones presenta tanto oportunidades como riesgos, por lo que los usuarios de los servicios de DeFi deben estar dispuestos a aceptarlo por el momento".

Podría decirse que los procedimientos de diligencia debida como los chequeos de Conozca a su cliente y Antilavado de dinero podrían desanimar a los malos actores. Aunque, dada la naturaleza intrínsecamente descentralizada de DeFi, sus proponentes probablemente se rebelarían ante la idea.