WEB3DEV

Cover image for Um Mergulho Profundo nos Riscos e Práticas Recomendadas de Segurança de Carteiras de Contratos Inteligentes
Paulo Gio
Paulo Gio

Posted on

Um Mergulho Profundo nos Riscos e Práticas Recomendadas de Segurança de Carteiras de Contratos Inteligentes

Visão Geral

Em nosso guia anterior “An Introduction to Crypto Wallets and How to Keep Them Secure” (Uma introdução às carteiras criptográficas e como mantê-las seguras), cobrimos o cenário de ameaças às carteiras criptográficas, bem como alguns conceitos básicos e termos-chave. Neste próximo guia, abordaremos carteiras de contratos inteligentes em profundidade e os vetores de ameaças únicos e complexos a serem observados ao interagir com elas. Também listaremos algumas práticas recomendadas para proteger seus fundos. Vamos começar!

Visão Geral da Carteira de Contratos Inteligentes

As carteiras de contratos inteligentes estão atraindo mais atenção em vários ecossistemas (Solana, Ethereum, etc.) devido à combinação de recursos de segurança, flexibilidade, velocidade e conveniência. As carteiras de contratos inteligentes permitem que os usuários armazenem criptomoedas, NFTs e acessem muitos aplicativos descentralizados populares (dApps). Um caso de uso comum para uma carteira de contratos inteligentes é usá-la como um cofre seguro de fundos conjuntos, controlados por várias partes.

Como Funcionam as Carteiras de Contratos Inteligentes

Os fundos em carteiras de contratos inteligentes são acessados e controlados por meio do código de contrato inteligente. O contrato inteligente permite recursos programáveis, como recuperação social, limites de transferência e bloqueio/congelamento de contas. Além de concluir as transações, os usuários podem configurar e definir recursos de política e controles em suas transações.

Muitas carteiras de contratos inteligentes implementam uma abordagem de segurança multiassinatura, que permite aos usuários adicionar usuários adicionais à sua carteira, que podem aprovar e assinar transações. São necessárias, no mínimo, duas assinaturas. Um usuário confiável pode ser um amigo, uma carteira secundária ou um terceiro que normalmente terá a capacidade de participar de qualquer uma das ações do proprietário da carteira. Como signatário/aprovador, um usuário confiável pode ajudar a recuperar a carteira em caso de comprometimento ou quando o proprietário não puder acessá-la.

Funcionalidades adicionais que as carteiras de contratos inteligentes permitem incluem, mas não estão limitadas a; congelamento de contas, limites de transação, limites de transferência, autenticação multifator, lista de permissões, partes confiáveis, transações agrupadas e taxas de gás pagas, dependendo das ofertas do fornecedor.

Riscos de Segurança da Carteira de Contrato Inteligente

Quaisquer recursos adicionais de flexibilidade oferecidos com produtos de carteira vêm com compensações. Como as carteiras de contratos inteligentes são contratos inteligentes (código escrito por humanos), muitos dos mesmos riscos que vemos inerentes aos contratos inteligentes se aplicam. Muitos dos dez principais riscos de contratos inteligentes se enquadram em três categorias principais: risco operacional, risco de implementação e risco de design e são aplicáveis a muitas das carteiras de contratos inteligentes no mercado atualmente.

  • Riscos operacionais: envolvem riscos de acesso, autorização e escalonamento de privilégios que podem ser explorados quando a lógica do código é insuficiente ou defeituosa. Os exemplos incluem: Escalonamento de privilégios de proprietário, ignorando signatários/aprovadores, permitindo que um proprietário também seja um signatário/aprovador, e a capacidade de alterar as configurações arbitrariamente.
  • Riscos de implementação: são erros que podem resultar em comportamento não intencional da carteira de contrato inteligente. Os exemplos incluem: transferências ou atividades não autorizadas, contornar limitações em transferências ou outras atividades de movimentação de dinheiro, atividades que podem ocorrer sem nenhum dos controles pretendidos (bloqueio, recuperação etc.), assinaturas incorretas, conexão a dApps sem permissão, restauração de dApps removidos, e assinatura de transações maliciosas.
  • Riscos de design: abrangem recursos de design de carteira que são explorados para alterar o comportamento pretendido do contrato inteligente. Os exemplos incluem: funções que podem ser acionadas e que não estão definidas no código, processamento de transação assíncrona, funções de repetição, instrução de retorno e funções callback.

Chaves Privadas

Outro risco de segurança comum inclui o comprometimento de chaves privadas. Embora seja anunciado pelos fornecedores de carteiras de contratos inteligentes que os usuários dessas carteiras não precisam gerenciar suas próprias chaves privadas ou frase-semente, deve-se observar que as chaves privadas da carteira são armazenadas no contrato inteligente. O código do contrato inteligente é público e visível, e é fundamental que as chaves privadas armazenadas no contrato inteligente sejam criptografadas. Independentemente do tipo de carteira, se as chaves privadas forem comprometidas, os fundos da sua carteira estarão em risco. Em última análise, esta é uma decisão e aceitação de risco do usuário final sobre o desejo ou não de controlar as chaves privadas ou confiar o código de contrato inteligente para fazê-lo.

Vetores de Ataque

Apesar de certos recursos aprimorados, as carteiras de contratos inteligentes ainda são suscetíveis a ataques e comprometimentos. Esses incluem:

  • Módulos maliciosos: a funcionalidade de carteira de contrato inteligente é encapsulada por módulos usados para lidar com conjuntos de operações que ocorrem. Esses módulos podem ter mais poder do que os proprietários da carteira e podem atuar como um backdoor controlado pelo invasor para controlar a carteira e seus fundos. Módulos obscuros e maliciosos podem potencialmente fazer phishing e hackear usuários, especialmente aqueles que não são inerentes ao fornecedor da carteira e podem vir de um mercado potencial.
  • Controle de Carteira Fora do Proprietário: Pode ser comum o uso de uma terceira parte para implantar uma carteira de contrato inteligente. Se for esse o caso, não se pode presumir que a carteira será controlada apenas pelo proprietário. Além disso, os vetores de ataque podem aumentar dependendo de uma determinada implementação, e não é seguro presumir que qualquer carteira de contrato inteligente seja sempre controlada pelos proprietários, pois as transações podem ser executadas sem a aprovação do proprietário. De forma similar, a integração de sistemas com uma carteira de contrato inteligente pode resultar em outras contas diferentes daquelas listadas como proprietárias da configuração multiassinatura para ter controle. Receber uma transação de uma carteira multiassinatura não significa que os proprietários aprovaram a transação.
  • Integrações dApp: As integrações com dApps podem ser falhas e podem tornar as carteiras suscetíveis a transações maliciosas de qualquer dApp.
  • Phishing: Phishing é um método testado e comprovado que se aplica a carteiras de contratos inteligentes. Se um invasor conseguir obter dados de multiassinatura de um usuário de carteira, ele poderá fazer chamadas para um contrato externo e alterar os dados do contrato que podem resultar na transferência de fundos sem assinaturas.

Como Manter as Carteiras de Contratos Inteligentes Seguras

Não existe dúvida que manter suas carteiras de contratos inteligentes protegidas contra esses ataques e riscos de segurança é de extrema importância. Ao seguir essas práticas recomendadas, você garante que está tomando todas as precauções para manter sua carteira de contrato inteligente segura e protegida.

  • Auditorias de segurança completas em todas as carteiras de contratos inteligentes, incluindo: código, módulos, proxies, integrações e sessões.
  • Tome precauções contra implantações maliciosas seguindo os padrões de implantação de código seguro.
  • Verifique e confirme todos os endereços com os quais você está interagindo antes de assinar uma transação.
  • Certifique-se de que todas as transações sejam verificadas antes de assinar.
  • Confirme a integridade de todos os dApps e desative as sessões de dApps quando não estiverem em atividade.
  • Revise os módulos e entenda o que são e o poder que possuem.
  • Entenda suas compensações durante a implantação quando se trata de flexibilidade e segurança.
  • Preste atenção e fique atento para evitar golpes de phishing que podem tentar obter dados de multiassinatura de um usuário para serem usados de forma maléfica.
  • Monitore transações regularmente para que dados de transações maliciosas possam ser detectados com antecedência.
  • Certifique-se de que qualquer aplicativo de carteira de contrato inteligente esteja sendo acessado por meio de sites oficiais.

Conclusão

Obrigado por ler! Lembre-se de que, embora as carteiras de contrato inteligentes tenham recursos e flexibilidade adicionais, não se deve presumir que sejam mais seguras do que qualquer outro tipo de carteira. Como aprendemos, os recursos adicionais são códigos programáveis que podem ser explorados juntamente com riscos e vulnerabilidades inerentes ao contrato inteligente. Desenvolvedores, auditores e usuários desempenham um papel fundamental na segurança da implementação, design e uso diário.

Nós ❤️ Feedbacks!

Se você tiver algum comentário ou perguntas sobre este guia, informe-nos. Adoraríamos ouvir de você!

Artigo original escrito por Quicknode. Traduzido por Paulinho Giovannini.

Latest comments (0)