Blockchain

Introdução à Segurança de Blockchain

Project

Hey, Neste artigo, vou lhe dar uma introdução à segurança blockchain, para que você saiba o que está em torno do termo blockchain quando se trata de segurança. Em primeiro lugar, vamos aos conceitos básicos de blockchain!

Conceitos básicos de blockchain

Acredito que você já tenha ouvido falar do termo blockchain, mas sabe o que é e como funciona?

O que é blockchain?

Blockchain é um avanço recente da computação segura sem autoridade centralizada em um sistema de rede aberta. Do ponto de vista de gerenciamento de dados, um blockchain é um banco de dados que registra uma lista em evolução de registros de transações, organizando-os em uma hierarquia de blockchain. Do ponto de vista da segurança, o blockchain é criado e mantido usando uma rede de sobreposição ponto a ponto e é protegido por meio do uso inteligente, uso descentralizado de criptografia com computação de multidão.

Como funciona?

O blockchain é composto por blocos de informação, cada bloco contém um nó, lista de transações, hash e hash do bloco anterior, esse hash é usado para conectar os blocos, e o hash muda se alguma alteração for feita no bloco e isso compromete toda a blockchain, por isso é impossível alterar informações do bloco sem ser notado, e isso garante a segurança das informações. Os blocos são verificados por vários computadores ao redor do mundo, esses computadores são chamados de nós, cada computador tem seu proprietário e faz o blockchain funcionar, portanto, qualquer registro no blockchain é armazenado e processado em todos os nós ou computadores no blockchain, o que garante que os registros sejam seguros e transparentes, pois o blockchain para salvar o registro precisa ser verificado por todos os nós.

Ethereum

Ethereum é um protocolo blockchain como Bitcoin, mas Ethereum é Turing Complete, pode simular aproximadamente aspectos computacionais de qualquer outro mundo real e executar programas. O Ethereum nos deu a capacidade de executar programas em blockchain, que deu origem ao web3.

O Web3 é uma visão para uma web mais descentralizada, onde as informações do usuário são realmente próprias e os anúncios e rastreamento em sites são um recurso opcional, em vez de uma intrusão onipresente. Uma web onde os usuários têm mais controle sobre sua privacidade e o que revelam sobre si mesmos. (Sleepy, 2021)

O Ethereum Blockchain executa programas que são escritos usando a linguagem de programação Solidity, esses programas são chamados de contratos inteligentes, eles podem lidar diretamente com carteiras de criptomoedas, transações, etc. Várias falhas de segurança podem ser encontradas nesses contratos inteligentes, pois lidam com informações confidenciais, por causa de contratos inteligentes vulneráveis, muitas criptomoedas já foram roubadas.

Segurança de contractos inteligentes

A segurança é uma das considerações mais importantes para contratos inteligentes. No campo da programação de contratos inteligentes, os erros são caros e facilmente exploráveis.

Como em outros programas, um contrato inteligente executará exatamente o que está escrito. Além disso, todos os contratos inteligentes são públicos e qualquer usuário pode interagir com eles simplesmente criando uma transação. Qualquer vulnerabilidade pode ser explorada e as perdas são quase sempre impossíveis de recuperar. Portanto, é fundamental seguir as melhores práticas e usar padrões de design bem testados.

Para ter segurança em contratos inteligentes, as seguintes boas práticas devem ser seguidas:

  • Minimalismo/simplicidade: quanto mais simples o código, e menos ele faz, menores são as chances de ocorrer um bug ou efeito imprevisto
  • Reutilização de código: se já existe uma biblioteca ou contrato que faz a maior parte do que você precisa, reutilize-a.
  • Qualidade do código: o código de contrato inteligente é implacável. Cada bug pode levar à perda monetária. Você não deve tratar a programação de contrato inteligente da mesma forma que a programação de propósito geral, você deve aplicar metodologias rigorosas de engenharia e desenvolvimento de software,
  • Legibilidade/auditabilidade: Seu código deve ser claro e fácil de compreender. Quanto mais fácil for ler, mais fácil será auditar.
  • Cobertura de teste: teste tudo o que puder. Os contratos inteligentes são executados em um ambiente de execução pública, onde qualquer pessoa pode executá-los com qualquer entrada que desejar.

Agora que você tem o básico, posso abordar uma vulnerabilidade que pode ocorrer em contratos inteligentes: Arithmetic Overflow and Underflow.

Arithmetic Overflow and Underflow

A EVM (Máquina Virtual Ethereum) especifica tipos de dados de tamanho fixo para inteiro, isso significa que uma variável inteira pode representar apenas um determinado intervalo de números. O estouro ocorre quando algum número é maior que o alcance máximo, e o underflow é o contrário, quando um número é menor que o alcance mínimo.

Exemplo: Um uint8 só pode armazenar números no intervalo [0–255], se tentarmos armazenar 256 em um uint8 resultará em 0.

Variáveis em solidity podem ser exploradas se a entrada do usuário for desmarcada e forem executados cálculos que resultem em números que estão fora do intervalo do tipo de dados que os armazena.

Exemplo Aqui temos um contrato inteligente de um cofre que armazena a moeda ETH, e por padrão tem um tempo de bloqueio de 1 semana para poder fazer o saque:

O overflow/underflow aqui ocorre na função increaseLockTime(), se definirmos um valor fora do limite, o lockTime será definido como 0 e poderemos retirar o ETH, verifique o contrato de exploração:

Técnicas Preventivas

  • O Solidity 0.8 por padrão já consegue lidar com isso.
  • Se a versão do Solidity for abaixo de 0.8, utilize SafeMath para evitar esta vulnerabilidade.

Conclusão

Blockchain é uma tecnologia muito interessante e complexa, e como qualquer outra, a segurança nela é muito importante, mas na blockchain uma falha de segurança trata diretamente do dinheiro, por isso é importante seguir boas práticas de segurança e auditoria.

Esse foi mais um artigo e obrigado por ler até aqui, espero que tenha gostado.

September 26, 2022

Compartilhar

Artigos Relacionados

Blockchain

A imutabilidade dos contratos inteligentes é uma farsa