Finanças Descentralizadas comuns vulnerabilidades de segurança e medidas de prevenção
Recentemente, um especialista em segurança compartilhou um curso de segurança DeFi para os membros da comunidade. Ele revisitou os principais eventos de segurança que o setor Web3 enfrentou no último ano, explorou as causas desses eventos e como evitá-los, 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 os desenvolvedores de projetos e usuários comuns.
Os tipos comuns de vulnerabilidades DeFi incluem principalmente empréstimos relâmpago, manipulação de preços, problemas de permissões de funções, chamadas externas arbitrárias, problemas de funções de fallback, falhas na lógica de negócios, vazamento de chaves privadas e ataques de reentrada, entre outros. Este artigo irá focar em empréstimos relâmpago, manipulação de preços e ataques de reentrada.
Empréstimo Relâmpago
O empréstimo relâmpago é uma inovação das Finanças Descentralizadas, mas também é frequentemente explorado por hackers:
O atacante empresta uma grande quantidade de fundos através de um empréstimo relâmpago para manipular os preços ou atacar a lógica de negócios.
Os desenvolvedores devem considerar se a funcionalidade do contrato pode resultar em anomalias devido a grandes quantias de dinheiro, ou se pode ser explorada para obter recompensas indevidas.
Alguns projetos não consideraram o impacto dos empréstimos relâmpago durante o design, resultando em roubo de fundos.
Nos últimos dois anos, os empréstimos relâmpago geraram diversos problemas. Alguns projetos DeFi de alta rentabilidade, devido ao nível de desenvolvimento desigual, apresentam várias vulnerabilidades. Por exemplo, há projetos que distribuem recompensas com base nas posições em momentos fixos, que foram explorados por atacantes utilizando empréstimos relâmpago para comprar grandes quantidades de tokens e obter a maior parte das recompensas. Além disso, alguns projetos que calculam preços através de Tokens podem ter seus preços afetados por empréstimos relâmpago. As equipes de projeto devem estar atentas a esses problemas.
Manipulação de Preços
O problema da manipulação de preços está intimamente relacionado com os empréstimos relâmpago, existindo principalmente dois tipos:
Usar dados de terceiros para calcular preços, mas o uso inadequado ou a falta de verificação levam à manipulação maliciosa dos preços.
Usar o saldo de Token de certos endereços como variável de cálculo, e esses saldos podem ser aumentados ou diminuídos temporariamente.
Ataque de Reentrada
O principal risco de chamar contratos externos é que eles podem assumir o controle do fluxo, fazendo modificações inesperadas nos dados. Por exemplo:
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool success, ) = msg.sender.call.value(amountToWithdraw)("");
require(success);
userBalances[msg.sender] = 0;
}
Devido ao saldo do usuário ser zerado apenas no final da função, chamadas repetidas ainda conseguirão extrair o saldo.
As formas de ataque de reentrada são diversas e podem envolver várias funções ou contratos. Para resolver o problema de reentrada, é necessário ter em atenção:
Não só prevenir a reinjeção de uma única função
Seguir o padrão Checks-Effects-Interactions
Usar um modifier de proteção contra reentrância verificado
É melhor usar as melhores práticas de segurança já existentes, em vez de reinventar a roda. Soluções maduras são mais seguras e confiáveis do que novas soluções desenvolvidas internamente.
Sugestões de segurança para a equipe do projeto
Seguir as melhores práticas de segurança no desenvolvimento de contratos.
Implementar funções de atualização e pausa do contrato
Adotar um mecanismo de bloqueio de tempo
Aumentar o investimento em segurança e estabelecer um sistema de segurança completo
Aumentar a consciência de segurança de todos os funcionários
Prevenir comportamentos maliciosos internos, ao mesmo tempo que se melhora a eficiência e se fortalece o controlo de risco.
Introduzir terceiros com cautela e realizar verificações de segurança.
Como os usuários podem avaliar a segurança dos contratos inteligentes
Confirme se o contrato é de código aberto
Verifique se o Owner utiliza uma multisig descentralizada
Verifique a situação das transações existentes do contrato
Verificar se o contrato é atualizável e se há um bloqueio de tempo
Confirme se o contrato foi auditado por várias instituições e se os privilégios do proprietário não são excessivos.
Acompanhar a utilização de oráculos
Em suma, no ecossistema de Finanças Descentralizadas, tanto os desenvolvedores quanto os usuários precisam manter uma alta consciência de segurança, tomar as medidas preventivas necessárias e colaborar para preservar o desenvolvimento saudável do ecossistema.
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.
16 Curtidas
Recompensa
16
3
Compartilhar
Comentário
0/400
ImpermanentPhobia
· 12h atrás
Hacker e Empréstimos Flash, que emoção!
Ver originalResponder0
SnapshotBot
· 12h atrás
A equipa do projeto ainda está a fazer as pessoas de parvas todos os dias.
Finanças Descentralizadas segurança ofensiva e defensiva: Empréstimos Flash, manipulação de preços e guia de prevenção de ataques de reentrada
Finanças Descentralizadas comuns vulnerabilidades de segurança e medidas de prevenção
Recentemente, um especialista em segurança compartilhou um curso de segurança DeFi para os membros da comunidade. Ele revisitou os principais eventos de segurança que o setor Web3 enfrentou no último ano, explorou as causas desses eventos e como evitá-los, 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 os desenvolvedores de projetos e usuários comuns.
Os tipos comuns de vulnerabilidades DeFi incluem principalmente empréstimos relâmpago, manipulação de preços, problemas de permissões de funções, chamadas externas arbitrárias, problemas de funções de fallback, falhas na lógica de negócios, vazamento de chaves privadas e ataques de reentrada, entre outros. Este artigo irá focar em empréstimos relâmpago, manipulação de preços e ataques de reentrada.
Empréstimo Relâmpago
O empréstimo relâmpago é uma inovação das Finanças Descentralizadas, mas também é frequentemente explorado por hackers:
Nos últimos dois anos, os empréstimos relâmpago geraram diversos problemas. Alguns projetos DeFi de alta rentabilidade, devido ao nível de desenvolvimento desigual, apresentam várias vulnerabilidades. Por exemplo, há projetos que distribuem recompensas com base nas posições em momentos fixos, que foram explorados por atacantes utilizando empréstimos relâmpago para comprar grandes quantidades de tokens e obter a maior parte das recompensas. Além disso, alguns projetos que calculam preços através de Tokens podem ter seus preços afetados por empréstimos relâmpago. As equipes de projeto devem estar atentas a esses problemas.
Manipulação de Preços
O problema da manipulação de preços está intimamente relacionado com os empréstimos relâmpago, existindo principalmente dois tipos:
Usar dados de terceiros para calcular preços, mas o uso inadequado ou a falta de verificação levam à manipulação maliciosa dos preços.
Usar o saldo de Token de certos endereços como variável de cálculo, e esses saldos podem ser aumentados ou diminuídos temporariamente.
Ataque de Reentrada
O principal risco de chamar contratos externos é que eles podem assumir o controle do fluxo, fazendo modificações inesperadas nos dados. Por exemplo:
solidity mapeamento (endereço => uint) privado userBalances;
function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }
Devido ao saldo do usuário ser zerado apenas no final da função, chamadas repetidas ainda conseguirão extrair o saldo.
As formas de ataque de reentrada são diversas e podem envolver várias funções ou contratos. Para resolver o problema de reentrada, é necessário ter em atenção:
É melhor usar as melhores práticas de segurança já existentes, em vez de reinventar a roda. Soluções maduras são mais seguras e confiáveis do que novas soluções desenvolvidas internamente.
Sugestões de segurança para a equipe do projeto
Como os usuários podem avaliar a segurança dos contratos inteligentes
Em suma, no ecossistema de Finanças Descentralizadas, tanto os desenvolvedores quanto os usuários precisam manter uma alta consciência de segurança, tomar as medidas preventivas necessárias e colaborar para preservar o desenvolvimento saudável do ecossistema.