BLOG

A importância do DevSecOps em Blockchain, protocolos descentralizados e aplicações

Miniatura de Kevin Jones
Kevin Jones
Publicado em 27 de outubro de 2022

A segurança sempre foi um dos aspectos mais importantes da tecnologia da informação e, hoje, muitas organizações e seus desenvolvedores adotam uma mentalidade de segurança em primeiro lugar ao criar aplicativos. Esses princípios e ações são frequentemente descritos coletivamente como ‘DevSecOps’, que abrange toda a cultura e abordagem de segurança de aplicativos. DevSecOps significa desenvolvimento, segurança e operações. O objetivo é incorporar uma mentalidade de segurança em todos os aspectos da tecnologia da informação e infraestrutura.

Uma das áreas mais recentes e interessantes da tecnologia da informação é o blockchain, que vem com um ecossistema gigante de protocolos e aplicativos descentralizados que visam nos levar a uma versão atualizada da web, o que muitos chamam de Web3.

O que é Web3 e o que exatamente é um aplicativo descentralizado?

O termo Web3 abrange vários conceitos que se concentram em aspectos da arquitetura do aplicativo e da experiência do usuário:

  • Descentralização
  • Abertura
  • Imutabilidade
  • Programabilidade
  • Transparência

Esses conceitos principais visam devolver aos usuários o controle de sua identidade usando criptografia de chave pública e aumentar a adoção da economia ponto a ponto por meio de vários mecanismos e protocolos de blockchain. Muitos blockchains e seus protocolos circundantes podem processar transações avançadas e gerenciar o estado usando contratos inteligentes que são executados em ambientes virtualizados isolados.

Eles são então sincronizados em todos os nós da rede por meio de um mecanismo chamado algoritmo de consenso. Este é um mecanismo que permite que usuários ou nós se coordenem em um ambiente distribuído para garantir que todos os nós no sistema possam concordar com uma única fonte de verdade, mesmo que alguns agentes falhem. Além disso, muitos blockchains operam de forma resistente à censura, mantendo seus protocolos abertos e sem permissão.

Como é a paisagem?

Há um risco adicional em uma arquitetura baseada em blockchain porque a espinha dorsal da rede normalmente é alimentada por uma criptomoeda digital baseada em tokens e geralmente carrega valor monetário. Esses tokens são mantidos em endereços, geralmente armazenados em contas de propriedade externa ou em contratos inteligentes. E como a confiança também é distribuída com o uso da criptografia de chave pública, cada endereço na rede fica sujeito a ataques.

O saldo de cada conta é distribuído pela rede no que é conhecido como livro-razão público, visível para qualquer pessoa, o que deixa uma janela aberta para que hackers tenham como alvo usuários ou contratos específicos. Isso torna a privacidade e o anonimato um aspecto particularmente importante para o blockchain. Frequentemente, os humanos que gerenciam essas contas são alvos de ataques ou são habilitados por sua posição a agir de forma ilícita, com ameaças incluindo:

  • Engenharia social
  • Confiança ou chaves mal administradas
  • Peculato e fraude
  • Golpes

Além disso, a pegada tecnológica dessas diversas tecnologias de blockchain, protocolos e aplicativos descentralizados já é grande e está crescendo rapidamente. Portanto, é importante pensar nas implicações de segurança desse ecossistema em rápido crescimento. Qualquer coisa que seja construída com um conceito central de descentralização tem um cenário maior e, portanto, mais pontos de ataque que devem ser cuidadosamente analisados e protegidos.

Aqui estão alguns tópicos que vale a pena considerar ao auditar a segurança de seus aplicativos descentralizados e infraestrutura de tecnologia:

  • Blockchains de camada 1 (Bitcoin e Ethereum)
  • Blockchains de camada 2 (cadeias laterais e rollups)
  • Contratos inteligentes
  • Compiladores
  • Carteiras de software
  • Carteiras de hardware
  • Clientes Blockchain (Mineiros e Validadores)
  • Trocas de custódia (centralizadas)
  • Trocas DeFi (descentralizadas)
  • Provedores
  • Mercados (NFTs)

Vetores de ataque comuns em contratos inteligentes

Quando falamos sobre DevSecOps no ciclo de vida de desenvolvimento de um aplicativo, normalmente nos referimos ao desenvolvimento orientado à segurança. Isso também é comumente conhecido como o ato de deslocar a segurança para a esquerda. É um dos aspectos mais importantes da cultura DevSecOps, porque começa com os desenvolvedores pensando na segurança como código. Como os contratos inteligentes baseados em blockchain podem armazenar valor e atuar como um banco, isso torna o código dentro deles extremamente vulnerável a ataques e eles devem ser escritos com segurança rigorosa em mente.

O setor tem visto diversos ataques direcionados a contratos inteligentes em torno de vulnerabilidades, geralmente focados na exploração do código. Um dos maiores ataques da história ocorreu no ano passado, quando a Poly Network, um protocolo de cadeia cruzada, relatou que um invasor invadiu um contrato inteligente, transferindo o equivalente a US$ 610 milhões ao mover vários ativos para endereços de carteira externa controlados pelo hacker.

Existem muitas vulnerabilidades no desenvolvimento de contratos inteligentes, mas alguns dos ataques mais frequentes são:

  • Underflow e overflow – Normalmente ocorrem quando operações aritméticas fazem com que inteiros sem sinal atinjam seu tamanho máximo de bytes, fazendo com que o valor "se enrole" e pode causar comportamento inesperado na lógica de negócios do seu aplicativo.
  • Reentrada de contrato – Ação de explorar um contrato por meio de reentradas repetidas vezes, onde o invasor geralmente retira mais fundos do que deveria ser permitido.
  • Front running de transações – refere-se ao processo em que alguém usa tecnologia ou vantagem de mercado para obter conhecimento prévio de transações futuras.
  • Segredos mal administrados.
  • Controle de acesso mal implementado.

O que você pode fazer para nivelar o campo de jogo?

  • Crie uma cultura que coloque a segurança em primeiro lugar . Os conceitos de DevSecOps são um ótimo ponto de partida para organizações que buscam construir uma cultura focada em segurança.
  • Realizar auditorias . As auditorias fornecem uma nova perspectiva sobre a lógica do aplicativo e os processos operacionais, ajudam a expor vulnerabilidades no código e inspiram confiança nos usuários do seu aplicativo. MythX e Slither são ótimas ferramentas para auditar contratos inteligentes Ethereum.
  • Ofereça recompensas por bugs e realize testes de penetração colaborativos . A segurança colaborativa é um método comprovado para ajudar a fortalecer sua pegada de segurança. Ao colocar sua empresa em programas de recompensa por bugs e realizar testes de penetração em seus aplicativos e infraestrutura, você pode ficar à frente de vulnerabilidades e invasões.
  • Adote uma estratégia de código aberto. A transparência da sua aplicação é importante em uma tecnologia como o blockchain porque permite que os participantes optem pela adesão com base na verificação e auditorias do seu código. Além disso, ter componentes de código aberto permite maior responsabilidade do seu projeto em um ambiente comunitário.
  • Implemente assinaturas múltiplas para operações administrativas. Implementar contratos inteligentes que adotem uma arquitetura de múltiplas assinaturas para funções administrativas, como transferência de propriedade, fundos e outras operações críticas, fornecerá uma camada extra de segurança para seu aplicativo.

Conclusão

Blockchain, aplicativos descentralizados e os vários protocolos que os cercam estão crescendo rapidamente. Essas novas e empolgantes maneiras de implantar aplicativos têm o potencial de revolucionar muitos setores diferentes. No entanto, é fundamental que nos concentremos em uma mentalidade de segurança em primeiro lugar e implementemos uma cultura DevSecOps sempre que possível.

Leitura adicional

Um bom primeiro passo na jornada de qualquer pessoa no blockchain é o whitepaper associado ao protocolo que você está construindo: 

Em seguida, estude hacks e vulnerabilidades anteriores, chegando até mesmo a tentar reproduzir o hack em seu ambiente de desenvolvimento.

Para obter uma experiência de aprendizado prática sobre segurança no Ethereum, recomendo os seguintes programas de captura de bandeira (CTF), nos quais vulnerabilidades ou "bandeiras" são ocultadas em programas ou sites propositalmente vulneráveis para ensinar fundamentos de segurança.