Recentemente, um contrato de um projeto de coleções digitais muito seguido foi encontrado com duas vulnerabilidades graves. A equipe de segurança, ao revisar esse contrato, descobriu que essas vulnerabilidades poderiam levar ao bloqueio dos ativos dos usuários, assim como a equipa do projeto não conseguiria retirar mais de 34 milhões de dólares.
A primeira vulnerabilidade envolve a funcionalidade de reembolso. O procedimento de reembolso no contrato utiliza um método de loop para reembolsar todos os usuários. No entanto, se o endereço de um usuário for um contrato malicioso, pode recusar-se a receber o reembolso, levando à falha da transação e, consequentemente, afetando a operação de reembolso de todos os usuários. Felizmente, essa vulnerabilidade não foi explorada na prática.
Para evitar problemas semelhantes, recomenda-se que a equipa do projeto considere os seguintes pontos ao projetar o mecanismo de reembolso:
A participação no projeto é restrita apenas a contas de utilizador comuns.
Usar tokens ERC20 como WETH em vez de ativos nativos
Projetar uma funcionalidade que permita aos usuários solicitar reembolsos de forma independente, em vez de processá-los em massa.
O segundo erro foi causado por um erro lógico no código. Na função de extração de fundos do projeto, existe uma instrução condicional que deveria comparar duas variáveis específicas, mas utilizou incorretamente outra variável para a comparação. Isso fez com que a condição nunca pudesse ser satisfeita, e a equipa do projeto não conseguiu assim extrair os fundos do contrato. Atualmente, cerca de 34 milhões de dólares em ativos estão permanentemente bloqueados no contrato.
Este evento destaca novamente que até mesmo projetos conhecidos podem cometer erros básicos. A equipa do projeto deve escrever casos de teste adequados durante o desenvolvimento do projeto e cultivar uma consciência básica de segurança. Embora a auditoria de segurança tenha se tornado uma prática comum no campo das finanças descentralizadas, esta etapa é frequentemente negligenciada em projetos de colecionáveis digitais, levando a perdas enormes.
Este evento lembra-nos que, no desenvolvimento de projetos de blockchain, independentemente da escala do projeto, devemos dar importância ao trabalho de auditoria de segurança, a fim de prevenir vulnerabilidades que possam causar consequências graves. Ao mesmo tempo, também destaca a importância dos detalhes no desenvolvimento de contratos inteligentes, um pequeno erro de código pode resultar em perdas de milhões de dólares.
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.
O contrato do projeto de colecionáveis digitais apresenta uma falha grave, resultando no bloqueio permanente de 34 milhões de dólares em fundos.
Recentemente, um contrato de um projeto de coleções digitais muito seguido foi encontrado com duas vulnerabilidades graves. A equipe de segurança, ao revisar esse contrato, descobriu que essas vulnerabilidades poderiam levar ao bloqueio dos ativos dos usuários, assim como a equipa do projeto não conseguiria retirar mais de 34 milhões de dólares.
A primeira vulnerabilidade envolve a funcionalidade de reembolso. O procedimento de reembolso no contrato utiliza um método de loop para reembolsar todos os usuários. No entanto, se o endereço de um usuário for um contrato malicioso, pode recusar-se a receber o reembolso, levando à falha da transação e, consequentemente, afetando a operação de reembolso de todos os usuários. Felizmente, essa vulnerabilidade não foi explorada na prática.
Para evitar problemas semelhantes, recomenda-se que a equipa do projeto considere os seguintes pontos ao projetar o mecanismo de reembolso:
O segundo erro foi causado por um erro lógico no código. Na função de extração de fundos do projeto, existe uma instrução condicional que deveria comparar duas variáveis específicas, mas utilizou incorretamente outra variável para a comparação. Isso fez com que a condição nunca pudesse ser satisfeita, e a equipa do projeto não conseguiu assim extrair os fundos do contrato. Atualmente, cerca de 34 milhões de dólares em ativos estão permanentemente bloqueados no contrato.
Este evento destaca novamente que até mesmo projetos conhecidos podem cometer erros básicos. A equipa do projeto deve escrever casos de teste adequados durante o desenvolvimento do projeto e cultivar uma consciência básica de segurança. Embora a auditoria de segurança tenha se tornado uma prática comum no campo das finanças descentralizadas, esta etapa é frequentemente negligenciada em projetos de colecionáveis digitais, levando a perdas enormes.
Este evento lembra-nos que, no desenvolvimento de projetos de blockchain, independentemente da escala do projeto, devemos dar importância ao trabalho de auditoria de segurança, a fim de prevenir vulnerabilidades que possam causar consequências graves. Ao mesmo tempo, também destaca a importância dos detalhes no desenvolvimento de contratos inteligentes, um pequeno erro de código pode resultar em perdas de milhões de dólares.