Pergunta: As vulnerabilidades dos contratos inteligentes que mencionamos frequentemente são realmente as violações de segurança mais ameaçadoras e frequentes na prática?
Resposta: De jeito nenhum. Por exemplo, “overflow”, “chamada externa” e outras vulnerabilidades de segurança do contrato inteligente, comumente mencionadas, não são as mais frequentes e mais ameaçadoras.
Quais são as 10 principais ameaças à segurança em termos de frequência de ocorrência e dano? Lição 7 [Ataque Sanduíche].
O que é o ataque sanduíche
Ataque Sanduíche: Uma espécie de negociação front-running, visando principalmente protocolos e serviços Defi. Em um ataque sanduíche, negociantes mal-intencionados procuram transações pendentes em uma rede de sua escolha, como a Ethereum. O ataque sanduíche ocorre colocando um pedido antes e depois da negociação. Essencialmente, o invasor executa transações front-run e back-run, com a transação pendente original entre elas.
De acordo com a figura acima, o processo principal do ataque sanduíche é o seguinte:
- O invasor tem conhecimento prévio da intenção de transação da vítima e acredita que é lucrativo. Ele usa 10 TokenA para trocar 100 TokenB antecipadamente e, ao mesmo tempo, aumenta o preço do TokenB
- A vítima trocou 40 TokenB por 5 TokenA através de uma derrapagem acidental de preço sem saber. Os 5 TokenA originais podem ser trocados por 50 TokenB
- O invasor então converte 100 Token B em 12,5 TokenA, obtendo um lucro de 2,5 TokenA
Na ecologia DEX baseada na teoria de X * Y = k, cada vez que um token é comprado, o preço correspondente aumenta. Portanto, se comprarmos primeiro e depois outras pessoas comprarem outros tokens, o preço aumentará. Se vendermos logo em seguida, teremos lucro porque estamos comprando na baixa e vendendo na alta, realizando a arbitragem. Até certo ponto, a arbitragem pode manter o equilíbrio ecológico dos preços de mercado. No entanto, o ataque sanduíche ocorre às custas dos negociantes normais e o invasor acaba lucrando.
Os ataques sanduíche podem ocorrer de duas maneiras:
- Os ganhadores de liquidez atacam os ganhadores de liquidez
Os ganhadores de liquidez tentam atacar os ganhadores de liquidez com transações AMM (Automated market makers ou Criador de Mercado Automatizado) pendentes na blockchain. Vendo uma transação aguardando aprovação, o invasor emite duas transações subsequentes (pré e pós) para se beneficiar da transação do negociante. Existem agora três transações pendentes conectadas por meio de um pool de liquidez e par de moedas. Os mineradores precisam escolher qual transação será aprovada primeiro. É aqui que os invasores podem influenciar essa decisão subornando os mineradores, ou seja, pagando taxas de transação mais altas ou mais baixas.
- Os provedores de liquidez atacam os ganhadores de liquidez
Nesse caso, os provedores de liquidez tentam atacar os adquirentes de liquidez. Tudo começa igual, o invasor vê uma transação pendente na blockchain e, em seguida, executa três transações:
- Elimina liquidez: Obtém uma vantagem inicial (aumenta a derrapagem da vítima reduzindo a liquidez de mercado do ativo)
- Adiciona liquidez: retoma as operações (restaura a liquidez na pool para os níveis pré-ataque)
- Troca A por B: retorna à execução (restaura o saldo do ativo de A ao seu estado pré-ataque)
Nesse ataque, o invasor retira todos os ativos do pool de liquidez antes que a transação da vítima seja executada. Ao fazer isso, os saqueadores desistem de comissões pelas transações das vítimas. Os provedores de liquidez recebem uma comissão com base na liquidez que fornecem à AMM.
No entanto, nenhum desses ataques é necessariamente eficaz. Para que o ataque seja eficaz, duas condições precisam ser atendidas ao mesmo tempo:
- O lucro precisa ser maior que a taxa de gás (a taxa cobrada pelos mineradores para processar cada transação): pois se o lucro for pequeno, o usuário precisa obter uma quantidade considerável de Token para superar a taxa de gás
- Reduzir a derrapagem: A derrapagem refere-se ao desvio máximo do preço ideal que os usuários estão dispostos a aceitar em uma transação. Como as transações não são executadas imediatamente, outras transações operando dentro do mesmo token podem ser executadas primeiro, resultando em mudanças de preço. Isso significa que os usuários que desejam comprar tokens não podem saber o preço exato quando a transação é executada. Isso traz o problema de comprar tokens que podem ter sofrido grandes mudanças de preço.
Análise de Ataque
Observando a figura abaixo, podemos ver que os ataques sanduíche ocorrem com frequência. Entre os dez principais contratos usados com frequência, o Uniswapv2 Router2 e o Uniswap v3 Router2 representam mais. Em 28 de outubro de 2022, o Uniswap v3 Router2 representava 58,0% nos últimos 30 dias.
Nos últimos 30 dias, o monitoramento de ataque sanduíche é mostrado na figura a seguir:
Analisar um ataque sanduíche, Tx hash: 0x65a6d6e7b88a3d7c6c11ef4658765bcd94e2a0f831a1e9752f711bbecc08740a.
O processo geral do ataque sanduíche é o seguinte:
- O endereço da vítima (0x37a…d80fa) planeja vender 1,4 WETH por APE
- O invasor escaneou o pool de memória (mempool) e observou a intenção da vítima
- O endereço do invasor (0x01b…b0159) iniciou uma transação de venda de 44,233706 WETH por 176,994496 APE, baixou o preço de WETH e aumentou o preço de APE
- Ao preço mais baixo de WETH, a vítima (0x37a…d80fa ) só pode obter 3,919601 APE, ela poderia ter obtido mais
- O invasor (0x01b…b0159) vendeu 176,994496 APE por 44,546633 WETH
- Finalmente, o invasor (0x01b…b0159) obtém 0,312927 WETH, menos alguns custos na Ethereum
- Durante este processo, o invasor (0x01b…b0159) envia ao minerador (0x829…3a830) 0.2 WETH para melhorar a ordem da transação
Medidas preventivas
Depois de revisar os eventos relevantes, quais são as medidas apropriadas que devemos tomar para evitar ataques sanduíche?
- Limite de gás
Os ataques sanduíche acontecem porque as transações com taxas de gás mais altas têm precedência sobre outras transações. Ao colocar um certo limite nessa taxa de gás, o impacto será menos acentuado. Na verdade, este problema nunca poderá ser completamente eliminado, pois sempre haverá diferenças nos custos do gás. Porém, ao tornar essa diferença menor, o ataque também acontece de forma mais lenta.
- Evite pools de baixa liquidez
A falta de boa liquidez é ruim para este problema. Quanto menor o pool de liquidez, menor a chance de um investidor obter um bom preço, pois isso é mais propenso a derrapagens. Quanto maior a derrapagem, mais lucro você pode obter com um ataque sanduíche.
- Pequenas transações
Ataques sanduíche estão interessados em grandes volumes de transações, e quanto maior o volume de transações, maior a margem de lucro. Uma maneira de evitar ataques sanduíche é dividir nossa transação em várias transações menores, já que essas pequenas transações são menos atraentes para os frontrunners (quem se antecipa a um fato, objetivando a obtenção de lucro).
Sobre nós
Nossa visão é melhorar a segurança globalmente. Acreditamos que, ao construir essa barreira de segurança, podemos melhorar significativamente a vida em todo o mundo. O SharkTeam é composto por membros com muitos anos de experiência em segurança cibernética e blockchain, os membros da equipe estão sediados em Suzhou, Pequim, Nanjing e Vale do Silício, proficientes nas teorias de base da blockchain e contratos inteligentes e fornecemos serviços abrangentes, incluindo modelagem de ameaças, auditoria de contrato inteligente, resposta a emergências, etc. O SharkTeam estabeleceu cooperações estratégicas e de longo prazo com participantes importantes em muitas áreas do ecossistema blockchain, como Huobi Global, OKX, Polygon, Polkadot, imToken, ChainIDE etc
Artigo escrito pelo SharkTeam e traduzido por Marcelo Panegali
Top comments (0)