Alpha Finance - REKT



Las artes oscuras de DeFi siguen siendo las más lucrativas.

La que sigue es una de nuestras historias más dramáticas hasta ahora.

Un cuento de magia falsa, confusión y acusación que lleva al hack de DeFi más grande hasta la fecha.

~$37.5 millones fueron robados en una compleja pieza de decepción DeFi, cuando un ataque multi-transaccional fue utilizado para saquear las bóvedas de Alpha Finance, dejando a muchos creyendo que que había sido el Iron Bank el afectado.

Este asesinato sucedió en una casa de espejos. La naturaleza cada vez más entrelazada de protocolos DeFi, combinada con la complejidad del ataque, dejó a la comunidad confundida respecto a quién fue la verdadera víctima, y quién tiene la responsabilidad de hacer las reparaciones.

El contrato del agresor hizo al código Homora “creer” que éste mismo le pertenecía, para poder manipular cifras de deudas internas en su sistema.

Esta fue una batalla privada entre protocolo y agresor. El contrato explotado no había sido anunciado todavía, ni estaba disponible para usuarios, así que no fueron afectados directamente. Nunca hemos visto un inside job tan descarado, y Alpha Finance se apresuró a señalar que tienen un sospechoso principal.

¿Por qué el contrato fue dejado en mainnet si todavía no estaba listo? Preguntamos a Alpha Finance, y esto nos dijeron:

“Lanzamos varias pools e.g. sUSD al nivel contrato pero no al interfaz de usuario porque nos estuvimos preparando para lanzar nuevas pools, incluyendo sUSD, la siguiente semana.”

Los jugadores grandes se movieron rápido para preservar su capital dentro de la confusión. SBF sacó $400 millones de FTT de Cream Finance, y Three Arrows Capital mandó $3 millones de $ALPHA a Binance, donde su único propósito puede ser vender.

Todos los tokens relacionados con el ataque cayeron en valor.

El token de gobernanza de Alpha Homora, ALPHA, cayó de $2.25 a $1.78.

El token de gobernanza de Iron Bank, CREAM, cayó de $288.32 a $193.51.

AAVE, el token de gobernanza del hogar de los controvertidos préstamos flash, y que ha permitido muchos ataques de esta naturaleza, cayó desde $518 a un bajo valor de$492 más tarde en el día.

Sin embargo, los precios de los tokens no son la parte más interesante de esta historia…

El equipo de Alpha Finance realizó un excelente post-mortem , y lo que descubrieron fue espantoso. Las implicaciones de nuestra investigación colectiva sugieren una profundidad de corrupción mucho peor de lo esperado.

Queda por ver si Alpha Finance hará públicas sus acusaciones, pero su declaración inicial de tener un sospechoso principal sugiere que vienen repercusiones.

Del post-mortem oficial, vemos que el agresor tenía que saber lo siguiente para lograr el ataque:

  • HomoraBankv2 tiene una pool de sUSD al nivel contrato en preparación para el estreno próximo, que no está disponible en la interfaz de usuario ni anunciado públicamente.
  • La pool de sUSD no tenía liquidez, lo que permite al agresor manipular e inflar con libertad la total debt amount y la total debt share.
  • Hay un error de redondeo en el cálculo de la función de préstamo, que solamente tiene efecto cuando el agresor es el único prestatario.
  • La función resolveReserve puede aumentar totalDebt sin hacer crecer totalDebtShare y la función, destinada a colectar ingresos para la pool de reserva, puede ser llamada por cualquiera.
  • HomoraBankv2 acepta cualquier spell customizado, siempre que el invariante compruebe que colateral > préstamo (un spell es similar a una strategy en Yearn).

Con tantos usuarios vigilando, los ladrones dejaron un rastro claro de pistas y en un raro ejemplo de contra-agresión, las víctimas han señalado a su agresor.

Los anteriores requisitos comprueban que información privilegiada fue necesaria para llevar a cabo este ataque. Sin embargo, debido al rango de protocolos y empresas de auditoría involucradas, el infiltrado pudo haber venido desde varios diferentes ángulos.

rekt ya no tiene interés en hacer acusaciones, pero esperamos con ansias ver como Alpha Finance maneja la situación.

Cómo pasó según Alpha Finance:

1. El agresor creó un evil spell (equivalente a una strategy de Yearn). https://etherscan.io/tx/0x2b419173c1f116e94e43afed15a46e3b3a109e118aba166fcca0ba583f686d23

2. El agresor intercambia ETH -> UNI, y suministra ETH + UNI a la pool de Uniswap (obteniendo ETH/UNI LP token). En la misma transacción, cambia ETH -> sUSD en Uniswap y deposita sUSD al Iron Bank de Cream (recibiendo cysUSD). https://etherscan.io/tx/0x4441eefe434fbef9d9b3acb169e35eb7b3958763b74c5617b39034decd4dd3ad

3. LLama ejecutar al HomoraBankV2 usando el evil spell (creando posición 883), realizando: Borrow 1000e18 sUSD Deposit UNI-WETH LP a WERC20, y usa como colateral (para evitar la prueba colateral > préstamo). Mientras tanto, el agresor tiene 1000e18 sUSD debt shares (por ser el primer prestatario). https://etherscan.io/tx/0xcc57ac77dc3953de7832162ea4cd925970e064ead3f6861ee40076aca8e7e571

4. LLama ejecutar al HomoraBankV2 usando el evil spell de nuevo (a posición 883), realizando: Repay 1000000098548938710983 sUSD (deuda actual con interés acumulado es 1000000098548938710984 sUSD), que lleva a un repay share de 1 menos que el total share. Como resultado, el agresor tiene ahora una deuda de 1 minisUSD y 1 debt share. https://etherscan.io/tx/0xf31ee9d9e83db3592601b854fe4f8b872cecd0ea2a3247c475eea8062a20dd41

5. Llama resolveReserve al banco sUSD, acumulando deuda de 19709787742196, mientras totalShare se queda en 1. Estado actual: totalDebt = 19709787742197 y totalShare = 1. https://etherscan.io/tx/0x98f623af655f1e27e1c04ffe0bc8c9bbdb35d39999913bedfe712d4058c67c0e

6. Llama ejecutar al HomoraBankV2 usando el evil spell de nuevo, realizando (repetir 16 veces, cada vez duplicando el importe prestado): Borrow 19709787742196 minisUSD y transferir al agresor (duplicando cada vez, dado que totalDebt se duplica cada vez que el préstamo es exitoso). Cada Borrow es 1 menos que la totalDebt, lo que causa el correspondiente borrow share = 0, así que el protocolo lo trata como un préstamo sin deuda. Al final de la transacción, el agresor deposita 19.54 sUSD al Iron Bank de Cream. https://etherscan.io/tx/0x2e387620bb31c067efc878346742637d650843210596e770d4e2d601de5409e3

7. Sigue el proceso: llama ejecutar al HomoraBankV2 usando el evil spell de nuevo, realizando (repetir 10 veces, cada vez duplicando el importe prestado). Al final de la transacción, el agresor deposita 1321 sUSD al Iron Bank de Cream. https://etherscan.io/tx/0x64de824a7aa339ff41b1487194ca634a9ce35a32c65f4e78eb3893cc183532a4

8. Flash loan de Aave (tomando un préstamo de 1,800,000 USDC). Cambia 1,800,000 USDC a 1,770,757.56254472419047906 sUSD, y depositalo a Cream para obtener suficiente liquidez y que el agresor puede pedir préstamo usando el spell customizado. Sigue duplicando el préstamo de sUSD de 1,322.70 sUSD a 677,223.15 sUSD (10 veces en total). Cambia 1,353,123.59 sUSD a 1,374,960.72 USDC en Curve. Toma un préstamo de 426,659.27 USDC de Cream (dado que el agresor ya ha depositado sUSD en paso 2). https://etherscan.io/tx/0x7eb2436eedd39c8865fcc1e51ae4a245e89765f4c64a13200c623f676b3912f9

9. Repite paso 8, pero con ~10M USDC (sin borrowing de USDC al final). https://etherscan.io/tx/0xd7a91172c3fd09acb75a9447189e1178ae70517698f249b84062681f43f0e26e

10. Repite con 10M USDC (sin borrowing de USDC al final). https://etherscan.io/tx/0xacec6ddb7db4baa66c0fb6289c25a833d93d2d9eb4fbe9a8d8495e5bfa24ba57

11. Toma prestado 13,244.63 WETH + 3.6M USDC + 5.6M USDT + 4.26M DAI. Suministra las stablecoins a Aave (para ganar aTokens, para que no se pueda congelar las USDC & USDT). Suministra aDAI, aUSDT, aUSDC a la pool a3Crv de Curve. https://etherscan.io/tx/0x745ddedf268f60ea4a038991d46b33b7a1d4e5a9ff2767cdba2d3af69f43eb1b

12. Anade a3Crv LP token al indicador de liquidez de Curve. https://etherscan.io/tx/0xc60bc6ab561af2a19ebc9e57b44b21774e489bb07f75cb367d69841b372fe896

13. Las demás transacciones suministran a Tornado Cash, GitCoin Grants. 1k ETH son transferidos a cada una de las deployer addresses de Cream y Alpha.

Esta historia es única en su reparto.

Siempre hemos anticipado algo de ambigüedad e intercambio de roles dentro de las actividades de los white hats/black hats, pero pocas veces vemos acusaciones tan claras desde la víctima.

Andre Cronje, quien acaba de asociar a Yearn con Alpha Homora hace semanas, escribió sobre el ataque:

Toma el tiempo para estudiar el exploit. 9 transacciones. 4 manipulaciones distintas. Una incluye un cálculo exacto de deudas. A equipos de investigadores les llevó horas descifrarlo. Alpha tomó medidas inmediatas para mitigar el exploit. Fue abordado dentro de minutos de su descubrimiento inicial.

Y la respuesta de Banteg:

El setup está totalmente loco. De ninguna manera alguien lo hubiera encontrado viendo casualmente los contratos, especialmente las cosas no anunciadas.

Tal vez esto provocará otra adquisición de Yearn; el nombre Cronje aparece 4 veces en el post-mortem, y el patrón parece familiar…

¿Cuánto más puede durar esta época para los hackers anónimos?

Por el hecho de que la lista de posibles sospechosos es tan corta, es más fácil descartar y rastrear potenciales agresores, y en este caso la lista es aún más corta que lo normal.

“No confíes, verifica” es un mantra excelente cuando se trabaja con el código, pero no impide la creciente paranoia social que debe de estar propagándose en las altas esferas de las finanzas descentralizadas. Estamos viviendo durante un periodo de crecimiento sin precedente para cryptocurrency y DeFi, en donde el costo de no trabajar es increíblemente alto. La carga mental para los desarrolladores en DeFi se vuelve más pesada día a día.

Imperios han sido levantados sobre líneas de código y el futuro de las finanzas está siendo construido ante nuestros ojos.

Los desarrolladores están atrapados en una carrera hacia el cielo mientras infiltrados corruptos ayudan a hackers a trabajar por debajo del suelo, socavando los cimientos.

Cuando una torre cae, el resto observa y aprende. Incluso antes de que se asiente el polvo, las multitudes han avanzado, y equipos implacables vuelven a la carrera para reconstruirla aún más fuerte.

¿Cuanto tiempo pueden mantener esta intensidad antes de que el error inevitable cause la caída de su manto de anonimidad?


compartir artículo

REKT sirve como plataforma pública para autores anónimos, nos deslindamos de la responsabilidad por las opiniones y contenidos alojados en REKT.

dona (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

aviso legal:

REKT no es responsable ni culpable de ninguna manera por cualquier Contenido publicado en nuestro Sitio Web o en conexión con nuestros Servicios, sin importar si fueron publicados o causados por Autores ANÓN de nuestro Sitio Web, o por REKT. Aunque determinamos reglas para la conducta y publicaciones de los Autores ANÓN, no controlamos y no somos responsables por cualquier contenido ofensivo, inapropiado, obsceno, ilegal o de cualquier forma objetable, que se pudiera encontrar en nuestro Sitio Web o Servicios. REKT no es responsable por la conducta, en línea o fuera de línea, de cualquier usuario de nuestro Sitio Web o Servicios.