O que é um exploit de flash loan e como funciona este ataque em protocolos DeFi?

O que é um exploit de flash loan e como funciona este ataque em protocolos DeFi?

O que é um exploit de flash loan?

Um exploit de flash loan é um ataque em que alguém pede temporariamente emprestada uma grande quantidade de criptomoeda para explorar uma falha num protocolo DeFi. Um flash loan é um empréstimo que tem de ser reembolsado no espaço de uma única transação na blockchain.

Um flash loan deste tipo não tem garantia. Assim, não é necessário depositar primeiro garantia própria, mas existe uma condição importante: o empréstimo, incluindo a comissão, tem de ser devolvido antes do fim da mesma transação. Se isso não acontecer, a blockchain reverte toda a transação como se nunca tivesse ocorrido.

Isto chama-se execução atómica. Pode ser visto como um único pacote: todos os elementos têm sucesso em conjunto, ou então nada acontece. Os flash loans também são usados normalmente, por exemplo, para arbitragem, liquidações e troca de garantia.

Num exploit, um atacante usa essa liquidez temporária para atingir um ponto fraco noutro local. Muitas vezes, trata-se de um protocolo que, para uma decisão importante, confia no preço à vista de uma única DEX. Esse preço pode deslocar-se temporariamente de forma acentuada através de uma swap muito grande.

Imagine que um protocolo de lending vê esse preço temporariamente inflacionado como se fosse o preço real de mercado. Nesse caso, um atacante pode fazer com que a garantia seja valorizada muito acima do devido e pedir mais criptomoeda emprestada do que seria seguro. Outros ataques não se centram nos preços, mas, por exemplo, em peso de voto temporário na governance on-chain ou numa falha na lógica de negócio de smart contracts.


Pontos principais

  • Um flash loan é um empréstimo sem garantia que tem de ser reembolsado na mesma transação.
  • Um exploit de flash loan explora, em regra, uma falha noutro protocolo DeFi, e não no próprio flash loan.
  • Um ataque frequente manipula temporariamente o preço à vista numa pool de DEX.
  • Devido à execução atómica, o ataque inteiro tem sucesso ou tudo é revertido.
  • A flash liquidity também pode ser usada para explorar governance ou falhas nas regras do protocolo.

Como funciona um exploit de flash loan?

Um exploit de flash loan funciona, em regra, porque um atacante usa temporariamente muito capital para alterar um preço ou o estado de um protocolo, após o que o protocolo-alvo toma uma decisão errada. Tudo acontece no espaço de uma única transação atómica.

Como funciona então? Primeiro, o atacante faz com que um smart contract próprio contraia um flash loan. Esse contrato pode depois executar diretamente várias ações, como trocar tokens, depositar garantia e pedir criptomoeda emprestada

Numa manipulação de oráculo, o atacante compra ou vende, com uma grande swap, muito de um token numa pool de DEX. Assim, as reservas nessa pool mudam e o preço local à vista sobe ou desce temporariamente. Um oráculo de preços é, de forma simples, o componente que diz a um protocolo quanto vale algo.

O perigo surge quando outro protocolo lê esse preço perturbado como se fosse o preço normal no mercado mais amplo. O atacante pode então, por exemplo, pedir demasiados ativos emprestados com garantia inflacionada ou provocar um acerto incorreto.

No final, o contrato atacante converte rendimento suficiente para reembolsar o flash loan e a comissão. O que sobra depois disso é o lucro. Se não houver o suficiente para o reembolso, a transação inteira é revertida.

Isto limita o risco para o atacante: todos os passos têm de funcionar de uma só vez. Para o protocolo vítima, porém, o dano pode ser permanente. O protocolo já pode, por exemplo, ter emprestado demasiada criptomoeda com base num preço que esteve errado apenas durante muito pouco tempo.

Nem todos os ataques seguem exatamente este padrão. Em ataques de governance, a liquidez temporária pode ser usada sobretudo para obter muito peso de voto. Noutros exploits, a falha está precisamente num cálculo ou numa regra de acesso do protocolo.

Que passos inclui um ataque de flash loan?

Um ataque de flash loan segue muitas vezes cinco passos lógicos, embora, na prática, os atacantes possam combinar vários empréstimos, protocolos e swaps.

  1. Encontrar um ponto fraco O atacante procura primeiro uma falha que seja financeiramente interessante. Pense num preço à vista de DEX que seja fácil de influenciar, numa valorização incorreta de LP tokens ou de participações de vault, ou numa governance em que tokens emprestados dão direito de voto de imediato.

  2. Pedir capital temporariamente emprestado Depois, um smart contract atacante contrai um flash loan. Não é necessária garantia prévia, mas o empréstimo tem de ser reembolsado no espaço da mesma transação.

  3. Influenciar o preço ou o estado Com o capital emprestado, o contrato executa grandes swaps, depósitos, empréstimos, minting, votos ou outras chamadas de contrato. O objetivo é alterar temporariamente um preço, o valor das reservas ou outra entrada importante.

  4. Retirar valor do protocolo Enquanto o preço ou o estado incorreto se mantiver, o contrato pode, por exemplo, pedir demasiados ativos emprestados, fazer minting de tokens em excesso ou executar uma ação de governance prejudicial.

  5. Liquidar o empréstimo Por fim, o contrato reembolsa o capital e a comissão. Os ativos restantes são o lucro. Se esse reembolso não for totalmente possível, tudo é revertido.

Exemplo: No ataque à bZx de 18 de fevereiro de 2020, o atacante pediu emprestados 7.500 ETH através de um flash loan. Depois, o preço do sUSD foi inflacionado através de swaps. O atacante usou cerca de 1,1 milhões de sUSD como garantia sobrevalorizada para pedir emprestados 6.796 ETH e, em seguida, reembolsou o flash loan. No final, o atacante ficou com cerca de 2.378 ETH de lucro.

Que protocolos DeFi são vulneráveis a exploits de flash loan?

Não existe um único tipo de protocolo DeFi que seja automaticamente vulnerável. O risco surge quando um protocolo toma decisões valiosas com base em informação que pode ser manipulada de forma barata no espaço de uma única transação.

Os protocolos de lending e borrowing podem correr risco se usarem o preço à vista de uma única DEX como única fonte de preço para garantia, limites de empréstimo ou liquidações. Uma grande swap pode alterar temporariamente esse preço local, enquanto o preço no resto do mercado de criptomoedas é muito diferente.

Os yield aggregators e os vaults também podem ser vulneráveis. Sobretudo quando o preço para minting ou redeeming de participações de vault depende de reservas de pool que um atacante pode alterar temporariamente. Os depositantes existentes podem, assim, ser prejudicados.

Os protocolos de stablecoin, derivados e ativos sintéticos enfrentam riscos semelhantes quando processos importantes, como a determinação de garantia, lucro e perda (PnL), funding ou liquidações, dependem de um preço pouco fiável. PnL significa o lucro ou a perda numa posição.

A governance on-chain é outro ponto de atenção. Se o poder de voto resultar diretamente de tokens que alguém possui ou pede emprestados apenas durante muito pouco tempo, um atacante pode reunir temporariamente influência suficiente para fazer aprovar uma proposta. Isto torna-se ainda mais perigoso se uma proposta aprovada puder iniciar de imediato código executável ou ações com uma DAO treasury.

É importante saber: um flash loan nem sempre é necessário. Alguém com capital próprio suficiente, ou outra fonte de liquidez temporária, também pode, por vezes, explorar a mesma falha de conceção.

Exemplos de exploits de flash loan

Os exploits de flash loan podem assumir formas muito diferentes. Os exemplos conhecidos mostram bem que não são apenas os oráculos de preços, mas também as regras de valorização e a governance que podem ser atacadas.

  • bZx, 15 de fevereiro de 2020: o atacante usou um flash loan de 10.000 ETH num ataque combinado a vários protocolos DeFi. Ao inflacionar o preço do WBTC com grandes swaps e ao explorar uma falha na lógica de margem da bZx, o prejuízo reportado foi de cerca de 1.271 ETH, na altura aproximadamente 350.000 dólares.

  • bZx, 18 de fevereiro de 2020: alguns dias depois, seguiu-se um segundo ataque com um flash loan de 7.500 ETH. O preço do sUSD foi manipulado, permitindo que o sUSD fosse usado como garantia sobrevalorizada para pedir emprestados 6.796 ETH. O rendimento reportado foi de 2.378 ETH, na altura aproximadamente 633.000 dólares.

  • Harvest Finance, 26 de outubro de 2020: neste ataque económico, os valores de USDC e USDT na Y-pool da Curve foram repetidamente influenciados. Assim, o atacante pôde fazer minting de participações de vault a um preço favorável e depois trocá-las novamente pelo preço normal da participação. Foram retirados cerca de 24 milhões de dólares dos vaults envolvidos.

  • PancakeBunny, 19 de maio de 2021: aqui, um atacante manipulou o preço do BUNNY através de um flash loan. Uma falha na valorização dos LP tokens da PancakeSwap levou depois ao minting de uma quantidade excessiva de tokens BUNNY.

  • Beanstalk, 17 de abril de 2022: o atacante usou um flash loan para manipular a governance on-chain e levou cerca de 77 milhões de dólares em ativos não-Bean dos utilizadores. Depois disso, o protocolo foi pausado e a governance on-chain foi temporariamente desativada.

Os montantes neste tipo de incidente podem variar, consoante a forma como o dano é medido. Pense em ativos brutos retirados, rendimento líquido, fundos devolvidos e o preço nesse momento.

Quais são as consequências de um exploit de flash loan?

Um exploit de flash loan pode fazer com que utilizadores, fornecedores de liquidez e uma DAO percam criptomoeda de imediato. O dano normalmente não recai sobre o prestador do flash loan, mas sim sobre o protocolo cuja lógica de preços, valorização, governance ou smart contracts foi explorada.

Num protocolo de lending, um preço de garantia manipulado pode levar a uma dívida que não fica devidamente coberta. Assim que o preço volta ao normal, verifica-se que a garantia vale menos do que a criptomoeda que foi emprestada. O protocolo fica então com um défice.

Num ataque a participações de vault, os depositantes existentes são muitas vezes diluídos. Em termos simples, o atacante obtém temporariamente mais participações do que seria justo. Quando essas participações são depois resgatadas, o atacante retira mais do vault do que foi realmente depositado.

Também existem frequentemente consequências práticas. Um protocolo pode pausar contratos, desativar ou ajustar a governance, fazer com que os utilizadores migrem para um novo contrato e iniciar um longo processo de recuperação ou compensação.

Foi o que aconteceu também após o ataque à Beanstalk. Para além da perda direta, o protocolo foi pausado e a governance on-chain foi desativada. Depois do incidente, a Harvest recuperou os fundos remanescentes das pools envolvidas e limitou conversões durante a investigação.

Como podem os protocolos DeFi prevenir exploits de flash loan?

Os protocolos DeFi não podem prevenir exploits de flash loan com uma única medida. Uma boa segurança assenta em várias camadas que, em conjunto, tornam mais difíceis a manipulação de preços, os erros de cálculo e o abuso da governance.

  • Não confie num único preço à vista de DEX. Não use um preço diretamente manipulável de uma única pool como único oráculo para empréstimos, liquidações, minting ou definição do preço das participações.

  • Use feeds de preços mais amplos. Um oráculo com várias fontes de dados independentes e uma cobertura de mercado mais ampla reduz a probabilidade de uma única pool temporariamente manipulada determinar o resultado.

  • Use um TWAP quando apropriado. Um time-weighted average price, ou TWAP, é um preço médio ao longo de um determinado período. Uma janela mais longa torna a manipulação mais cara, mas também faz com que o preço reaja menos depressa a mudanças reais do mercado.

  • Implemente controlos claros. Pense em desvios máximos de preço, verificações de que os dados de preço ainda são recentes, liquidez mínima, limites conservadores de loan-to-value e caps por ativo. Perante dados de oráculo estranhos, um protocolo pode bloquear ou pausar ações sensíveis.

  • Teste separadamente os LP tokens e as participações de vault. O valor destas posições depende muitas vezes das reservas e das posições subjacentes. Por isso, teste também slippage extremo e depósitos e levantamentos no espaço da mesma transação.

  • Limite o peso de voto temporário. A governance pode usar snapshots definidos antecipadamente, introduzir um atraso entre o voto e a execução e limitar as ações que uma proposta pode executar. Após o ataque de abril de 2022, a Beanstalk removeu a governance on-chain e passou temporariamente para votos Snapshot com execução por uma multisig comunitária de 5 em 9.

  • Teste ataques de forma deliberada com antecedência. Auditorias independentes, simulações de ataques económicos e testes em forks devem incluir flash loans, manipulação de oráculos, reentrancy e transações compostas. Reentrancy significa que um contrato externo pode, de forma inesperada, chamar novamente uma função antes de a primeira execução ter terminado em segurança.

  • Prepare a resposta a incidentes. A monitorização de alterações extremas de preço e de reservas, um mecanismo de pausa cuidadosamente concebido e procedimentos de emergência claros podem limitar os danos. Uma pausa deste tipo não pode reverter um ataque que já tenha sido concluído de forma atómica, mas pode ajudar a evitar mais danos.

Conclusão

Um exploit de flash loan não diz respeito a um flash loan inseguro, mas sim a uma falha no protocolo DeFi que é depois atacado. O flash loan dá a um atacante muito capital temporário, com o qual um preço, uma valorização ou um processo de governance pode ser influenciado.

Sobretudo os protocolos que confiam cegamente num único preço de DEX, em regras de valorização vulneráveis ou em peso de voto temporário executável de imediato correm risco. Oráculos bons, limites inteligentes, smart contracts devidamente testados e um bom plano de emergência tornam estes ataques muito mais difíceis. Para os utilizadores, a principal lição continua a ser simples: a DeFi pode oferecer muitas possibilidades, mas os riscos técnicos de um protocolo são pelo menos tão importantes como o potencial rendimento.

Sobre a Finst

A Finst é uma plataforma de criptomoedas líder nos Países Baixos que oferece taxas de transação bastante reduzidas, segurança de nível institucional e um conjunto abrangente de serviços de criptomoedas, como negociação, custódia, staking e rampas de entrada e saída de moeda fiduciária. Fundada pelo antigo núcleo da equipa da DEGIRO, a Finst está autorizada como prestador de serviços de criptoativos pela Autoridade Holandesa para os Mercados Financeiros (AFM) e serve clientes privados e institucionais em 30 países europeus.

A plataforma de criptomoedas para todos os investidores

Quer seja um investidor ativo ou de longo prazo, a Finst permite-lhe aumentar o seu património de criptomoedas com confiança e tranquilidade.

Criar conta gratuita