Back to Blog

Flujo de Fondos Ilícitos - Caso de Estudio: Ataque a LI.FI

MetaSleuth
October 24, 2024
5 min read

Caso de Estudio de Flujo de Fondos Ilícitos: Ataque a LI.FI

Contexto del Caso

El 16 de julio de 2024, Li.Fi, un agregador de puentes entre cadenas y DEX, sufrió una importante brecha de seguridad que explotó el Contrato Diamond de Li.Fi. Varios tokens estables y otros activos por un valor aproximado de $11,6M fueron robados a los usuarios. El atacante pudo vaciar los fondos de usuarios que habían otorgado aprobaciones infinitas al contrato atacado.

La vulnerabilidad se encontraba en la función depositToGasZipERC20() del contrato GasZipFacet. El contrato GasZipFacet fue desplegado por el equipo de LI.FI cinco días antes del ataque para habilitar la recarga de gas en transacciones de puente. La función depositToGasZipERC20() incluía un argumento controlado por el usuario _swapData, que posteriormente era pasado a la llamada de función LibSwap.swap(). Desafortunadamente, LibSwap.swap incluía una llamada de bajo nivel capaz de ejecutar funciones arbitrarias con el objetivo de la llamada y los datos especificados por el argumento _swapData controlado por el atacante. El atacante aprovechó esta "vulnerabilidad de llamada arbitraria" para ejecutar transferencias no autorizadas desde usuarios que habían otorgado aprobación infinita al contrato Diamond de Li.Fi.

Análisis del Flujo de Dinero

El 16 de julio de 2024, el atacante inició casi un centenar de transacciones explotando la vulnerabilidad de llamada arbitraria, transfiriendo aproximadamente $11 millones en tokens estables (USDT, USDC, DAI) a la dirección 0x8b3c en 30 minutos. Casi todos los tokens estables sustraídos fueron rápidamente intercambiados por el token nativo de Ethereum, ETH. Los DEX utilizados por el atacante incluyeron Uniswap, Metamask Swap, entre otros. Ejemplos de transacciones de intercambio: 0xdf9b, 0x11d, 0xb4a4.

Un ejemplo del flujo de fondos dentro de una transacción de intercambio 0x8e27 que interactúa con Metamask Swap Spender. El atacante intercambió los 333.258 USDT obtenidos ilegalmente por 97,16 ETH. Todos los pools y proxies se muestran claramente usando MetaSleuth.

En el transcurso de dos horas tras el ataque, todos los activos robados fueron transferidos a direcciones intermediarias controladas por el atacante, sin dejar nada en la dirección del ataque original. Hay un total de 32 direcciones intermediarias directamente conectadas a la dirección 0x8b3c (es decir, a un salto de la dirección del ataque original). De estas, 15 direcciones recibieron únicamente 0,1 ETH desde la dirección del ataque. A fecha del 22 de octubre de 2024, el ETH en poder de estas 15 direcciones no ha sido transferido. Las direcciones restantes procesaron el resto de los grandes montos de fondos ilícitos.

Parte del flujo de fondos desde las direcciones de las víctimas hacia las direcciones intermediarias controladas por el atacante:

Tras transferir los fondos ilícitos a las direcciones intermediarias a un salto de la dirección 0x8b3c, el atacante comenzó a mover los fondos en lotes. El proceso de transferencia (lavado) se prolongó durante casi tres meses. Casi la totalidad de los fondos ilícitos fueron finalmente transferidos a Tornado Cash (99,9%), y una pequeña porción fue enviada al exchange eXch para su conversión directa a efectivo. El atacante realizó un total de 114 transacciones para interactuar con el Router de Tornado Cash. Ejemplos de transacciones que mueven ganancias ilícitas a Tornado Cash: 0x07de, 0xfe82, 0x6a47, 0x8ea6. Ejemplos de transacciones que mueven ganancias ilícitas a eXch: 0xaa89, 0x7e65, 0x8572, 0x625c, 0x2dd2, 0xda71.

Una parte del flujo de fondos desde las direcciones de capa 2 (a 2 saltos de la dirección del ataque original 0x8b3c) hasta las direcciones de capa 4:

El primer gran lote de transferencias ocurrió durante la primera semana tras el ataque, entre el 16 y el 22 de julio. El atacante transfirió aproximadamente $500k en activos ilícitos desde la dirección 0x6a6d a Tornado Cash. La transferencia de fondos ilícitos por parte del atacante mostró características distintivas: movió los fondos hacia direcciones intermediarias alejadas de la dirección del ataque (dirección de alto riesgo), canalizando gradualmente una porción hacia Tornado Cash. En el primer lote, la ruta de transferencia más larga alcanzó hasta 20 saltos. El atacante utilizó rutas de lavado extremadamente profundas para ocultar los flujos de dinero ilícito. Entre agosto y octubre, los fondos ilícitos restantes fueron transferidos gradualmente a Tornado Cash en lotes de transferencia con las mismas características.

Un ejemplo de un lote de transferencias que mueve fondos desde la dirección 0x8e85 (a un salto de 0x8b3c) al Router de Tornado Cash:

Como ilustra la figura, entre el 13 y el 16 de agosto de 2024, el atacante transfirió gradualmente 206 ETH a Tornado Cash a través de una ruta de 12 saltos. En la dirección 0xe9f7, el atacante dividió 204 ETH en dos transacciones: 100 ETH fueron enviados a Tornado Cash, mientras que 104 ETH fueron reenviados a direcciones de lavado adicionales. Este patrón de división fue consistente a lo largo de todo el proceso de transferencia. Es decir, el atacante utilizó una dirección nueva y más profunda en cada interacción con Tornado Cash.

Esfuerzos de Respuesta

Dos días después del ataque, LI.FI publicó oficialmente un informe del incidente, afirmando que habían deshabilitado con éxito el facet del contrato vulnerable en todas las cadenas e impedido cualquier acceso no autorizado adicional. LI.FI inició un plan de compensación y reembolsó íntegramente a los usuarios afectados. Respecto a la recuperación de los activos sustraídos, afirmaron que continuarían colaborando con las autoridades policiales y terceros relevantes, incluidos equipos de seguridad de la industria, para rastrear e intentar recuperar los fondos drenados. A fecha del 22 de octubre de 2024, casi la totalidad de los fondos ilícitos han sido transferidos a Tornado Cash y Li.Fi aún no ha publicado informes de rastreo.

Algunas Direcciones y Transacciones Relevantes

Direcciones Transacciones Flujos de Dinero Ilícito
0x8e85eace2fa757c1d97c5ebfb8b0622e5f23c5a1 0xe237, 0x0d23 206,49 ETH
0xcb7c341dc6172b642dcf4a14015be70a27e5b31e 0x050c, 0x37d4 873.568 USDT + 36,48 ETH
0x7b93fa16c04cdcf91949d4f5f893f740992ae57e 0x57ea, 0x52ac 332,02 ETH
0x3462d2523cded523ad47c14111aa1dcbe7773675 0xc66d, 0xc0ff 120,55 ETH
0xd0be9c4c84068a9964c3781f540f703c300db268 0x0c3b, 0x1670 275,38 ETH

Descripción general del flujo de fondos:

Ver más en MetaSleuth: https://metasleuth.io/result/eth/0x14c1597cc833783ed8ac08ecc9b704b0a398201d?source=c8cd3609-0402-45eb-bb9e-2f710bd66554

Go Deeper with MetaSleuth Investigation

Extend your crypto compliance capabilities with Blocksec's MetaSleuth Investigation, the first platform for tracing funds, mapping transaction networks and revealing hidden on-chain relationships.

Move from detection to resolution faster with clear visual insights and evidence-ready workflows across the digital assets ecosystem.

MetaSleuth Investigation