Análise das três principais vulnerabilidades de segurança em Finanças Descentralizadas: Empréstimos Flash, manipulação de preços e ataques de reentrada
Finanças Descentralizadas segurança vulnerabilidades e medidas de prevenção
Recentemente, um especialista em segurança compartilhou um curso de segurança em Finanças Descentralizadas com a comunidade. O especialista revisou os principais incidentes de segurança que a indústria Web3 enfrentou no último ano, discutiu as causas desses incidentes e como evitá-los, resumiu as vulnerabilidades comuns de segurança em contratos inteligentes e as medidas de prevenção, e fez algumas recomendações de segurança para as equipes de projeto e usuários.
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 de fallback, vulnerabilidades de lógica de negócios, vazamento de chaves privadas e ataques de reentrada, entre outros. Este artigo foca em empréstimos relâmpago, manipulação de preços e ataques de reentrada.
Empréstimo Relâmpago
Empréstimos relâmpago são uma inovação nas Finanças Descentralizadas, mas também são utilizados por hackers para realizar ataques. Os atacantes usam empréstimos relâmpago para emprestar grandes quantias de dinheiro, manipulando preços ou atacando a lógica de negócios. Os desenvolvedores precisam considerar se as funcionalidades do contrato serão afetadas por grandes quantias de dinheiro, resultando em anomalias, ou se poderão ser exploradas para obter recompensas indevidas.
Muitos projetos de Finanças Descentralizadas são suscetíveis a ataques de empréstimos relâmpago devido a problemas de código ou lógica. Por exemplo, alguns projetos distribuem recompensas com base nas posições em um tempo fixo, mas são explorados por atacantes que utilizam empréstimos relâmpago para comprar uma grande quantidade de tokens e obter a maior parte das recompensas. Outros projetos que calculam preços através de Token também podem ser afetados por empréstimos relâmpago. As equipes de projeto devem permanecer 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 duas situações:
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 maliciosamente.
Usar a quantidade de Token de certos endereços como variável de cálculo, e o saldo de Token desses endereços pode ser temporariamente aumentado ou diminuído.
Ataque de Reentrada
O principal risco de chamar contratos externos é que eles podem assumir o fluxo de controle e fazer alterações inesperadas nos dados. Por exemplo:
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool sucesso, ) = msg.sender.call.value(quantiaParaRetirar)("");
require(success);
userBalances[msg.sender] = 0;
}
Uma vez que o saldo do usuário só é definido como 0 no final da função, chamadas repetidas ainda terão sucesso, permitindo a retirada do saldo várias vezes.
Existem várias formas de ataque de reentrada, que podem envolver diferentes funções de um único contrato ou funções de vários contratos. Para resolver o problema de reentrada, é necessário ter em atenção:
Não só previne a reentrada de uma única função
Seguir o padrão Checks-Effects-Interactions na codificação
Utilizar um modificador de prevenção de reentrada verificado
Recomenda-se o uso de práticas de segurança maduras, evitando reinventar a roda. Novas soluções desenvolvidas internamente carecem de validação adequada, aumentando a probabilidade de problemas.
Sugestões de Segurança
Sugestões de segurança do projeto
Seguir as melhores práticas de segurança para o desenvolvimento de contratos
Implementar funcionalidades de atualização e pausa em contratos.
Adotar um mecanismo de bloqueio de tempo
Aumentar o investimento em segurança, estabelecer um sistema de segurança completo
Aumentar a conscientização de segurança de todos os funcionários
Prevenir ações maliciosas internas, aumentando a eficiência enquanto se reforça o controle de riscos.
Introduzir dependências de terceiros com cautela, assumindo que tanto os upstream como os downstream não são seguros.
Como os usuários podem avaliar a segurança dos contratos inteligentes
O contrato é de código aberto?
O proprietário adotou a multi-assinatura descentralizada?
Verifique a situação das transações do contrato já existente
O contrato é atualizável? Existe um bloqueio de tempo?
Aceita auditoria por várias instituições? A permissão do proprietário é excessiva?
Preste atenção à confiabilidade do oráculo
Em suma, tanto as equipas de projeto como os utilizadores devem aumentar a consciência de segurança e tomar as medidas necessárias para reduzir os riscos de segurança nas Finanças Descentralizadas.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
7 gostos
Recompensa
7
7
Partilhar
Comentar
0/400
RugResistant
· 6h atrás
Mais um que entra com o nome de prevenção para fazer as pessoas de parvas.
Ver originalResponder0
ChainDoctor
· 6h atrás
Mais uma vez, o Empréstimos Flash está a ser o bode expiatório. Tsk tsk.
Ver originalResponder0
PessimisticOracle
· 6h atrás
Ah, por trás das vulnerabilidades estão sempre as tentações de lucros exorbitantes.
Ver originalResponder0
ParallelChainMaxi
· 6h atrás
Há tantos buracos, tenham cuidado, pessoal.
Ver originalResponder0
TokenGuru
· 6h atrás
Mineração período viu antigos buracos, pessoal não sejam descuidados.
Análise das três principais vulnerabilidades de segurança em Finanças Descentralizadas: Empréstimos Flash, manipulação de preços e ataques de reentrada
Finanças Descentralizadas segurança vulnerabilidades e medidas de prevenção
Recentemente, um especialista em segurança compartilhou um curso de segurança em Finanças Descentralizadas com a comunidade. O especialista revisou os principais incidentes de segurança que a indústria Web3 enfrentou no último ano, discutiu as causas desses incidentes e como evitá-los, resumiu as vulnerabilidades comuns de segurança em contratos inteligentes e as medidas de prevenção, e fez algumas recomendações de segurança para as equipes de projeto e usuários.
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 de fallback, vulnerabilidades de lógica de negócios, vazamento de chaves privadas e ataques de reentrada, entre outros. Este artigo foca em empréstimos relâmpago, manipulação de preços e ataques de reentrada.
Empréstimo Relâmpago
Empréstimos relâmpago são uma inovação nas Finanças Descentralizadas, mas também são utilizados por hackers para realizar ataques. Os atacantes usam empréstimos relâmpago para emprestar grandes quantias de dinheiro, manipulando preços ou atacando a lógica de negócios. Os desenvolvedores precisam considerar se as funcionalidades do contrato serão afetadas por grandes quantias de dinheiro, resultando em anomalias, ou se poderão ser exploradas para obter recompensas indevidas.
Muitos projetos de Finanças Descentralizadas são suscetíveis a ataques de empréstimos relâmpago devido a problemas de código ou lógica. Por exemplo, alguns projetos distribuem recompensas com base nas posições em um tempo fixo, mas são explorados por atacantes que utilizam empréstimos relâmpago para comprar uma grande quantidade de tokens e obter a maior parte das recompensas. Outros projetos que calculam preços através de Token também podem ser afetados por empréstimos relâmpago. As equipes de projeto devem permanecer 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 duas situações:
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 maliciosamente.
Usar a quantidade de Token de certos endereços como variável de cálculo, e o saldo de Token desses endereços pode ser temporariamente aumentado ou diminuído.
Ataque de Reentrada
O principal risco de chamar contratos externos é que eles podem assumir o fluxo de controle e fazer alterações inesperadas nos dados. Por exemplo:
solidity mapping (address => uint) private userBalances;
function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool sucesso, ) = msg.sender.call.value(quantiaParaRetirar)(""); require(success); userBalances[msg.sender] = 0; }
Uma vez que o saldo do usuário só é definido como 0 no final da função, chamadas repetidas ainda terão sucesso, permitindo a retirada do saldo várias vezes.
Existem várias formas de ataque de reentrada, que podem envolver diferentes funções de um único contrato ou funções de vários contratos. Para resolver o problema de reentrada, é necessário ter em atenção:
Recomenda-se o uso de práticas de segurança maduras, evitando reinventar a roda. Novas soluções desenvolvidas internamente carecem de validação adequada, aumentando a probabilidade de problemas.
Sugestões de Segurança
Sugestões de segurança do projeto
Como os usuários podem avaliar a segurança dos contratos inteligentes
Em suma, tanto as equipas de projeto como os utilizadores devem aumentar a consciência de segurança e tomar as medidas necessárias para reduzir os riscos de segurança nas Finanças Descentralizadas.