Segurança de contrato inteligente: uma abordagem ágil de SDLC PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Segurança de contrato inteligente: uma abordagem de SDLC ágil 

Tempo de leitura: 10 minutos

Blockchain é citado como um livro-razão descentralizado e à prova de adulteração. Mas esse livro à prova de adulteração é vulnerável a hacks e explorações. A descentralização, que é uma das vantagens mais fortes do Blockchain, é uma das desvantagens. 

Bem, tudo bem, mas e o SDLC? 

A abordagem do ciclo de vida do software que estamos prestes a discutir é baseada na classificação das vulnerabilidades de segurança em contratos inteligentes em várias fases. 

Na primeira seção, apresentamos os problemas de segurança nos contratos inteligentes. E na próxima seção, discutimos suas soluções divididas em quatro fases; Design de Segurança, Implementação de Segurança, Teste antes da Implantação e, por último, Monitoramento e Análise. 

ANÁLISE DE QUESTÕES DE SEGURANÇA EM SMART CONTRACTS 

Contratos inteligentes são vulneráveis ​​a vários hacks e exploits. Esses contratos que são sinônimos de acordos legais do mundo real são executados independentemente com base nos termos das blockchains nativas. 

Mas você já pensou que mesmo esses blockchains nativos também podem ser responsáveis ​​por potenciais ameaças de segurança em contratos inteligentes? Abaixo, apresentamos algumas das características dos Blockchains para o mesmo:

Descentralização: é considerada uma das vantagens dos protocolos baseados em blockchain. Mas os atacantes inventaram uma maneira de transformar essa característica positiva em negativa. 

Atores maliciosos podem criar uma identidade falsa para desenvolver e implantar um contrato inteligente. Às vezes, torna-se difícil identificar um contrato vulnerável, pois apenas o endereço público (ou) as chaves públicas estão disponíveis em blockchains públicos. 

Código de código aberto: Isso pode surpreendê-lo, mas sim, em geral, a maioria dos códigos de contrato inteligente é um pouco de código aberto. 

Digamos, no caso da Ethereum Virtual Machine (EVM), seu bytecode é sempre público. E alguns descompiladores Solidity podem ajudá-lo a obter um endereço de contrato inteligente e o código Solidity. A exposição do código-fonte torna esse recurso uma vantagem para os invasores. 

Plataformas blockchain não evoluídas: Para um desenvolvedor, é um requisito principal familiarizar-se com a plataforma de desenvolvimento. Existem muitas plataformas blockchain novas ou subdesenvolvidas, portanto, os desenvolvedores não podem desenvolver um conhecimento profundo das operações na blockchain. 

Essa inconsistência afeta os contratos inteligentes devido à falta de sincronização. As falhas na plataforma blockchain permanecem despercebidas devido à sua evolução contínua. 

Transações desconhecidas: No primeiro ponto, discutimos a identidade anônima; da mesma forma, as transações em blockchains não são divulgadas. É impossível rastrear as transações, levando a muitas atividades ilegais. Como as transações financeiras estão envolvidas, qualquer problema de segurança pode resultar em enormes perdas financeiras. 

SOLUÇÕES DE SEGURANÇA DE CONTRATO INTELIGENTE

Agora, avançando na segurança do contrato inteligente, podemos comparar todas as etapas necessárias para proteger um contrato inteligente com sua evolução. Como no desenvolvimento de software tradicional, tendemos a seguir um ciclo de vida de desenvolvimento; da mesma forma, podemos classificar o ciclo de vida do desenvolvimento do contrato. 

O ciclo de vida de desenvolvimento de contrato inteligente pode ser dividido em quatro fases: design de segurança, implementação de segurança, teste antes da implantação e monitoramento e análise.

visão geral dos temas de segurança a partir de uma perspectiva do ciclo de vida do contrato inteligente
visão geral dos temas de segurança de uma perspectiva do ciclo de vida do contrato inteligente

1. PROJETO DE SEGURANÇA 

Esta primeira fase engloba três temas; princípio de projeto, padrão de projeto e modelagem de segurança (como mostrado na figura acima). O foco principal desses temas é o design do contrato e como as ameaças à segurança podem ser evitadas. 

PRINCÍPIO DE PROJETO

Os princípios de design são ideias fundamentais para projetar contratos inteligentes seguros no blockchain. Existem cinco princípios essenciais de design para contratos: Prepare-se para falhas, Implemente com cuidado, Mantenha os contratos simples, Mantenha-se atualizado e Obrigatório saber sobre as propriedades do blockchain. 

Agora, você pode pensar, como eles ajudarão a criar um contrato inteligente seguro? 

Vamos pegar qualquer um dos princípios acima, digamos, “Prepare-se para a falha”, isso significa que, na ausência de esquemas de correção, o contrato deve ser capaz de responder a bugs. E se ocorrer algum ataque, o contrato deve poder pausar para evitar mais perdas. 

PADRÃO DE DESIGN

No projeto de software, os padrões de projeto são as soluções que podem ser reutilizadas para resolver um problema. 

Se tomarmos um exemplo do Ethereum, existem seis padrões de segurança; Interação de efeitos de verificação, Parada de emergência, Mutex, Redutor de velocidade, Limite de taxa e Limite de equilíbrio.  

Podemos usar esses padrões de segurança para resolver problemas de segurança no blockchain, como a vulnerabilidade de reentrância que pode ser tratada pelo padrão Mutex. 

Ao mesmo tempo, o padrão de parada de emergência pode nos ajudar a encerrar a execução de um contrato se ele for afetado por uma vulnerabilidade. 

MODELAGEM DE SEGURANÇA

Pode haver uma diferença entre o código desenvolvido e o código necessário para contratos, pois o Solidity é usado para criar contratos; esta linguagem satisfaz a completude de Turing, mas é propensa a erros. 

A figura acima mostra que esta subfase abrange duas fases; projeto e implementação de segurança. 

A modelagem de segurança está diretamente relacionada à lógica de negócios; como as especificações são derivadas do negócio, a lógica pode ser classificada por semântica livre de erros. Isso ajuda mais tarde durante o processo de verificação formal realizado para mitigar vulnerabilidades. 

2. IMPLEMENTAÇÃO DE SEGURANÇA

Nesta seção, abordaremos dois dos três temas; segurança

Desenvolvimento e modelo de segurança, pois já abordamos a modelagem de segurança na última fase.

DESENVOLVIMENTO DE SEGURANÇA

Esta seção verá como as vulnerabilidades podem ser evitadas durante o processo de implementação do contrato. 

Na plataforma Ethereum, temos EIPs de segurança (propostas de melhoria Ethereum) – recomendações para combater os problemas de segurança no Ethereum plataforma. Assim, esses EIPs são dignos de nota por implementar contratos inteligentes com segurança. 

MODELO DE SEGURANÇA

Os modelos servem como origem para novos documentos. Os modelos de contrato inteligente com parâmetros operacionais conectam um acordo legal a um código executável. 

No contexto da segurança de contrato inteligente, é possível extrair os modelos de contrato padrão com parâmetros de segurança atualizados, como padrões de segurança e bibliotecas de segurança. Isso reduzirá a possibilidade de erros na codificação manual. 

3. TESTES ANTES DA IMPLANTAÇÃO

Novamente, a exigência desta fase decorre de uma das vantagens dos contratos inteligentes – “Imutabilidade”. 

Depois que os contratos inteligentes são criados, não há como alterá-los. Portanto, é obrigatório realizar testes suficientes para garantir a segurança dos contratos inteligentes antes da implantação.

Esta fase abrange três parâmetros de segurança a serem seguidos antes de implantar um contrato inteligente; Verificação formal rigorosa, ferramentas de análise de código e auditoria de segurança. 

VERIFICAÇÃO FORMAL RIGOROSA

A verificação formal é um processo bem definido que aproveita o raciocínio matemático e as provas matemáticas para verificar as propriedades desejadas do sistema. 

Podemos realizar a verificação formal em contratos inteligentes, pois o programa de contrato é curto e limitado no tempo. Existem várias maneiras de formalizar e verificar contratos inteligentes de forma rígida; alguns são baseados no código do contrato e outros na semântica da máquina virtual Ethereum (EVM). 

FERRAMENTAS DE ANÁLISE DE CÓDIGO

A análise do código é feita sem executar os programas. Para isso, utilizamos algumas ferramentas denominadas Static Application Security Testing (SAST). Essas ferramentas auxiliam na descoberta de falhas de segurança no código-fonte. 

A análise realizada por essas ferramentas pode incluir uma ou todas as etapas a seguir:

(I) Crie uma representação intermediária (IR), como uma árvore de sintaxe abstrata (AST), para análise detalhada. 

(Ii) Complementar o RI com informações suficientes obtidas de controle estático ou análise de fluxo de dados e técnicas de verificação formal; essas técnicas incluem: execução simbólica, interpretação abstrata e verificação de modelo simbólico. 

Mas quais são as ferramentas que podemos usar para realizar a análise de código no Smart Contract? 

Embora existam muitas ferramentas que podem ser usadas para realizar a análise de segurança, Oyente é a mais popular. 

Ouvinte pode ser usado para realizar análises de segurança para os contratos inteligentes EVM. Ele usa “execução simbólica” para descobrir quatro bugs comuns; dependência de ordenação de transação, dependência de carimbo de data/hora, exceções mal tratadas e reentrada. 

A arquitetura de Oyente
A arquitetura de Oyente

A arquitetura do Oyente mostra que ele recebe bytecode e apresenta o estado global do Ethereum como entrada. 

Uma das desvantagens do Oyente é que ele detecta apenas vulnerabilidades de segurança. A técnica de execução simbólica utilizada por Oyente não explora todos os caminhos possíveis. Assim, surge a necessidade de outras ferramentas como Segurança e auditorias manuais. 

AUDITORIA DE SEGURANÇA

Começaremos esta seção onde deixamos a última; as auditorias manuais. 

Mas primeiro, vamos entender a necessidade de uma auditoria de segurança; seja o hack da Ronin Network ou o hack da Poly Network, o código não auditado é o mais vulnerável a hacks e exploits. 

Eles levam a enormes perdas financeiras. Não apenas auditar seu projeto Web3, na verdade, mas fazê-lo auditar por profissionais especializados também é importante, pois depende da capacidade profissional dos auditores para realizar auditorias de segurança. 

Novamente, onde encontrar esses especialistas profissionais? Você não precisa ir a lugar algum procurando auditores confiáveis; clique https://t.me/quillhash para entrar em contato com um deles! 

Uma auditoria de contrato inteligente ideal é uma combinação de análise de código manual e automatizada; como discutimos no ponto anterior, mesmo indo atrás da análise automatizada de código de ferramentas como o Oyente, existe a possibilidade de vulnerabilidades não identificadas no contrato. 

Assim, para superar isso, os auditores de segurança podem analisar manualmente todas as linhas de código e testá-las em relação a possíveis vulnerabilidades. 

4. MONITORAMENTO E ANÁLISE

Lembre-se do princípio em constante evolução do Blockchain que discutimos inicialmente? 

Esta fase é baseada no mesmo tema; uma vez que o contrato tenha sido implantado e executado, algumas vulnerabilidades que passaram despercebidas nas etapas anteriores podem ocorrer devido a novos lançamentos e atualizações frequentes que posteriormente tornam os contratos menos eficientes. 

Podemos realizar; recompensa de bugs, monitoramento de segurança e análise post hoc para superar essas barreiras. 

RECOMPENSA DE ERRO

Como estamos considerando os problemas de segurança pós-implantação com contratos, Bug Bounties pode ser útil. A técnica de verificação formal discutida anteriormente é uma técnica de análise estática. A recompensa por bugs, por outro lado, é uma técnica de análise dinâmica. 

O conceito por trás do Bug bounty é simples; hackers descobrem bugs e, em troca, são pagos com algumas recompensas financeiras. Parece uma situação ganha-ganha, certo? Mas não é!

O problema aqui é; que o valor dos bugs pode ser maior do que a recompensa nos mercados cinzentos, e a possibilidade é que os hackers possam explorar ou vender os bugs para obter um preço alto. 

Às vezes, os proprietários do projeto negam o pagamento da recompensa, a menos que os bugs sejam confirmados; os hackers também se preocupam com a incerteza dos pagamentos após a revelação de bugs. 

Para superar isso, foi proposto um framework de recompensas de bugs, conhecido como “Hydra”. 

A Hydra utiliza uma tecnologia de exploração de lacunas chamada programação N-of-N-version (NNVP) como um sistema de recompensas de bugs no blockchain. 

A estrutura Hydra com cabeças
A estrutura Hydra com cabeças

MONITORAMENTO DE SEGURANÇA

Podemos usar a análise de código estático para descobrir as vulnerabilidades de segurança, mas esse método é usado antes de implantar os contratos inteligentes. 

Mas para encontrar bugs e potenciais vulnerabilidades em tempo real, temos que monitorar e analisar dados de transações no blockchain. 

Essas vulnerabilidades descobertas pela análise de contratos inteligentes podem ser chamadas de vulnerabilidades de rastreamento. Três tipos de contratos estão no centro dessas vulnerabilidades de rastreamento; 

(I) Contratos gananciosos (contratos que permanecem vivos e bloqueiam o Ether indefinidamente).

(Ii) Contratos pródigos (contratos que vazam fundos descuidadamente para usuários arbitrários) e,

(iii) Contratos suicidas (contratos que qualquer usuário arbitrário pode matar). 

Até mesmo uma noção de objetos Effectively Callback Free (ECF) foi proposta para identificar vulnerabilidades monitorando objetos ECF. 

Neste contexto, foi também apresentado um algoritmo online; ajudou a descobrir vulnerabilidades desconhecidas. Na mesma proposta, foi sugerido executar contratos inteligentes na Testnet antes de implantar na Mainnet. 

Monitoring UI é uma plataforma de monitoramento Blockchain que utiliza React.js. Essa plataforma pode ser usada para realizar transações, verificar ativos e consultar o estado do Blockchain. 

Não podemos contar com esta plataforma para monitoramento seguro de contratos inteligentes, mas como a maioria dos dados de transações relacionados a contratos inteligentes podem ser encontrados, podemos detectar explorações em tempo real rastreando a transferência de ativos. 

ANÁLISE POST HOC

A Análise Post Hoc usa dados de transações do blockchain para analisar, descobrir ou rastrear ameaças potenciais no blockchain em termos leigos. 

Se discutirmos a análise do gráfico, ela foi projetada como uma abordagem para reunir todos os dados de transação (isso inclui transações internas de contratos inteligentes). 

Com a ajuda desses dados, eles prepararam três gráficos; 

(I) Um gráfico de fluxo de dinheiro (MFG)

(Ii) Gráfico de criação de contrato (CCG) e,

(iii) Gráfico de invocação de contrato (CIG)

Com base na análise dos gráficos mencionados acima, muitas novas descobertas foram propostas, como soluções para problemas de segurança entre vários contratos interagindo entre si. 

Uma visão geral da análise de gráficos
Uma visão geral da análise de gráficos

O esquema Ponzi é um dos esquemas de fraude clássicos através do qual um grande número de fundos pode ser adquirido e afetar o blockchain nativo. Para combater essa fraude, foi proposto um mecanismo classificador para detectar esquemas Ponzi no Ethereum. 

Esse mecanismo utiliza mineração de dados e aprendizado de máquina para detectar contratos Ponzi. Esse processo funciona mesmo se o código-fonte dos contratos inteligentes não estiver disponível. 

A estrutura da detecção inteligente do esquema Ponzi
A estrutura da detecção inteligente do esquema Ponzi

Principal Takeaway

É isso, sim, por enquanto é isso!

Se você esteve conosco até agora, agradecemos. Sem esticar mais, em uma nota final, diríamos apenas que o ecossistema de contratos inteligentes é descentralizado e é difícil corrigir bugs. 

Tentamos quebrar a segurança dos contratos inteligentes da perspectiva do ciclo de vida do software. 

Discutimos primeiro os principais recursos do blockchain responsáveis ​​por problemas de segurança em contratos inteligentes. Classificamos as soluções de segurança para os contratos inteligentes em quatro fases. Esperamos trazer mais postagens para mantê-lo à frente dos desafios do crescente ecossistema Web3. 

O que você acha dessa abordagem SDLC ágil para segurança de contrato inteligente? Compartilhe seus pensamentos nos comentários abaixo!

46 Visualizações

O posto Segurança de contrato inteligente: uma abordagem de SDLC ágil  apareceu pela primeira vez em Blog.quilhash.

Carimbo de hora:

Mais de Quilhash