Por que a segurança de contratos inteligentes é diferente da segurança de softwares convencionais?
A segurança de contratos inteligentes é diferente porque o código é público, muitas vezes guarda dinheiro diretamente e, em geral, não pode ser alterado depois de implantado. Um erro em uma aplicação web pode ser corrigido de um dia para o outro; um erro em um contrato pode ser encontrado por qualquer pessoa que leia o código e explorado antes que a equipe acorde. O Ethereum.org estima que as perdas causadas por falhas em contratos inteligentes ultrapassam um bilhão de dólares e cita o ataque à DAO em 2016 como um dos primeiros exemplos.
Considere um estúdio fictício com quatro pessoas, o Larkspur Labs, que está criando um fundo de poupança simples no qual os membros depositam recursos e sacam sua parte. O desenvolvedor, Kofi, deixa anotações de revisão antes da implantação: 'withdraw envia os recursos e depois define o saldo como 0. setFee é pública, vou restringir depois. usando versão antiga do compilador do tutorial. preço do token de recompensa obtido de um único pool de uma pequena corretora. testes: tentei depósito + saque uma vez manualmente, funciona'. Cada linha corresponde a uma classe conhecida de vulnerabilidade.
Quais são as vulnerabilidades mais comuns em contratos inteligentes?
As vulnerabilidades mais comuns em contratos inteligentes são falhas de controle de acesso, manipulação de oráculos de preços, erros de lógica, falta de validação de entradas e reentrância, que lideram o OWASP Smart Contract Top 10 de 2025. Ethereum.org aborda as mesmas categorias centrais.
Reentrância
Um contrato envia fundos ou chama outro contrato antes de atualizar seus próprios registros. Um destinatário mal-intencionado faz uma nova chamada enquanto o saldo antigo ainda aparece e saca novamente. A função de saque de Kofi, que faz o pagamento antes de zerar o saldo, é o exemplo clássico. A correção usual é atualizar o estado primeiro e interagir com outros contratos por último, uma sequência frequentemente chamada de verificações, efeitos e interações.
Controle de acesso
Funções sensíveis que qualquer pessoa pode executar. A função pública setFee de Kofi permite que qualquer desconhecido altere a taxa. O Ethereum.org descreve padrões como um papel de proprietário, acesso baseado em papéis e aprovação com múltiplas assinaturas.
Estouro e subfluxo de números inteiros
Operações aritméticas em que os valores dão a volta ao ultrapassar o limite, fazendo um saldo abaixo de zero se tornar um número enorme. O Ethereum.org informa que o Solidity 0.8.0 e versões posteriores rejeitam esse comportamento por padrão, enquanto códigos mais antigos precisam de verificações explícitas. É por isso que o compilador antigo de Kofi importa.
Manipulação de oráculos
Consultar um preço em um único mercado de baixa liquidez que um invasor consegue manipular, muitas vezes com um empréstimo instantâneo, tomado e quitado em uma única transação. Projetos robustos usam oráculos descentralizados ou preços médios ao longo do tempo.
Erros de lógica e validação
Regras que não correspondem ao funcionamento planejado ou entradas que nunca são verificadas, como um valor zero ou um endereço inesperado.
Como as equipes testam e auditam contratos inteligentes?
As equipes testam e auditam contratos inteligentes em camadas, porque nenhum método identifica tudo: testes automatizados, ferramentas de análise, implantação em uma rede de testes, revisão independente e, para contratos que guardam valores significativos, auditoria externa e programa de recompensas por falhas.
1. Testes unitários e de propriedades
Escreva testes para todas as funções, incluindo casos hostis, como um destinatário que faz uma chamada de volta durante a execução. O teste de fuzzing experimenta milhares de entradas aleatórias automaticamente.
2. Análise estática
Ethereum.org cita ferramentas como Slither, Mythril e Aderyn, que analisam o código em busca de padrões de risco conhecidos.
3. Teste as redes
Implante em uma rede de testes pública antes de implantar na rede principal. Ethereum.org recomenda Sepolia para o desenvolvimento de aplicações e contratos; o ether da rede de testes foi concebido para não ter valor real, então os erros não custam nada.
4. Revisão por pares e bibliotecas auditadas
Use controle de versão, revisores independentes em cada alteração e bibliotecas bem revisadas, como OpenZeppelin Contracts, em vez de escrever o controle de acesso do zero.
5. Auditoria, recompensa por identificação de falhas e monitoramento
Auditorias independentes acrescentam uma camada de verificação, mas, como observa o ethereum.org, não detectam todas as falhas. Programas de recompensa por descoberta de falhas, funções de pausa de emergência e monitoramento de eventos cobrem o que resta.
Como é uma revisão de segurança fraca e uma aprimorada?
Revisão fraca: 'Depósito e saque testados manualmente, tudo funciona, pronto para implantar.' Um teste do fluxo sem problemas mostra que o contrato funciona para usuários honestos, que é justamente o que os invasores não são.
Revisão aprimorada: Reentrância: withdraw agora zera o saldo antes de enviar, e um teste usa um contrato receptor malicioso para tentar fazer uma chamada de volta. Controle de acesso: setFee restrito a um papel de proprietário de uma biblioteca auditada, com um teste que confirma que a chamada de um desconhecido falha. Compilador: atualizado para uma versão 0.8 atual, com as verificações de estouro ativadas. Oráculo: preço de um único pool substituído por uma fonte descentralizada de preços, com um limite de plausibilidade para movimentos bruscos. Testes: testes unitários, uma rodada de testes com entradas aleatórias e uma análise estática com explicação de cada achado, seguidos de duas semanas na Sepolia com um colega tentando encontrar falhas. Auditoria externa agendada antes de aceitar qualquer valor real.
Quais são os erros comuns de segurança em contratos inteligentes?
O erro mais comum é testar apenas o fluxo ideal, como se todos que chamam o contrato fossem honestos. Outros: deixar funções administrativas abertas para restringi-las depois, copiar código de tutoriais com um compilador desatualizado, confiar em uma única fonte de preços, tratar uma auditoria como garantia, pular a etapa da rede de testes e implantar sem um plano para pausar ou atualizar.
Onde esta aula se encaixa na Tosheo.ai?
Esta é uma aula de Programação na categoria Blockchain e no curso de blockchain. Esta página gratuita explica cada etapa em texto; a versão prática completa, na qual você revisa e corrige código real de contratos e executa testes em uma rede de teste, está na trilha opcional de Programação, disponível após o cadastro. Comece pela explicação sobre contratos inteligentes se os conceitos básicos forem novos para você. Tosheo.ai não é um curso intensivo em tempo integral nem uma qualificação profissional para auditores, e nada aqui constitui orientação de investimento; contratos que armazenam valores reais precisam de uma auditoria especializada.
Fontes e escopo
ethereum.org, segurança de contratos inteligentes (verificado em 19 October 2026) ↗
Os 10 principais riscos da OWASP para contratos inteligentes, 2025 (verificado em 19 October 2026) ↗
ethereum.org, redes e redes de teste (verificado em 19 October 2026) ↗