Un FlashLoopAdapter personalizado utilizado para gestionar posiciones apalancadas de Aave v3 ha sido explotado en Ethereum, dejando dos carteras Safe con pérdidas estimadas en $305,000 después de que un atacante eludiera los controles de acceso del módulo.
Resumen
- Una falla de control de acceso en FlashLoopAdapter permitió a un atacante drenar alrededor de $305,000 de dos carteras Safe en Ethereum.
- El atacante utilizó un préstamo flash de Morpho para pagar aproximadamente 1,335 WETH de deuda en Aave antes de retirar alrededor de 1,306 weETH en colateral.
- El fundador de Aave, Stani Kulechov, dijo que el contrato afectado era un adaptador de terceros construido sobre Aave y no tuvo ningún efecto en Aave v3.
La firma de seguridad blockchain SlowMist dijo que el atacante explotó una falla de autenticación en el contrato FlashLoopAdapter, lo que permitió que un Safe falso pasara las verificaciones destinadas a restringir el acceso a carteras que habían habilitado el módulo. El atacante finalmente retuvo alrededor de 114.09 ETH después de usar el módulo para manipular posiciones mantenidas por las carteras afectadas.
El incidente involucró un contrato personalizado construido sobre Aave en lugar del protocolo central Aave v3. Defimon Alerts, que detectó el ataque a las 15:08:57 UTC del 1 de octubre, dijo que Aave v3 en sí no se vio afectado.
Los controles de acceso de FlashLoopAdapter permitieron que un Safe falso pasara
FlashLoopAdapter fue diseñado como un módulo Safe para abrir y cerrar posiciones apalancadas a través de Aave v3. Los Safes que habilitaron el módulo podían usarlo para gestionar estrategias de looping que involucraban activos prestados y colateral.
Según SlowMist, la debilidad se encontró en los controles de acceso utilizados por las funciones open() y close() del adaptador.
En lugar de establecer de forma independiente que el llamador era un Safe legítimo, las funciones verificaban si ISafe(msg.sender).isModuleEnabled(address(this)) devolvía true. Un atacante podía desplegar un contrato Safe falso programado para devolver true cuando FlashLoopAdapter realizara la verificación.
Una vez que el Safe falso pasó esa prueba, el atacante obtuvo acceso a funcionalidades que deberían haber estado limitadas a carteras autorizadas.
Defimon Alerts dijo que las verificaciones realizadas durante la callback no detuvieron la transacción porque el contrato del atacante también actuó como proveedor de liquidez flash. Otra función, _swap(), luego permitió una llamada directa a un swapRouter utilizando swapCalldata proporcionada por el llamador.
Ambas entradas podían ser controladas por el atacante.
En lugar de proporcionar un enrutador de swap ordinario, el atacante configuró el enrutador como una de las carteras Safe víctimas. Los calldata se configuraron para llamar a execTransactionFromModule, una función Safe que permite a un módulo habilitado ejecutar una transacción.
FlashLoopAdapter ya estaba habilitado por el Safe víctima, por lo que la llamada resultante fue aceptada.
Un problema similar relacionado con permisos adjuntos a módulos Safe surgió en septiembre. Un exploit de cartera Safe en Ethereum que involucró aproximadamente 2,900 rsETH fue rastreado por BlockSec hasta verificaciones de autorización débiles en un contrato ejecutor conectado a un módulo Safe habilitado. Un bot MEV se adelantó al intento de exploit y recibió los activos antes de que la transacción de ataque original se revirtiera, según informó crypto.news anteriormente.
El atacante reembolsó 1.335 WETH para desbloquear el colateral weETH
El ataque a FlashLoopAdapter implicó más que simplemente transferir activos que ya estaban dentro de las billeteras afectadas.
Defimon Alerts dijo que el atacante tomó un préstamo flash de Morpho WETH y usó la liquidez prestada para pagar aproximadamente 1.335 WETH de deuda de Aave perteneciente al primer Safe, identificado como 0xcfedf95a3653a128dfc2e4288758a1a1850d169f.
Pagar la deuda liberó el colateral vinculado a la posición apalancada de Aave. El atacante luego usó la ruta de ejecución del módulo comprometido para hacer que el Safe retirara aproximadamente 1.306 weETH a una dirección controlada por el atacante.
Un segundo Safe, 0xe3b23e47df7cd85876ac6cb05bdb9d7cd5b28520, perdió otros 6,4 weETH a través del mismo módulo vulnerable.
Defimon dijo que ambos Safes afectados compartían el mismo propietario único.
Parte del weETH retirado se cambió a WETH mientras el atacante liquidaba el préstamo flash y otras partes de la transacción. Al atacante le quedaron alrededor de 114,1 ETH, valorados en aproximadamente $305.000 cuando se reportó el incidente.
SlowMist situó por separado la pérdida en alrededor de 114,09 ETH y dijo que aproximadamente 1.300 WETH de deuda se pagaron durante el proceso de desbloqueo del colateral.
Por lo tanto, la gran retirada de colateral no representa las ganancias netas del atacante. Gran parte del capital movido a través de la transacción estaba vinculado al pago de la deuda y al desmantelamiento de la posición apalancada antes de que los activos restantes pudieran ser tomados.
Los contratos de Aave v3 no fueron identificados como el componente vulnerable
Ninguna de las alertas de seguridad identificó un fallo en Aave v3 en sí mismo.
El fundador y CEO de Aave, Stani Kulechov, dijo que el contrato afectado era un adaptador externo de terceros construido sobre Aave y tenía "cero efecto sobre Aave v3".
FlashLoopAdapter es un contrato personalizado separado que utiliza Aave v3 para gestionar posiciones apalancadas mantenidas a través de billeteras Safe. La vulnerabilidad reportada concernía a cómo el adaptador autenticaba a las personas que llamaban y qué podían hacer que ejecutara el módulo habilitado.
La distinción se asemeja a otros incidentes en los que un protocolo o servicio permaneció operativo mientras un módulo conectado a billeteras Safe proporcionaba la ruta utilizada por un atacante.
En mayo, un exploit que involucró el SquidRouterModule drenó Safes en Ethereum y Base. Alrededor de $3 millones a $3,2 millones fueron robados de 86 billeteras después de que los atacantes atacaran un módulo Safe de terceros, mientras que Squid dijo que sus contratos de enrutador principales y los fondos de los usuarios no se vieron afectados.
Otro incidente relacionado con Safe surgió días después cuando se instó a los usuarios de Gnosis Pay a retirar fondos tras un exploit que involucró su módulo de retardo Zodiac. El cofundador de Gnosis, Martin Köppelmann, dijo en ese momento que el fallo podría permitir a un atacante iniciar transacciones desde Safes usando el módulo afectado.
A los módulos Safe se les puede otorgar permiso para ejecutar transacciones desde una billetera sin pasar por el flujo estándar de transacciones del propietario cada vez. FlashLoopAdapter dependía de esa capacidad para automatizar posiciones apalancadas de Aave, pero el mismo permiso significaba que una elusión exitosa de la lógica de autenticación del adaptador podría alcanzar los activos controlados por el Safe.
El atacante de FlashLoopAdapter retuvo alrededor de 114 ETH
SlowMist identificó la dirección del atacante como 0x42c2633438609881c8fBAb82414eb9A0c45F9353, mientras que el contrato vulnerable FlashLoopAdapter fue listado como 0x16bb8b912da187870c23ec6756bb3fad061283d8.
La secuencia del ataque combinó la autenticación Safe falsificada con el control sobre el enrutador del adaptador y los parámetros de calldata. Una vez que el contrato malicioso pasó la verificación inicial, el atacante dirigió el adaptador de vuelta hacia el Safe víctima e invocó su función de ejecución de módulo.
Un préstamo flash de Morpho proporcionó los WETH necesarios para pagar la deuda de Aave de la billetera más grande antes de que se pudiera retirar su colateral weETH. Aproximadamente 1.306 weETH se retiraron de ese Safe, mientras que otros 6,4 weETH se tomaron de la segunda billetera.
Después de que se liquidara la liquidez prestada y se convirtiera parte de los activos retirados, Defimon Alerts calculó que el atacante retuvo aproximadamente 114,1 ETH.
SlowMist clasificó el incidente como una vulnerabilidad de contrato inteligente y estimó la pérdida resultante en $305,000.






