Hey👋
Aqui estou novamente com outro artigo sobre segurança blockchain.
A blockchain ethereum trouxe o conceito de contratos inteligentes, nos quais o programador pode interagir com os dados armazenados na blockchain por meio de script programável. A segurança desses contratos inteligentes é muito importante, uma vez que esses contratos inteligentes lidam com dados importantes, como ativos digitais, tokens, etc.
Neste artigo, darei a você uma introdução à auditoria de segurança de contratos inteligentes, você aprenderá sobre as melhores práticas de segurança para contratos inteligentes e como auditar esses contratos. Se você não sabe o que são blockchain, contratos inteligentes e outras coisas, basta ler este artigo: Introdução à Segurança de Blockchain
Uma auditoria de segurança de contrato inteligente é um processo que ajuda a encontrar vulnerabilidades dentro de um contrato inteligente examinando-o em profundidade, geralmente as auditorias seguem um processo de quatro etapas:
Agora vou abordar esse assunto sob a perspectiva dos auditores, entender as fases da auditoria de segurança do contrato inteligente e aprender como um pesquisador pode auditar um contrato inteligente.
Em primeiro lugar, você deve ler as especificações e os documentos para entender como o contrato ou projeto deve funcionar, pois assim você saberá se encontrou uma vulnerabilidade considerável.
Interaja com o contrato como um usuário normal, tentando entender a fundo como o contrato funciona e as suas possibilidades. Isso normalmente é feito usando tesnets, como Goerli, Kovan, Rinkeby, etc.
Use algumas ferramentas para fazer uma varredura rápida no contrato inteligente, verificando as vulnerabilidades comuns e verificando se o contrato inteligente está seguindo as melhores práticas de desenvolvimento. Para isso, você pode usar ferramentas como Slither.
Nesta fase, você deve analisar um contrato inteligente em profundidade para encontrar vulnerabilidades usando ferramentas de suporte como Surya e Solidity Visual Developer, que proporcionam uma melhor visualização do contrato inteligente, identificando e apresentando de forma gráfica e visual os relacionamentos, chamadas internas e externas, variáveis, etc.
Ferramentas mais lentas são as que analisam o contrato o mais profundamente possível, podendo analisar bytecode EVM, binários, fuzzing do contrato, gerar entradas e assim testar várias coisas no contrato automaticamente. Conheça algumas ferramentas:
Discuta as vulnerabilidades encontradas com a equipe de auditoria e refaça as etapas necessárias para confirmar a existência de vulnerabilidades, se necessário.
Escrever uma prova de conceito para cada vulnerabilidade, isso facilita a equipe do projeto a reproduzir e verificar cada vulnerabilidade e, assim, corrigi-la. Você pode escrever provas de conceitos usando Foundry, que é um kit de ferramentas extremamente rápido, portátil e modular para desenvolvimento de aplicativos Ethereum escrito em Rust. Pretendo escrever um artigo sobre Foundry futuramente.
Nesta fase, você deve escrever um relatório detalhado sobre suas descobertas e o impacto delas. Aqui é um exemplo de como deve ser um relatório.
Use este repositório para gerar relatórios de remarcação: https://github.com/spearbit-audits/report-template
Agora que você já sabe como ocorre o processo de auditoria, conheça algumas vulnerabilidades e ataques mais conhecidos em contratos inteligentes:
Essa vulnerabilidade ocorre quando um contrato envia ether para um endereço desconhecido. Um invasor pode construir um contrato em um endereço externo que contém código malicioso na função de fallback, quando um contrato envia ether para o endereço malicioso, o código malicioso é invocado, e este código malicioso pode chegar a repetir essa transferência de ether até o contracto vulnerável ficar sem saldo.
Como resultado da natureza de preservação de contexto do DELEGATECALL, construir bibliotecas personalizadas livres de vulnerabilidades não é tão fácil quanto se poderia pensar. O código nas próprias bibliotecas pode ser seguro e livre de vulnerabilidades, no entanto, quando executado no contexto de outro aplicativo, novas vulnerabilidades podem surgir.
Quando você declara a variável de estado como privada, isso significa que outros contratos não podem acessar esses dados, mas como tudo na blockchain é público, é possível acessar esses dados apenas lendo o slot de memória onde a variável está dentro blockchain.
Este foi mais um artigo, obrigado por chegar até aqui e ficaria muito feliz se você compartilhasse este artigo.
Artigos Relacionados