A tecnologia blockchain despertou o interesse de empresas no mundo todo. Suas vantagens, incluindo imutabilidade e transparência, levaram empresas tradicionais fora das finanças, como BMW e Bosch, a experimentar contratos inteligentes para criar cadeias de suprimentos mais eficientes e fazer produtos de engenharia mais inteligentes.
Contratos inteligentes, que são essencialmente softwares codificados em um blockchain específico, formalizam e executam acordos entre várias partes, eliminando a necessidade de um intermediário terceirizado confiável, economizando tempo e permitindo uma validação baseada em consenso multipartidário. Eles podem ser usados em uma variedade de atividades, como testamentos, jogos de xadrez e até mesmo transferência de escrituras.
Mas, apesar de todo o potencial disruptivo e das capacidades altamente elogiadas que o blockchain promete, o número de assaltos visando contratos inteligentes aumentou mais de 12 vezes nos últimos dois anos. Se eles são tão inteligentes, por que estamos vendo um aumento tão grande nos assaltos?
Para entender melhor, vamos esclarecer a relação entre blockchain e contratos inteligentes.
Descentralização
Pense em uma rede blockchain como a plataforma AWS da Amazon e cada um de seus contratos inteligentes como um servidor. Com blockchain, não há um único servidor centralizado para hackers explorarem, tornando mais difícil para os cibercriminosos usarem métodos tradicionais de hacking, como cavalos de Troia, ataques físicos e ransomware. Blockchain combate isso eliminando o único ponto de falha de uma rede.
Embora uma rede blockchain não possa ser exatamente hackeada, muitos aplicativos distribuídos e contratos inteligentes que o blockchain facilita podem.
Graças ao sucesso e influência gradualmente crescentes das finanças descentralizadas (DeFi), grandes quantidades de valor estão sendo canalizadas por meio de contratos inteligentes, tornando-os atraentes para hackers. E essa ameaça provavelmente só aumentará à medida que mais ativos forem movidos para a cadeia com o aumento de ativos tokenizados do mundo real. O hacking representa uma séria ameaça a esse crescente setor de blockchain porque os ativos roubados de contratos inteligentes são extremamente difíceis de recuperar.
Ameaças aos contratos inteligentes
Como todo código, contratos inteligentes estão sujeitos a erro humano. Esses erros podem vir na forma de erros de digitação, deturpações de especificações ou erros mais sérios que podem ser usados para hackear ou “enganar” o contrato inteligente. Ao contrário do blockchain, não há garantia de que os contratos tenham sido revisados por pares ou validados.
Embora a codificação defeituosa possa ser evitada por uma auditoria de contrato inteligente, outras ameaças são mais complexas. A vulnerabilidade default-visibility, por exemplo, é um erro comum que ocorre quando a visibilidade das funções não é especificada e certas funções são deixadas públicas. Por exemplo, hackers podem acessar a função mint e criar bilhões de tokens relevantes. Felizmente, essa vulnerabilidade pode ser evitada executando uma auditoria que garanta que todas as funções sejam definidas como privadas por padrão.
Outra ameaça mais complicada e séria causada por erros de codificação é um ataque de reentrada. Isso acontece quando um invasor tira vantagem das chamadas de função externa do contrato inteligente e implanta um contrato inteligente malicioso para interagir com aquele que detém os fundos.
Em 2016, o incidente DAO, que ocorreu nos primeiros dias do Ethereum, demonstrou o quão perigoso esse tipo de ataque pode ser e, finalmente, levou à criação do Ethereum Classic. Prevenir ataques de reentrada não é simples, mas existem estruturas e protocolos que podem mitigar os danos, que incluem CEI (check, effects and interactions), guardas de reentrada e muito mais.
Se você é competente em código de contrato inteligente, ler o código em si é sempre uma grande vantagem. Assim como ler um contrato antes de se mudar para um novo apartamento protege você de qualquer surpresa, ser capaz de ler o código de um contrato inteligente pode revelar falhas, funções maliciosas ou recursos que não funcionam ou não fazem sentido.
No entanto, se você for um usuário final que não é particularmente entendido em tecnologia, use apenas contratos inteligentes com código publicamente acessível que seja amplamente usado. Isso, ao contrário de contratos inteligentes compilados, onde o código fica oculto e as pessoas não conseguem revisá-lo, é a opção preferida.
Abordando vulnerabilidades de contratos inteligentes
Não podemos esquecer que a maioria dos administradores de contratos inteligentes deixa para si alguns privilégios de administrador, geralmente para fazer alterações pós-lançamento. Para acessar esses privilégios, os administradores precisam usar suas chaves privadas. Essas chaves privadas são mais uma vulnerabilidade e, se não forem custodiadas corretamente (por exemplo, em um cofre frio offline), os hackers que de alguma forma obtiverem acesso podem fazer alterações no contrato inteligente e canalizar os fundos para qualquer lugar que desejarem.
Ultimamente, o Parlamento Europeu determinou que um mecanismo kill switch fosse empregado para mitigar danos no caso de um contrato inteligente ser comprometido. Embora a intenção dos reguladores fosse dar às pessoas mais proteção sobre seus próprios dados pessoais, o ato gerou preocupações na comunidade Web3.
Se não for implementado corretamente, um kill switch pode destruir todo o contrato inteligente e qualquer valor armazenado nele. Uma implementação melhor seria ativar uma função de pausa que, no caso de uma ameaça à segurança, poderia congelar o contrato inteligente e reativá-lo assim que o problema fosse resolvido.