Estudo de Caso de Fluxo de Fundos Ilícitos: Ataque à LI.FI
Contexto do Caso
Em 16 de julho de 2024, a Li.Fi, uma bridge cross-chain e agregador de DEX, sofreu uma violação de segurança significativa que explorou o Li.Fi Diamond Contract. Diversos tokens estáveis e outros ativos no valor aproximado de $11,6 milhões foram roubados dos usuários. O atacante conseguiu drenar fundos de usuários que haviam concedido aprovações infinitas ao contrato atacado.
- Endereço do Atacante: 0x8b3cb6bf982798fba233bca56749e22eec42dcf3
- Contrato Vulnerável: 0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae
- Exemplos de Transações de Ataque: 0xd82f, 0x86fe, 0x606a
A vulnerabilidade estava na função depositToGasZipERC20() do contrato GasZipFacet. O contrato GasZipFacet foi implantado pela equipe da LI.FI cinco dias antes do ataque para habilitar o reabastecimento de gás em transações de bridge. A função depositToGasZipERC20() incluía um argumento controlado pelo usuário _swapData, que era posteriormente passado para a chamada de função LibSwap.swap(). Infelizmente, LibSwap.swap incluía uma chamada de baixo nível capaz de executar funções arbitrárias com o alvo da chamada e os dados da chamada especificados pelo argumento _swapData controlado pelo atacante. O atacante aproveitou essa "vulnerabilidade de chamada arbitrária" para executar transferências não autorizadas de usuários que haviam concedido aprovação infinita ao contrato Li.Fi Diamond.
Análise do Fluxo de Fundos
Em 16 de julho de 2024, o atacante iniciou quase uma centena de transações explorando a vulnerabilidade de chamada arbitrária, transferindo aproximadamente $11 milhões em tokens estáveis (USDT, USDC, DAI) para o endereço 0x8b3c em menos de 30 minutos. Quase todos os tokens estáveis drenados foram rapidamente trocados pelo token nativo da Ethereum, ETH. As DEXs utilizadas pelo atacante incluíram Uniswap, Metamask Swap, entre outras. Exemplos de transações de swap: 0xdf9b, 0x11d, 0xb4a4.
Um exemplo do fluxo de fundos dentro de uma transação de swap 0x8e27 interagindo com o Metamask Swap Spender. O atacante trocou os 333.258 USDT adquiridos ilegalmente por 97,16 ETH. Todos os pools e proxies são exibidos claramente usando o MetaSleuth.

Dentro de duas horas após o ataque, todos os ativos roubados foram transferidos para endereços downstream controlados pelo atacante e nada restou no endereço de ataque original. Há um total de 32 endereços downstream diretamente conectados ao endereço 0x8b3c (ou seja, a um salto do endereço de ataque original). Dentre esses, 15 endereços receberam apenas 0,1 ETH do endereço de ataque. Em 22 de outubro de 2024, o ETH mantido por esses 15 endereços ainda não havia sido transferido. Os endereços restantes processaram o restante dos grandes volumes de fundos ilícitos.
Parte do fluxo de fundos dos endereços das vítimas para os endereços downstream controlados pelo atacante:

Após transferir os fundos ilícitos para os endereços downstream a um salto do endereço 0x8b3c, o atacante começou a mover os fundos em lotes. O processo de transferência (lavagem) durou quase três meses. Quase todos os fundos ilícitos foram finalmente transferidos para o Tornado Cash (99,9%), e uma pequena parte foi enviada à exchange eXch para saque direto. Houve um total de 114 transações que o atacante usou para interagir com o Tornado Cash Router. Exemplos de transações movendo ganhos ilícitos para o Tornado Cash: 0x07de, 0xfe82, 0x6a47, 0x8ea6. Exemplos de transações movendo ganhos ilícitos para a eXch: 0xaa89, 0x7e65, 0x8572, 0x625c, 0x2dd2, 0xda71.
Parte do fluxo de fundos dos endereços da camada 2 (a 2 saltos do endereço de ataque original 0x8b3c) para os endereços da camada 4:

O primeiro grande lote de transferências ocorreu na primeira semana após o ataque, entre 16 e 22 de julho. O atacante transferiu aproximadamente $500 mil em ativos ilícitos do endereço 0x6a6d para o Tornado Cash. A transferência de fundos ilícitos pelo atacante exibiu características distintas: eles moviam os fundos para endereços downstream distantes do endereço de ataque (endereço de alto risco), canalizando gradualmente uma parte para o Tornado Cash. No primeiro lote, o caminho de transferência mais longo atingiu até 20 saltos. O atacante utilizou caminhos de lavagem extremamente profundos para obscurecer os fluxos de dinheiro ilícito. Entre agosto e outubro, os fundos ilícitos restantes foram gradualmente transferidos para o Tornado Cash em lotes de transferência com as mesmas características.
Um exemplo de lote de transferência movendo fundos do endereço 0x8e85 (a um salto de 0x8b3c) para o Tornado Cash Router:

Conforme ilustra a figura, entre 13 e 16 de agosto de 2024, o atacante transferiu gradualmente 206 ETH para o Tornado Cash por meio de um caminho de 12 saltos. No endereço 0xe9f7, o atacante dividiu 204 ETH em duas transações: 100 ETH foram enviados ao Tornado Cash, enquanto 104 ETH foram encaminhados para outros endereços de lavagem. Esse padrão de divisão foi consistente ao longo de todo o processo de transferência. Ou seja, o atacante utilizava um endereço novo e mais profundo a cada interação envolvendo o Tornado Cash.
Esforços de Combate
Dois dias após o ataque, a LI.FI publicou oficialmente um relatório do incidente, afirmando que havia desativado com sucesso a faceta do contrato vulnerável em todas as redes e impedido qualquer acesso não autorizado adicional. A LI.FI iniciou um plano de compensação e reembolsou integralmente os usuários afetados. Quanto à recuperação dos ativos drenados, afirmaram que continuariam a trabalhar com autoridades policiais e terceiros relevantes, incluindo equipes de segurança do setor, para rastrear e tentar recuperar os fundos drenados. Em 22 de outubro de 2024, quase todos os fundos ilícitos já haviam sido transferidos para o Tornado Cash e a Li.Fi ainda não havia publicado relatórios de rastreamento.
Alguns Endereços e Transações Relevantes
| Endereços | Transações | Fluxos de Dinheiro 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 |
Visão geral do fluxo de fundos:

Veja mais no MetaSleuth: https://metasleuth.io/result/eth/0x14c1597cc833783ed8ac08ecc9b704b0a398201d?source=c8cd3609-0402-45eb-bb9e-2f710bd66554



