Análise completa do ataque MEV Sandwich: da ordenação à troca relâmpago na cadeia fatal

Escrito por: Daii

Na última quarta-feira (12 de março), um trader de criptomoedas foi atacado por MEV e perdeu 215 mil dólares de uma só vez.

Em termos simples, este usuário pretendia trocar 220,8 mil dólares em USDC por um valor equivalente em USDT no pool de negociação Uniswap v3, mas acabou recebendo apenas 5.272 USDT, resultando em uma evaporacão instantânea de 215,7 mil em ativos em poucos segundos, como mostrado na figura abaixo.

A imagem acima é uma captura de tela do registro on-chain desta transação. A razão fundamental para essa tragédia é que houve um ataque de "sandwich" (Sandwich Attack), notoriamente famoso no mundo das blockchains.

O primeiro a divulgar este ataque MEV foi Michael (veja a imagem acima), que explicou que:

Um bot MEV antecipou a tx ao trocar toda a liquidez de USDC. Após a execução da transação, eles devolveram a liquidez. O atacante deu uma gorjeta a um construtor de bloco (bobTheBuilder) de $200k e lucrou $8k com esta transação.

O conteúdo acima contém um erro de digitação, o robô de ataque MEV trocou uma grande quantidade de USDT, e não USDC.

No entanto, depois de ler suas explicações e reportagens, você ainda pode ficar confuso, porque há muitos termos novos nele, como ataque sanduíche, front-ran o tx, colocar de volta a liquidez, dar gorjeta a um construtor de blocos, etc.

Hoje, vamos usar este ataque MEV como exemplo, decompondo todo o seu processo, levando você a explorar este mundo sombrio do MEV.

Primeiro, precisamos explicar o que é MEV.

  1. O que é MEV?

O MEV, inicialmente conhecido como Valor Extraível pelos Mineradores (Miner Extractable Value), refere-se ao lucro adicional que os mineradores podem obter ao reordenar, inserir ou excluir transações em blocos da blockchain. Essa operação pode resultar em custos mais altos para usuários comuns ou em preços de transação menos favoráveis.

Com a transição de redes de blockchain, como o Ethereum, do mecanismo de consenso de Prova de Trabalho (Proof-of-Work, PoW) para o mecanismo de consenso de Prova de Participação (Proof-of-Stake, PoS), o poder de controlar a ordenação das transações foi transferido dos mineradores para os validadores. Assim, a terminologia também evoluiu de "Valor Extraível por Minerador" (Miner Extractable Value) para "Valor Máximo Extraível" (Maximal Extractable Value).

Apesar de o nome ter mudado, o conceito central de extrair valor manipulando a ordem das transações permanece o mesmo.

O conteúdo acima ainda é um pouco técnico, você só precisa lembrar: a razão pela qual o MEV existe é porque os mineradores do passado e os validadores de agora têm o direito de ordenar as transações na memória (mempool). Essa ordenação ocorre dentro de um bloco, e atualmente o Ethereum gera um bloco a cada cerca de 11 segundos, o que significa que a cada 11 segundos há um exercício desse poder. Da mesma forma, esse ataque MEV também foi realizado através da ordenação pelos validadores.

Clique neste link e você verá o conteúdo das transações contidas no bloco com o número 22029771 relacionado a este ataque, como mostrado na figura abaixo.

Por favor, note que as transações nas imagens 1, 2 e 3 são o ataque MEV mencionado no início deste artigo, e esta ordem foi organizada pelo validador (bobTheBuilder). Por que isso é possível?

  1. O princípio do MEV

Para entender como funciona o MEV, precisamos primeiro compreender como a blockchain registra e atualiza informações.

2.1 Mecanismo de Atualização do Estado da Blockchain

A blockchain pode ser vista como um livro-razão em constante crescimento, que registra todas as transações ocorridas. O estado deste livro-razão, como o saldo de cada conta, a quantidade de reservas de vários tokens no pool de transações da Uniswap, etc., é determinado pelas transações anteriores.

Quando um novo bloco é adicionado à blockchain, todas as transações contidas nesse bloco são executadas uma a uma, na ordem em que estão dispostas no bloco. A cada transação executada, o estado global da blockchain muda de acordo.

Ou seja, não apenas a ordem dos blocos é importante, mas também a ordem das transações dentro dos blocos. Então, como é que a ordem das transações dentro de um bloco é determinada?

2.2 O validador decide a ordem das transações

Quando um usuário inicia uma transação na rede blockchain, como esta transação que converte USDC em USDT através do Uniswap, ela é primeiramente divulgada para os nós na rede. Após uma verificação inicial, a transação entra em uma área chamada "mempool". O mempool é como uma área de espera, onde as transações ainda não foram confirmadas e adicionadas ao próximo bloco da blockchain.

Os antigos mineradores (em sistemas PoW), agora validadores (em sistemas PoS) têm o direito de escolher transações do pool de memórias e decidir a ordem em que essas transações aparecem no próximo bloco.

A ordem das transações em um bloco é crucial. Antes de um bloco ser finalmente confirmado e adicionado à blockchain, as transações dentro desse bloco são executadas na ordem determinada pelo validador (como bobTheBuilder). Isso significa que, se um bloco contiver várias transações que interagem com o mesmo pool de transações, a ordem de execução dessas transações afetará diretamente o resultado de cada uma delas.

Esta capacidade permite que os validadores priorizem transações específicas, atrasem ou excluam outras transações, e até insiram suas próprias transações para maximizar lucros.

A ordenação desta transação é igualmente importante; qualquer pequena falha pode resultar em um ataque mal-sucedido.

2.3 A ordenação das transações da ataque MEV desta vez

Vamos primeiro entender brevemente as 3 transações relacionadas ao ataque MEV desta vez:

Transação 1 (primeira transação do atacante): executada antes da transação da vítima. O objetivo desta transação é normalmente inflacionar o preço do token que a vítima deseja negociar.

Transação 2 (Transação da vítima): Executada após a primeira transação do atacante. Devido às ações anteriores do atacante, neste momento, o preço na pool de transações é desfavorável para a vítima, que precisa pagar mais USDC para obter um valor equivalente em USDT, ou só consegue trocar por menos USDT.

Transação 3 (Segunda transação do atacante): Executada após a transação da vítima. O objetivo desta transação é geralmente lucrar com as novas variações de preço causadas pela transação da vítima.

Desta vez, o validador do ataque MEV foi bob-The-Builder.eth, que foi responsável por organizar as transações na ordem 1, 2, 3. Claro, bobTheBuilder também não trabalhou de graça, ele participou dessa ordenação e obteve mais de 100 ETH de receita, enquanto o iniciador do ataque MEV teve apenas 8000 dólares de receita. A sua receita provém da segunda transação da vítima.

Em uma frase, o atacante (robô MEV) conspirou com o validador (bobTheBuilder), fazendo com que a vítima da segunda transação perdesse 215 mil dólares, dos quais o atacante recebeu 8 mil dólares e o validador 200 mil dólares (mais de 100 ETH).

A forma de ataque que eles adotaram tem um nome vívido - ataque de sanduíche. A seguir, vamos explicar transação por transação, para que você entenda completamente como funciona o complexo ataque de sanduíche do MEV.

  1. Análise completa do ataque de sanduíche

O motivo pelo qual é chamado de ataque de sanduíche (Sandwich Attack) é porque as duas transações do atacante (transação 1 e transação 3) são colocadas antes e depois da transação da vítima (transação 2), fazendo com que toda a sequência de transações tenha uma estrutura semelhante à de um sanduíche (veja a imagem acima).

As transações 1 e 3 desempenham funções diferentes. Em termos simples, a transação 1 é responsável pela execução do crime, enquanto a transação 3 é responsável pela divisão do saque. Especificamente, todo o processo é o seguinte:

3.1 Transação 1, responsável por aumentar o preço do USDT

Clique no link da transação nº 1 na imagem acima, você verá os detalhes da transação nº 1. O atacante aumentou o preço do USDT de forma bastante direta, trocando 17,58 milhões de USDT por 18,65 milhões de USDC, veja a imagem abaixo.

Neste momento, o que resta no pool de liquidez é uma grande quantidade de USDC e uma pequena quantidade de USDT. Se, de acordo com as notícias, antes do ataque, a liquidez do Uniswap tinha cerca de 19,8 milhões de USDC e USDT, então após a execução da transação 1, restam apenas 2,22 milhões de USDT (=1980-1758), enquanto o saldo de USDC aumenta para cerca de 38,45 milhões (=1980+1865).

Neste momento, a taxa de câmbio entre USDC e USDT neste pool já não é de 1:1, mas sim de 1:17, ou seja, são necessários 17 USDC para trocar por 1 USDT. No entanto, esta proporção é apenas aproximada, pois este pool é V3 e a liquidez não está distribuída de forma uniforme.

Há mais uma coisa que quero te contar. Na verdade, o atacante não usou 18,65 milhões de USDC de uma só vez, o valor real de USDC utilizado foi de 1,09 milhão, nem chega a 6%. Como ele conseguiu isso? Assim que terminarmos de falar sobre o ataque, explicaremos isso em mais detalhes.

3.2 Transação 2, execução de 220.000 USDC para USDT

Clicar no link da transação 2 na imagem acima irá mostrar a imagem abaixo.

Como mostrado na imagem acima, a transação 2 da vítima foi impactada pela transação 1, resultando em 5272 USDT por 220000 USDC, causando uma perda de 170000 USDT sem que a vítima percebesse. Por que se diz que foi sem perceber? Porque, se a vítima estivesse negociando através do Uniswap, ao submeter a transação, ela veria a seguinte interface.

Através da imagem acima, você descobrirá que as vítimas deveriam receber pelo menos 220 mil, o que deveria estar garantido. O motivo pelo qual as vítimas acabaram recebendo apenas um pouco mais de 5000 USDT é devido a um grande deslizamento, que atingiu mais de 90%. No entanto, a Uniswap tem um limite de deslizamento máximo padrão de 5,5%, conforme mostrado na imagem abaixo.

Ou seja, se a vítima fez a transação através da interface da Uniswap, então ela deveria receber pelo menos 208381 USDT (= 220510 * 94.5%). Você pode estar se perguntando por que o registro da blockchain acima mostra que esta transação foi realizada na "Uniswap V3".

Porque a parte frontal e a parte traseira das transações em blockchain estão separadas. O que foi mencionado acima sobre "Uniswap V3" refere-se ao pool de liquidez USDC-USDT da Uniswap, que é público e qualquer parte frontal de transação pode utilizar esse pool para negociar.

Também por causa disso, algumas pessoas suspeitam que a vítima não é simples, não é uma pessoa comum, caso contrário, não haveria tanto deslizamento, possivelmente está a usar ataques MEV para lavar dinheiro. Isso, falaremos mais tarde.

3.3 Transação 3, colheita + divisão do loot

Clique no link para ver os detalhes da transação 3, conforme mostrado na imagem acima. Vamos falar sobre as transações A, B e C.

Transação A, restaurou a liquidez no pool, trocando 17,32 milhões de USDT por 18,60 milhões de USDC;

Transação B, preparação para a divisão do lucro, trocar parte do rendimento - 204 mil USDC por 105 ETH;

Transação C, distribuição de lucros, pagar 100.558 ETH ao validador bob-The-Builder.eth.

Assim, o ataque de sanduíche terminou.

Agora vamos responder a uma questão muito importante mencionada acima: como o atacante conseguiu realizar um ataque de 18 milhões com 1,09 milhão de USDC.

  1. Como o atacante realizou o ataque ao fundo de 18 milhões de USDC

A razão pela qual o atacante conseguiu realizar um ataque de nível de 18 milhões de dólares com apenas 1,09 milhões de USDC de capital é porque existe um mecanismo mágico e especial no mundo das blockchains — a troca relâmpago (Flash Swap) da Uniswap V3.

4.1 O que é a troca relâmpago (Flash Swap)?

Simplesmente dizendo:

A troca relâmpago permite que os usuários retirem ativos de um pool Uniswap em uma única transação e, em seguida, reembolsem com outro ativo (ou o mesmo ativo acrescido de taxas).

Desde que toda a operação seja concluída dentro de uma única transação, a Uniswap permite esse comportamento de "pegar primeiro, pagar depois". Note-se que deve ser concluído dentro da mesma transação. Essa designação é para garantir a segurança da própria plataforma Uniswap:

Empréstimos sem risco: Uniswap permite que os usuários retirem temporariamente fundos do pool sem garantia (semelhante a um empréstimo), mas devem reembolsar imediatamente no final da transação.

Atomicidade: A operação inteira deve ser atômica, ou seja, ou é completamente bem-sucedida (reembolso de fundos) ou falha totalmente (rollback da transação).

O design da troca relâmpago foi criado para facilitar de forma mais eficaz a arbitragem on-chain, mas infelizmente foi explorado por atacantes de MEV, tornando-se uma ferramenta de manipulação de mercado.

4.2 Como é que a troca relâmpago ajuda?

Abaixo vamos ver a imagem e explicar passo a passo como a troca relâmpago deste ataque foi realizada, veja a imagem abaixo.

F1 Atacante emprestou 1,09 milhão de USDC da AAVE usando 701 WETH próprio;

O atacante F2 inicia um pedido de troca relâmpago, retirando primeiro 17,58 milhões de USDT do pool Uniswap (neste momento não é necessário pagar antecipadamente); a conta do atacante aumenta temporariamente em 17,58 milhões de USDT.

O atacante F3 rapidamente despejou 17,58 milhões de USDT no pool da Curve, trocando de volta 17,55 milhões de USDC. A conta do atacante teve uma redução de 17,58 milhões em USDT e um aumento de 17,55 milhões em USDC. Através da imagem abaixo, você descobrirá que o atacante escolheu a Curve porque a liquidez aqui é bastante abundante, com mais de 70,54 milhões em USDT e 50,71 milhões em USDC, e o slippage é relativamente baixo.

Os atacantes do F4 então devolveram os 17,55 milhões de USDC trocados pelo Curve, juntamente com os 1,09 milhões de USDC que tinham preparado (obtidos através de empréstimos Aave), totalizando 18,64 milhões de USDC, completando a troca relâmpago de uma só vez;

Após esta transação (transação 1), o saldo da conta do atacante diminuiu em 1,09 milhões de USDC, porque dos 18,64 milhões de USDC devolvidos ao Uniswap, apenas 17,55 milhões de USDC foram trocados a partir do Curve, enquanto os restantes 1,09 milhões de USDC eram fundos próprios do atacante.

Você deve ter percebido que esta transação realmente fez com que o atacante perdesse 1.090.000. No entanto, a transação 3 seguinte, também utilizando a técnica de troca relâmpago, não só trouxe de volta os 1.090.000 USDC, como ainda ganhou mais de 200.000.

Vamos analisar os dados da Transação 3 passo a passo.

K1 atacante, retirou 18,6 milhões de USDC na Uniswap usando troca relâmpago;

O atacante K2 converteu 17,3 milhões de USDC, que retirou recentemente da Uniswap, em 17,32 milhões de USDT.

O atacante K1 devolveu os 17,32 milhões de USDT que trocou de volta do Curve para a Uniswap. A troca relâmpago foi concluída. Você precisa notar que o atacante gastou apenas 17,30 milhões de USDC através do K2 para obter 17,32 milhões de USDT. Dos restantes 1,30 milhões (= 1.860 - 1.730) de USDC, 1,09 milhão é capital próprio, e os restantes 210 mil USDC são o lucro deste ataque.

K3 atacante, devolveu o capital ao AAVE, retirou 701 WETH, ao mesmo tempo que trocou 200 mil USDC por 105 ETH, e enviou 100.558 ETH a um validador como gorjeta (cerca de 200 mil dólares), ficando com menos de 10 mil dólares de lucro.

Você pode ficar surpreso com o porquê de os atacantes estarem dispostos a entregar lucros de até 200 mil dólares aos validadores?

4.3 Por que dar uma "gorjeta" de 200 mil dólares?

Na verdade, isso não é generosidade, mas sim uma condição necessária para o sucesso do ataque MEV do tipo sandwich:

O núcleo de um ataque bem-sucedido é o controle preciso da ordem das transações, e quem controla a ordem das transações é o validador (bobTheBuilder).

Os validadores não apenas ajudam os atacantes a garantir que as transações das vítimas estejam entre as transações de ataque, mas o mais importante é que os validadores podem garantir que outros robôs MEV concorrentes não consigam furar a fila ou interferir na conclusão bem-sucedida do ataque.

Assim, o atacante prefere sacrificar a maior parte do lucro para garantir o sucesso do ataque, reservando um certo lucro para si mesmo.

É importante mencionar que os ataques MEV também têm custos. Na troca relâmpago da Uniswap há custos, e nas transações do Curve também há custos, mas como as taxas são relativamente baixas, cerca de 0,01 a 0,05%, em comparação com os ganhos dos ataques, podem parecer insignificantes.

Por fim, lembre-se de que a defesa contra ataques MEV é na verdade bastante simples, você só precisa: definir uma tolerância ao deslizamento, não ultrapassando 1%; executar grandes transações em várias partes. Portanto, você não precisa se privar de negociar em DEX (exchanges descentralizadas) por causa disso.

Conclusão: Avisos e ensinamentos da floresta escura

Este ataque MEV de 215 mil dólares é, sem dúvida, uma cruel manifestação da regra da "floresta sombria" no mundo das blockchains. Ele revela de forma vívida o complexo jogo de interesses que se oculta sob um ambiente descentralizado e sem permissões, onde existem brechas mecânicas a serem exploradas.

De uma perspectiva mais elevada, a emergência do MEV é uma manifestação do efeito de espada de dois gumes da transparência e programabilidade da blockchain.

Por um lado, todos os registros de transações são públicos e podem ser consultados, o que permite que comportamentos de ataque sejam rastreados e analisados;

Por outro lado, a lógica complexa dos contratos inteligentes e a determinabilidade da execução das transações também oferecem oportunidades para participantes astutos.

Isto não é apenas um ato de hacking simples, mas sim uma compreensão profunda e utilização dos mecanismos subjacentes da blockchain, que testa a robustez do design do protocolo e desafia a consciência de risco dos participantes.

Compreender o MEV e reconhecer os seus riscos é fundamental para navegar melhor neste mundo digital repleto de oportunidades, mas também cheio de perigos. Lembre-se, na "floresta sombria" da blockchain, apenas o respeito pelas regras e o aumento da consciência podem evitar que você se torne a próxima presa a ser devorada.

Este é também o efeito que eu quero alcançar com este artigo.

Ver original
O conteúdo é apenas para referência, não uma solicitação ou oferta. Nenhum aconselhamento fiscal, de investimento ou jurídico é fornecido. Consulte a isenção de responsabilidade para obter mais informações sobre riscos.
  • Recompensa
  • Comentário
  • Compartilhar
Comentário
0/400
Sem comentários
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate.io
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • ไทย
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)