Análise completa das vulnerabilidades de segurança comuns em Finanças Descentralizadas e medidas de prevenção

robot
Geração do resumo em andamento

Finanças Descentralizadas comuns vulnerabilidades de segurança e medidas preventivas

Recentemente, um especialista em segurança discutiu, em uma conferência online, os principais eventos de segurança que a indústria Web3 enfrentou nos últimos mais de um ano, analisando as razões para a ocorrência desses eventos e como evitá-los. Ele também resumiu as vulnerabilidades de segurança comuns em contratos inteligentes e medidas de prevenção, além de fornecer algumas recomendações de segurança para desenvolvedores de projetos e usuários comuns.

Os tipos comuns de vulnerabilidades em Finanças Descentralizadas incluem empréstimos relâmpago, manipulação de preços, problemas de permissões de funções, chamadas externas arbitrárias, problemas com funções fallback, vulnerabilidades de lógica de negócios, vazamento de chaves privadas e ataques de reentrada, entre outros. Dentre eles, empréstimos relâmpago, manipulação de preços e ataques de reentrada são alguns dos mais típicos.

Empréstimo Relâmpago

Os empréstimos relâmpago são uma inovação dentro das Finanças Descentralizadas, mas também são frequentemente utilizados por hackers. Os atacantes emprestam grandes quantidades de fundos através de empréstimos relâmpago para manipular preços ou atacar a lógica de negócios. Os desenvolvedores precisam considerar se as funcionalidades do contrato podem resultar em anomalias devido a grandes quantidades de fundos, ou se podem ser usadas para interagir com várias funções em uma única transação para obter lucros indevidos.

Nos últimos dois anos, muitos projetos de Finanças Descentralizadas foram atacados devido a problemas com empréstimos relâmpago. Alguns projetos distribuem recompensas em momentos fixos com base na quantidade de tokens mantidos, mas foram explorados por atacantes que utilizaram empréstimos relâmpago para comprar grandes quantidades de tokens, obtendo a maior parte dos lucros no momento da distribuição das recompensas. Outros projetos que calculam preços com base em tokens também são suscetíveis a influências de empréstimos relâmpago.

Manipulação de Preços

O problema de manipulação de preços está intimamente relacionado com os empréstimos relâmpago, existindo principalmente dois tipos:

  1. Ao calcular o preço, utiliza-se dados de terceiros, mas a forma de utilização é incorreta ou a verificação está em falta, levando a que o preço seja manipulado de forma maliciosa.

  2. Utilizar a quantidade de tokens de certos endereços como variável de cálculo, sendo que o saldo de tokens desses endereços pode ser temporariamente aumentado ou diminuído.

Ataque de Reentrada

Um dos principais riscos de chamar contratos externos é que eles podem assumir o controle do fluxo e fazer alterações inesperadas nos dados. Um exemplo típico de ataque de reentrada é o seguinte:

solidez mapeamento (endereço => uint) saldoPrivado de userBalances;

function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }

Como o saldo do usuário só é definido como 0 no final da função, chamadas repetidas ainda podem extrair o saldo com sucesso.

Para resolver o problema da reentrada, é necessário ter em conta:

  1. Não só previne a reinicialização de uma única função
  2. Seguir o padrão Checks-Effects-Interactions
  3. Usar um modificador de prevenção de reentrada verificado

Recomendações de segurança para o projeto

  1. Seguir as melhores práticas de segurança no desenvolvimento de contratos
  2. Implementar funcionalidades de atualização e suspensão de contratos
  3. Adotar um mecanismo de bloqueio de tempo
  4. Aumentar o investimento em segurança, estabelecer um sistema de segurança completo
  5. Aumentar a consciência de segurança de todos os funcionários
  6. Prevenir comportamentos maliciosos internos, ao mesmo tempo em que se melhora a eficiência e se reforça o controle de riscos.
  7. Introduza terceiros com cautela, supondo que tanto a montante como a jusante não são seguros.

Métodos para os usuários avaliarem a segurança dos contratos inteligentes

  1. Confirme se o contrato é de código aberto
  2. Verifique se o Owner utiliza uma multi-assinatura descentralizada.
  3. Verifique a situação das transações existentes no contrato
  4. Confirme se o contrato é atualizável e se tem um bloqueio temporal.
  5. Verifique se foram auditadas por várias instituições, se as permissões do Owner são excessivas.
  6. Atenção ao uso de oráculos

Em suma, a segurança das Finanças Descentralizadas é um problema sistêmico que requer a atenção conjunta dos projetos e dos usuários, adotando medidas de segurança abrangentes para efetivamente reduzir os riscos.

Cobo Finanças Descentralizadas Segurança (Parte 2): Vulnerabilidades de segurança comuns em DeFi e prevenção

DEFI-6.02%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 5
  • Compartilhar
Comentário
0/400
ForkThisDAOvip
· 07-12 07:12
A auditoria de código é muito importante.
Ver originalResponder0
NewPumpamentalsvip
· 07-12 05:08
Por favor, defina rigorosamente a auditoria de contratos.
Ver originalResponder0
ConsensusDissentervip
· 07-10 09:19
A auditoria também precisa de auditoria
Ver originalResponder0
RektRecoveryvip
· 07-10 09:18
A assinatura tripla é fundamental
Ver originalResponder0
FallingLeafvip
· 07-10 09:09
A segurança é a primeira e única escolha.
Ver originalResponder0
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)