Análise das vulnerabilidades de segurança comuns em Finanças Descentralizadas: prevenção de Empréstimos Flash, manipulação de preços e ataques de reentrada.
Finanças Descentralizadas comuns vulnerabilidades de segurança e medidas de prevenção
Recentemente, um especialista em segurança compartilhou uma aula sobre segurança em Finanças Descentralizadas com os membros da comunidade. Ele revisitou os principais eventos de segurança que a indústria Web3 enfrentou nos últimos mais de um ano, discutiu as razões pelas quais esses eventos ocorreram e como evitá-los, resumiu as vulnerabilidades de segurança comuns em contratos inteligentes e as medidas de prevenção, e deu algumas recomendações de segurança para as equipes de projetos e usuários comuns.
Os tipos comuns de vulnerabilidades em Finanças Descentralizadas geralmente incluem empréstimos relâmpago, manipulação de preços, problemas de permissão de funções, chamadas externas arbitrárias, problemas com a função fallback, vulnerabilidades de lógica de negócios, vazamento de chaves privadas, reentrância, entre outros. Abaixo, são apresentadas em destaque as três principais tipos: empréstimos relâmpago, manipulação de preços e ataques de reentrância.
Empréstimo Relâmpago
O empréstimo relâmpago é uma inovação nas Finanças Descentralizadas, mas quando explorado por hackers pode causar grandes prejuízos:
O atacante emprestou uma grande quantidade de fundos através de um empréstimo relâmpago, manipulando o preço e atacando a lógica de negócios, entre outros.
Os desenvolvedores devem considerar se as funções do contrato podem causar anomalias devido a grandes quantias de dinheiro ou serem exploradas para obter lucros indevidos.
Alguns projetos não consideraram o impacto dos empréstimos relâmpago ao projetar funcionalidades, resultando em roubo de fundos.
Nos últimos dois anos, surgiram muitos problemas relacionados a empréstimos relâmpago. Alguns projetos parecem ter altos rendimentos, mas na verdade apresentam falhas lógicas, como:
Atribuição de recompensas com base na quantidade de posições em tempos fixos, sendo manipulada por empréstimos relâmpago para obter grandes recompensas.
Projetos que calculam preços através de Token podem ter seus preços afetados por empréstimos relâmpago.
As partes do projeto devem estar atentas a essas questões.
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:
Usar dados de terceiros ao calcular preços, mas de forma incorreta ou com verificação ausente.
Usar a quantidade de tokens de certos endereços como variável de cálculo, e essas quantidades podem ser manipuladas temporariamente.
Ataque de Reentrada
A chamada a contratos externos pode levar à tomada de controle do fluxo, resultando em alterações inesperadas nos dados. Um exemplo típico de um ataque de reentrada:
solidity
mapeamento (endereço => uint) saldoPrivado do usuário;
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool success, ) = msg.sender.call.value(amountToWithdraw)("");
require(success);
userBalances[msg.sender] = 0;
}
Uma vez que o saldo do utilizador só é definido como 0 no final da função, chamadas repetidas podem retirar o saldo várias vezes.
Para resolver o problema de reentrada, é necessário ter atenção a:
Não apenas prevenir a reentrada de uma única função
Seguir o padrão Checks-Effects-Interactions
Usar um modificador de prevenção de reentrada verificado
Recomenda-se utilizar as melhores práticas de segurança consolidadas, evitando reinventar a roda.
Sugestões de segurança
para sugestões ao projeto:
Seguir as melhores práticas de segurança para o desenvolvimento de contratos
Implementar a funcionalidade de atualização e pausa de contratos.
Adotar bloqueio de tempo
Aumentar o investimento em segurança e estabelecer um sistema de segurança abrangente
Aumentar a conscientização de segurança de todos os funcionários
Prevenir a má conduta interna, aumentando o controle de riscos enquanto se melhora a eficiência.
Introduza terceiros com cautela, assumindo que tanto upstream quanto downstream não são seguros.
Como os usuários podem determinar se um contrato inteligente é seguro:
Verifique se o contrato é de código aberto
Verifique se o Owner utiliza uma multiassinatura descentralizada
Verificar a situação das transações existentes do contrato
Verifique se o contrato é atualizável, se há um bloqueio temporal.
Verifique se aceita auditorias de várias instituições, se os direitos do proprietário são excessivos.
Atenção à confiabilidade do oráculo
Em resumo, no campo das Finanças Descentralizadas, tanto os desenvolvedores de projetos quanto os usuários comuns precisam aumentar a conscientização sobre segurança, adotar as medidas de segurança necessárias para reduzir riscos e proteger a segurança dos ativos.
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.
9 Curtidas
Recompensa
9
7
Repostar
Compartilhar
Comentário
0/400
TooScaredToSell
· 5h atrás
Não fale tanto de regras, entrar diretamente no mercado de moedas é o que realmente importa.
Ver originalResponder0
MysteryBoxBuster
· 7h atrás
Já está a tentar fingir que entende Empréstimos Flash...
Ver originalResponder0
GhostWalletSleuth
· 08-09 18:44
Puxar o tapete é a verdadeira tecnologia de ponta.
Ver originalResponder0
CodeAuditQueen
· 08-09 18:43
Isto não passa de uma vulnerabilidade de injeção da era web1 com uma nova aparência.
Ver originalResponder0
MoonlightGamer
· 08-09 18:39
Quem disse que o DeFi não tem novos jogos? Aqui está ele!
Ver originalResponder0
HashBandit
· 08-09 18:36
bruh perdeu 50 eth para uma exploração de flashloan em 2021... ainda me dá pesadelos, para ser sincero
Análise das vulnerabilidades de segurança comuns em Finanças Descentralizadas: prevenção de Empréstimos Flash, manipulação de preços e ataques de reentrada.
Finanças Descentralizadas comuns vulnerabilidades de segurança e medidas de prevenção
Recentemente, um especialista em segurança compartilhou uma aula sobre segurança em Finanças Descentralizadas com os membros da comunidade. Ele revisitou os principais eventos de segurança que a indústria Web3 enfrentou nos últimos mais de um ano, discutiu as razões pelas quais esses eventos ocorreram e como evitá-los, resumiu as vulnerabilidades de segurança comuns em contratos inteligentes e as medidas de prevenção, e deu algumas recomendações de segurança para as equipes de projetos e usuários comuns.
Os tipos comuns de vulnerabilidades em Finanças Descentralizadas geralmente incluem empréstimos relâmpago, manipulação de preços, problemas de permissão de funções, chamadas externas arbitrárias, problemas com a função fallback, vulnerabilidades de lógica de negócios, vazamento de chaves privadas, reentrância, entre outros. Abaixo, são apresentadas em destaque as três principais tipos: empréstimos relâmpago, manipulação de preços e ataques de reentrância.
Empréstimo Relâmpago
O empréstimo relâmpago é uma inovação nas Finanças Descentralizadas, mas quando explorado por hackers pode causar grandes prejuízos:
Nos últimos dois anos, surgiram muitos problemas relacionados a empréstimos relâmpago. Alguns projetos parecem ter altos rendimentos, mas na verdade apresentam falhas lógicas, como:
As partes do projeto devem estar atentas a essas questões.
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:
Ataque de Reentrada
A chamada a contratos externos pode levar à tomada de controle do fluxo, resultando em alterações inesperadas nos dados. Um exemplo típico de um ataque de reentrada:
solidity mapeamento (endereço => uint) saldoPrivado do usuário;
function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }
Uma vez que o saldo do utilizador só é definido como 0 no final da função, chamadas repetidas podem retirar o saldo várias vezes.
Para resolver o problema de reentrada, é necessário ter atenção a:
Recomenda-se utilizar as melhores práticas de segurança consolidadas, evitando reinventar a roda.
Sugestões de segurança
para sugestões ao projeto:
Como os usuários podem determinar se um contrato inteligente é seguro:
Em resumo, no campo das Finanças Descentralizadas, tanto os desenvolvedores de projetos quanto os usuários comuns precisam aumentar a conscientização sobre segurança, adotar as medidas de segurança necessárias para reduzir riscos e proteger a segurança dos ativos.