O que smart-contract-vulnerabilities faz?
Playbook de vulnerabilidades de contratos inteligentes. Use ao auditar contratos Solidity/EVM para padrões de ataque como reentrância, estouro de inteiros, controle de acesso, delegatecall, flash loan, replay de assinatura e MEV.
Reentrância
- Descrição: Ataque onde um contrato chama outro contrato antes de atualizar seu próprio estado, permitindo que o contrato chamador entre novamente no contrato original.
- Exemplo: Função
withdraw()que envia Ether primeiro e depois atualiza o saldo. - Mitigação: Use o padrão Checks-Effects-Interactions; utilize
ReentrancyGuarddo OpenZeppelin. - Ferramentas: Slither (
reentrancy) e Mythril.
Estouro de Inteiros
- Descrição: Operações aritméticas que excedem os limites de tipo (ex:
uint256), causando wraparound. - Exemplo:
balance[msg.sender] -= amount;sem verificação de saldo suficiente. - Mitigação: Use SafeMath ou Solidity >=0.8 que inclui verificação automática de overflow.
- Ferramentas: Slither (
integer-overflow).
Controle de Acesso
- Descrição: Funções críticas que não são protegidas por modificadores como
onlyOwner. - Exemplo: Função
mint()sem restrição que permite qualquer usuário criar tokens. - Mitigação: Use modificadores de acesso como
Ownabledo OpenZeppelin. - Ferramentas: Slither (
access-control).
Delegatecall
- Descrição: Uso de
delegatecallque pode executar código malicioso no contexto de armazenamento do contrato chamador. - Exemplo: Delegar chamada para um contrato não confiável que modifica variáveis de estado sensíveis.
- Mitigação: Evite
delegatecallcom alvos não confiáveis; verifique o endereço de destino. - Ferramentas: Slither (
delegatecall).
Flash Loan
- Descrição: Empréstimos instantâneos sem garantia que podem ser usados para manipular preços e executar ataques combinados.
- Exemplo: Usar um flash loan para obter grande quantidade de tokens, manipular o preço em uma DEX e lucrar com arbitragem.
- Mitigação: Use oráculos descentralizados, limites de slippage, e verifique o retorno de empréstimos.
- Ferramentas: Slither (
reentrancy) e Mythril.
Replay de Assinatura
- Descrição: Reutilização de uma assinatura digital válida em múltiplas transações, permitindo que uma ação seja executada várias vezes indevidamente.
- Exemplo: Uma assinatura para aprovação de token usada em diferentes blockchains ou em diferentes contratos.
- Mitigação: Inclua nonces, deadline e chainId na mensagem assinada.
- Ferramentas: Slither (
signature-replay).
MEV (Miner Extractable Value)
- Descrição: Estratégias de manipulação de ordem de transações por mineradores ou validadores para extrair valor.
- Exemplo: Front-running, sandwich attacks, e manipulação de liquidez.
- Mitigação: Use esquemas de commit-reveal, limites de slippage, e minimize dependência de ordem de transação.
- Ferramentas: Não há ferramentas específicas no Slither, mas análise manual com base em padrões.