Análise das vulnerabilidades de segurança comuns em Finanças Descentralizadas e medidas de prevenção
Recentemente, um especialista em segurança compartilhou com os membros da comunidade suas percepções sobre a segurança nas Finanças Descentralizadas. Ele revisitou os principais eventos de segurança que o setor Web3 enfrentou no último ano e meio, explorando as razões pelas quais esses eventos ocorreram e como evitá-los, resumindo as vulnerabilidades comuns de contratos inteligentes e as medidas preventivas, e fornecendo algumas recomendações de segurança para as equipes de projeto e usuários.
Os tipos comuns de vulnerabilidades no campo das Finanças Descentralizadas incluem empréstimos relâmpago, manipulação de preços, problemas de permissões de função, 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. Este artigo se concentrará 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 nas Finanças Descentralizadas, mas também é frequentemente explorado por hackers. Os atacantes utilizam empréstimos relâmpago para emprestar grandes quantidades de dinheiro, manipulando preços ou atacando a lógica de negócios. Os desenvolvedores precisam considerar se as funcionalidades do contrato podem resultar em anomalias devido a grandes quantias de dinheiro, ou se podem ser exploradas em uma única transação para interagir com várias funções e obter ganhos indevidos.
Nos últimos dois anos, os empréstimos relâmpago causaram vários problemas. Alguns projetos DeFi que parecem ter altos rendimentos, na verdade, apresentam diversas vulnerabilidades de segurança. Por exemplo, há projetos que distribuem recompensas com base na quantidade de ativos em um determinado momento, sendo explorados por atacantes que utilizam 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 com base em tokens são suscetíveis a serem influenciados por empréstimos relâmpago.
Manipulação de Preços
O problema da manipulação de preços está intimamente relacionado com os empréstimos relâmpago, existindo principalmente duas situações:
Utiliza dados de terceiros ao calcular preços, mas a forma de utilização não é correta ou falta verificação, levando a que os preços sejam manipulados maliciosamente.
Usar o saldo de tokens de certos endereços como variável de cálculo, sendo que 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 e fazer alterações inesperadas nos dados. Um exemplo típico de ataque de reentrada é o seguinte:
solidity
mapeamento (endereço => uint) saldoPrivado do usuário;
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool sucesso, ) = msg.sender.call.value(quantiaParaRetirar)("");
require(success);
userBalances[msg.sender] = 0;
}
Neste exemplo, devido ao saldo do utilizador só ser definido como 0 no final da função, o atacante pode chamar a função de levantamento várias vezes no meio, levando a retiradas duplicadas.
Para resolver o problema de reentrada, é necessário ter em atenção os seguintes pontos:
Não apenas prevenir a reentrância de uma única função, mas também considerar a reentrância entre funções e entre contratos.
Codifique seguindo o padrão Checks-Effects-Interactions.
Utilize um modificador de prevenção de reentrância validado.
É importante evitar reinventar a roda e adotar as melhores práticas de segurança já validadas na indústria.
Sugestões de segurança para o projeto
Seguir as melhores práticas de segurança no desenvolvimento de contratos inteligentes.
Implementar funcionalidades 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 aprimorado.
Aumentar a consciência de segurança de todos os funcionários.
Prevenir comportamentos maliciosos internos, enquanto se aumenta a eficiência e se fortalece o controle de riscos.
Introduza terceiros com cautela, seguindo o princípio de que "por defeito, tanto o upstream como o downstream não são seguros".
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 um mecanismo de multi-assinatura descentralizado.
Verifique a situação das transações já existentes no contrato.
Compreender se o contrato é um contrato de agência, se é atualizável e se possui um bloqueio de tempo.
Confirme se o contrato foi auditado por várias instituições e avalie se os direitos do Owner são excessivos.
Preste atenção ao tipo de oráculo usado no projeto e à sua segurança.
Em suma, no campo das Finanças Descentralizadas, a segurança é sempre a principal consideração. Os desenvolvedores de projetos devem aumentar a consciência e as medidas de segurança, enquanto os usuários precisam manter-se vigilantes e avaliar cuidadosamente a segurança do projeto antes de tomar decisões.
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.
14 Curtidas
Recompensa
14
4
Repostar
Compartilhar
Comentário
0/400
UnluckyLemur
· 08-12 15:44
É a mesma armadilha de sempre. Quando é que vão aparecer novas formas de jogar?
Ver originalResponder0
DefiPlaybook
· 08-10 18:09
Estatísticas mostram que os Empréstimos Flash continuam a ser a maior fonte de risco, representando 47,8%.
Ver originalResponder0
wrekt_but_learning
· 08-10 17:58
A vulnerabilidade ainda é a mesma armadilha, não há nada de novo.
Ver originalResponder0
BoredApeResistance
· 08-10 17:46
Os idiotas que sofreram grandes perdas finalmente entenderam?
Finanças Descentralizadas segurança之殇:常见漏洞剖析与防范策略
Análise das vulnerabilidades de segurança comuns em Finanças Descentralizadas e medidas de prevenção
Recentemente, um especialista em segurança compartilhou com os membros da comunidade suas percepções sobre a segurança nas Finanças Descentralizadas. Ele revisitou os principais eventos de segurança que o setor Web3 enfrentou no último ano e meio, explorando as razões pelas quais esses eventos ocorreram e como evitá-los, resumindo as vulnerabilidades comuns de contratos inteligentes e as medidas preventivas, e fornecendo algumas recomendações de segurança para as equipes de projeto e usuários.
Os tipos comuns de vulnerabilidades no campo das Finanças Descentralizadas incluem empréstimos relâmpago, manipulação de preços, problemas de permissões de função, 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. Este artigo se concentrará 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 nas Finanças Descentralizadas, mas também é frequentemente explorado por hackers. Os atacantes utilizam empréstimos relâmpago para emprestar grandes quantidades de dinheiro, manipulando preços ou atacando a lógica de negócios. Os desenvolvedores precisam considerar se as funcionalidades do contrato podem resultar em anomalias devido a grandes quantias de dinheiro, ou se podem ser exploradas em uma única transação para interagir com várias funções e obter ganhos indevidos.
Nos últimos dois anos, os empréstimos relâmpago causaram vários problemas. Alguns projetos DeFi que parecem ter altos rendimentos, na verdade, apresentam diversas vulnerabilidades de segurança. Por exemplo, há projetos que distribuem recompensas com base na quantidade de ativos em um determinado momento, sendo explorados por atacantes que utilizam 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 com base em tokens são suscetíveis a serem influenciados por empréstimos relâmpago.
Manipulação de Preços
O problema da manipulação de preços está intimamente relacionado com os empréstimos relâmpago, existindo principalmente duas situações:
Ataque de Reentrada
O principal risco 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:
solidity mapeamento (endereço => uint) saldoPrivado do usuário;
function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool sucesso, ) = msg.sender.call.value(quantiaParaRetirar)(""); require(success); userBalances[msg.sender] = 0; }
Neste exemplo, devido ao saldo do utilizador só ser definido como 0 no final da função, o atacante pode chamar a função de levantamento várias vezes no meio, levando a retiradas duplicadas.
Para resolver o problema de reentrada, é necessário ter em atenção os seguintes pontos:
É importante evitar reinventar a roda e adotar as melhores práticas de segurança já validadas na indústria.
Sugestões de segurança para o projeto
Como os usuários podem avaliar a segurança dos contratos inteligentes
Em suma, no campo das Finanças Descentralizadas, a segurança é sempre a principal consideração. Os desenvolvedores de projetos devem aumentar a consciência e as medidas de segurança, enquanto os usuários precisam manter-se vigilantes e avaliar cuidadosamente a segurança do projeto antes de tomar decisões.