Blog

Tradução automática · Ler em inglês

Módulo SSO 2 - Vulnerabilidades de Contratos Inteligentes: Um Mergulho Profundo nos Ataques de Reentrância

Os contratos inteligentes oferecem transparência, mas trazem riscos. Este artigo revela vulnerabilidades como a Reentrância, com a perda de US$ 150 milhões da DAO como caso. O Integer Overflow levou ao revés de US$ 900 milhões da BeautyChain. A DAOMaker perdeu US$ 4 milhões devido a falhas de Controle de Acesso. Os Ataques de FlashLoan fizeram a Harves Finance perder US$ 38 milhões.

Por Markos Mebellis

Módulo SSO 2 - Vulnerabilidades de Contratos Inteligentes: Um Mergulho Profundo nos Ataques de Reentrância
Nesta página

Os contratos inteligentes estão revolucionando indústrias globais com sua eficiência, transparência e características imutáveis. No entanto, seu design aberto e automatizado também os expõe a riscos. Para maximizar seu potencial e minimizar ameaças, é vital compreender suas vulnerabilidades e possíveis vetores de ataque. Criar e manter esses contratos exige atenção cuidadosa e adesão às melhores práticas. Este artigo explora vulnerabilidades comuns, ilustrando-as com casos do mundo real para aprimorar a compreensão. Vejamos o artigo a seguir, cortesia da Salus Security.

Principais Vulnerabilidades:

**Reentrância:** Aqui, os atacantes exploram uma brecha, reentrando em funções antes que operações-chave sejam concluídas ou valores sejam atualizados.

Reentrância de Função Única: Isso ocorre quando um contrato interage com um contrato malicioso, permitindo que este reentre em uma função. Por exemplo, contratos maliciosos podem reentrar continuamente na função 'withdrawBalance', drenando mais ether antes que os saldos sejam atualizados.

Ataques Notáveis:

  • A DAO (2016): Após arrecadar US$ 150 milhões, foi hackeada devido a vulnerabilidades de codificação. Isso levou a uma divisão na rede Ethereum.
  • PolyDex (2021): Perdeu US$ 500 mil devido a um ataque de reentrância no Contrato Inteligente PLX Locker.
  • Bacon Protocol (2022): Sofreu uma perda de US$ 1 milhão devido a um bug de reentrância na função lend().
  • Lendf.Me (2020): Perdeu aproximadamente US$ 24,7 milhões em várias criptomoedas.

**Reentrância Cruzada entre Funções:** Surge de estados compartilhados entre diferentes funções e proteção de reentrada deficiente. O exemplo de 'balances' acima indica que, apesar de 'withdrawAll' ter proteção, os atacantes ainda podem explorar a função 'transfer'.

Incidentes Famosos:

  • DFX Finance (2022): Perdeu mais de US$ 7 milhões devido a um ataque que explorou uma função sem proteção contra reentrância.
  • Hundred Finance (2022): Perdeu cerca de US$ 6,5 milhões após um ataque de reentrância explorar a função borrowFresh.
  • Fei Protocol (2022): Perdeu cerca de US$ 80 milhões em um ataque que aproveitou uma brecha de Reentrância.

**Reentrância Cruzada entre Contratos:** Resulta de estados compartilhados entre diferentes contratos e sequências erradas de modificação de variáveis. Mesmo que as funções tenham proteção, outras funções, como 'burnAccount', ainda podem ser exploradas.

Ataques Proeminentes:

  • Rari Capital (2021): Perdeu aproximadamente US$ 10 milhões (~2600 ETH) em menos de uma hora.
  • ValueDefi (2021): Perdeu 5345,314 WBNB devido a cálculos de cotas inválidos, que dependiam de dados externos.

Reentrância Somente Leitura:

A reentrância somente leitura explora uma função que, embora não altere o estado do contrato, ainda pode produzir saídas errôneas quando o estado não está consistente.

Ataques Notáveis:

  • QuickSwap (2022): Os exploradores usaram indevidamente um flash loan para alterar o preço à vista do ativo, desviando 138 ETH e 700 tokens MATIC. Isso foi possível devido a uma falha no oráculo Curve LP.
  • dForce (2023): Um bug de reentrância somente leitura estava no código que acessava oráculos de preços nas redes Arbitrum e Optimism com a Curve Finance.
  • Sentimente (2023): Um ataque, explorando uma falha de reentrância somente leitura, resultou em um roubo de US$ 1 milhão. Felizmente, 90% foi devolvido pelo autor.
  • Sturdy (2023): Perdeu aproximadamente 442 ETH devido a um problema de reentrância somente leitura do Balancer, em que o preço do B-stETH-STABLE foi adulterado.

Prevenção de Vulnerabilidades de Reentrância:

  1. Sempre siga o padrão check-effect-interaction.
  2. Empregue proteção contra reentrada para todas as operações sensíveis.
  3. Trate cada chamada externa meticulosamente.

Integer Overflow:

Quando os cálculos ultrapassam os limites, ocorre overflow, frequentemente levando a valores minúsculos ou gigantescos.

Ataques Ilustrativos:

  • BeautyChain (2018): Os atacantes obtiveram 10^58 BECs por meio de um integer overflow, despejando impressionantes US$ 900 milhões.
  • Poolz (2023): Resultou em uma perda de aproximadamente US$ 665.000 nas redes Ethereum, Binance e Polygon.

Contramedidas para Integer Overflow:

  1. Utilize métodos de cálculo seguros, como a biblioteca safeMath.
  2. Priorize a verificação de limites para garantir que os resultados permaneçam dentro do intervalo.
  3. Adote a versão 0.8.0 ou posterior do compilador Solidity para detecção integrada de overflow.

Controle de Acesso:
Vulnerabilidades de controle de acesso surgem da ausência de restrições rigorosas de acesso em funções que lidam com operações cruciais.

  • Ataques Proeminentes:
  • DAOMaker (2021): Impressionantes ~US$ 4 milhões foram desviados após a função init ficar vulnerável.
  • GymNetwork (2022): Os exploradores aproveitaram uma falha de autenticação em depositFromOtherContract(), facilitando o aumento ilícito de saldo sem qualquer pagamento real. A perda? Cerca de 2.475,91 WBNB.
  • Tempdao (2023): Uma abordagem negligente ao controle de acesso da função migrateStake levou a uma perda superior a US$ 2,34 milhões.

Vulnerabilidade de Controle de Acesso

  • Descrição: Vulnerabilidades que surgem devido a mecanismos de restrição inadequados que governam o acesso e os privilégios a operações específicas dentro de um sistema.

Medidas de Prevenção:

  1. Verificação Estrita de Permissões: Sempre aplique protocolos estritos de permissão para funções, especialmente aquelas que lidam com operações sensíveis.
  2. Mecanismo de Múltiplas Assinaturas: Para tarefas que exigem decisão conjunta, use protocolos de múltiplas assinaturas que requerem várias aprovações antes de executar operações sensíveis.

Vetores de Ataque Comuns

  • Descrição: Diversos métodos ou canais pelos quais atacantes exploram vulnerabilidades em um sistema, principalmente em contratos inteligentes.

Exemplos notáveis:

  • Ataques de FlashLoan: Explora o recurso de empréstimo instantâneo dos sistemas de finanças descentralizadas para executar atividades maliciosas.
  • Front-Running: Os atacantes tomam conhecimento da transação pendente de outro usuário e agem sobre ela oferecendo uma taxa de gas mais alta.

Ataque de FlashLoan

  • Descrição: Embora não seja um ataque por si só, o FlashLoan é um recurso DeFi que permite aos usuários tomar empréstimos de grandes quantias instantaneamente sem garantia. Ele tem sido explorado devido a falhas lógicas nas interações e relações dos contratos.

Ataques Notáveis:

  1. Harves Finance (2020.10.26): Resultou em uma perda de US$ 38 milhões.
  2. InverseFinance (2022.6.16): Levou a uma perda de 53.2445 WBTC e 99.976,29 USDT.
  3. NewFreeDAO (2022.9.8): Drenados 4.481 WBNB, equivalente a aproximadamente US$ 1,25 milhão.
  4. Lodestar (2022.12.11): Explorado por meio de manipulação de preço do oráculo.
  5. **0vix (2023.4.28)**Resultou em uma perda de $2 milhões na chain Polygon.

Recomendações de Prevenção:

  1. Reconheça as características do Flashloan durante o desenvolvimento do projeto.
  2. Para uma determinação precisa de preço, use média ponderada pelo tempo ou múltiplos oráculos.

Front-running

  • Descrição: Um atacante obtém conhecimento da transação de outro usuário a partir do memPool e se aproveita disso oferecendo uma taxa de gas mais alta.

Ataques Notáveis:

  1. Sushi Badger Digg (2021.1.25): Resultou em uma perda de 81.68 ETH.
  2. Sushiswap Ape-ETH pool (2022.5.17): O atacante lucrou aproximadamente 0.3 ETH.
  3. Uniswap (2023.4.2): Causou uma perda de cerca de $25 milhões por meio de um ataque sandwich.

Recomendações de Prevenção:

  1. Use proteção contra slippage ao negociar.
  2. Execute negociações fora dos horários de pico, especialmente em mercados voláteis.
  3. Utilize o FlashBot rpc da 1inch para enviar negociações diretamente aos mineradores, contornando assim o memPool.

Resumo

Parabéns! Você concluiu o Módulo 2 - Vulnerabilidades de Contratos Inteligentes: Um Mergulho Profundo em Ataques de Reentrância e Exploits Comuns

Vamos revisar seus aprendizados:

Vulnerabilidades de Reentrância - Atacantes exploram brechas, reentrando em funções antes que elas sejam totalmente concluídas.

  • Reentrância em Função Única: Um contrato malicioso reentra em uma função de outro contrato.
  • Reentrância entre Funções: Estados compartilhados entre funções diferentes são explorados devido à proteção de reentrada inadequada.
  • Reentrância entre Contratos: Explora estados compartilhados entre diferentes contratos.
  • Reentrância Somente Leitura: Explora uma função que produz saídas errôneas quando o estado não está consistente.

Estouro de Inteiro - Cálculos que ultrapassam os limites definidos, resultando em valores extremos.

Vulnerabilidades de Controle de Acesso - Surgem da ausência de restrições de acesso rigorosas em funções essenciais.

Vetores de Ataque Comuns - Métodos pelos quais atacantes exploram vulnerabilidades do sistema.

**FlashLoan Attack **- Um recurso DeFi que permite empréstimos grandes instantâneos sem garantia, mas é explorado devido a falhas lógicas.

Ataque de Front-running- Os atacantes obtêm conhecimento de transações pendentes e se aproveitam oferecendo taxas de gas mais altas.

Este artigo foi trazido a você por:

Resumo — ilustração