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 termo Web3 abrange vários conceitos que se concentram em aspectos da arquitetura do aplicativo e da experiência do usuário:
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.
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:
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:
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:
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.
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.