Análise de segurança de contratos NFT: Revisão de eventos do primeiro semestre de 2022 e discussão de questões comuns
No primeiro semestre de 2022, ocorreram frequentes incidentes de segurança no campo dos NFTs, resultando em enormes perdas econômicas. De acordo com as estatísticas, ocorreram 10 incidentes significativos de segurança de NFTs durante esses seis meses, com perdas totais superiores a 64,9 milhões de dólares. Os métodos de ataque incluem principalmente a exploração de vulnerabilidades de contratos, vazamento de chaves privadas e phishing. É importante notar que os ataques de phishing na plataforma Discord são especialmente comuns, com servidores sendo atacados quase diariamente, resultando em muitos usuários sofrendo perdas ao clicarem em links maliciosos.
Análise de Incidentes de Segurança Típicos
evento TreasureDAO
No dia 3 de março, a plataforma de negociação TreasureDAO sofreu um ataque, resultando no roubo de mais de 100 NFTs. O problema estava na função buyItem do contrato TreasureMarketplaceBuyer. Essa função não verificou o tipo de token ao calcular o preço total, multiplicando diretamente a quantidade pelo preço unitário. Isso permitiu que os atacantes chamassem a função buyItem do contrato TreasureMarketplace com um pagamento de token ERC-20 igual a 0 para adquirir os tokens.
A causa raiz é a confusão lógica gerada pela mistura de tokens ERC-1155 e ERC-721. Os tokens ERC-721 não têm um conceito de quantidade, mas o contrato calcula o preço de compra com base na quantidade, e na implementação da transferência final não houve separação lógica.
APE Coin airdrop event
No dia 17 de março, hackers obtiveram mais de 60 mil APE Coin airdrops através de um empréstimo relâmpago. O problema estava no contrato de airdrop do AirdropGrapesToken. O contrato usou alpha.balanceOf() e beta.balanceOf() para determinar a propriedade do chamador sobre os NFTs BAYC/MAYC, mas essa abordagem só consegue capturar o estado momentâneo da propriedade do NFT, que pode ser manipulado por empréstimos relâmpago. Os atacantes exploraram essa vulnerabilidade, pegando emprestado o NFT BAYC através de um empréstimo relâmpago e obtendo o respectivo airdrop.
Evento Revest Finance
No dia 27 de março, o projeto Revest Finance sofreu um ataque, resultando em uma perda de cerca de 120.000 dólares. Este é um exemplo típico de um ataque de reentrada ERC-1155. O problema estava no contrato da Revest. Quando os usuários usam depositAdditionalToFNFT() para adicionar ativos colaterais FNFT, o contrato precisa primeiro destruir o FNFT antigo, e então cunhar o novo FNFT. No entanto, durante o processo de cunhagem, a função min() não verificou se o FNFT a ser cunhado já existia, e a variável de estado fnftId foi incrementada após a função _mint(). Além disso, dentro de _min(), existe uma chamada externa oculta do ERC-1155 _doSafeTransferAcceptanceCheck(), o que resultou em uma vulnerabilidade de reentrada.
NBA薅羊毛事件
No dia 21 de abril, o projeto da NBA foi atacado. O problema estava no mecanismo de verificação de assinatura do contrato The_Association_Sales. Existem duas vulnerabilidades de segurança principais: o uso indevido de assinaturas e a reutilização de assinaturas. A reutilização de assinaturas ocorre porque o contrato não armazena as assinaturas já utilizadas, permitindo que um atacante use repetidamente a mesma assinatura. O uso indevido de assinaturas ocorre porque o parâmetro info da memória vData não foi verificado quanto ao msg.sender durante a passagem de parâmetros, permitindo que a assinatura seja usurpada.
Evento Akutar
No dia 23 de abril, o contrato AkuAuction do projeto NFT Akutar foi bloqueado devido a uma falha, resultando em 11539ETH (cerca de 34 milhões de dólares) sendo bloqueados. O contrato apresentava duas falhas lógicas:
A função de reembolso processRefunds utiliza a função call para realizar o reembolso, e o resultado do reembolso é usado como condição de verificação com require. Um atacante pode reverter maliciosamente no fallback, impedindo que toda a operação de reembolso do contrato seja realizada.
As duas condições de verificação na função de reembolso não consideraram a possibilidade de os usuários licitarem em múltiplos NFTs, resultando na impossibilidade da equipe do projeto executar operações de reembolso posteriormente.
Evento XCarnival
No dia 24 de junho, o protocolo de empréstimo de NFT XCarnival foi atacado, resultando em um lucro de 3087 éteres (cerca de 3,8 milhões de dólares) para o hacker. O problema estava na função pledgeAndBorrow do contrato XNFT. Esta função não verificou se o endereço xToken fornecido pelo atacante estava na lista branca do projeto ao se fazer a aposta de NFTs, e não detectou o estado do registro de colaterais durante o empréstimo, permitindo que o atacante utilizasse repetidamente registros de colaterais inválidos para emprestar.
Perguntas Frequentes sobre Auditoria de Contratos NFT
Uso e reutilização de assinaturas:
Os dados da assinatura estão faltando a validação de execução repetida, como a falta do nonce do usuário, levando à possibilidade de reutilização dos dados da assinatura para cunhar NFTs.
Verificação de assinatura inadequada, como não verificar a situação em que o signatário é um endereço zero, permitindo que qualquer usuário possa cunhar através da verificação.
Falha lógica:
O administrador do contrato pode cunhar moedas de maneira especial sem restrições de quantidade total, fazendo com que a quantidade real de NFTs exceda o esperado.
Durante um leilão de NFT, o vencedor pode usar um ataque de dependência da ordem de transação para alterar o preço da licitação e adquirir o NFT a um preço baixo.
Ataque de reentrada ERC721/ERC1155:
Ao usar a funcionalidade de notificação de transferência (função onERC721Received), o contrato NFT pode enviar uma chamada para o contrato de destino da transferência, o que pode levar a um ataque de reentrada.
O escopo da autorização é excessivo:
Requer autorização _operatorApprovals ao fazer staking ou leilão, em vez de autorização de token individual, aumentando o risco de roubo do NFT.
Manipulação de preços:
O preço do NFT depende da quantidade de tokens detidos por um determinado contrato, os atacantes podem usar empréstimos relâmpago para aumentar o preço do token, levando à liquidação anômala dos NFTs em staking.
Dada a frequência de eventos de segurança em contratos NFT e o fato de que as vulnerabilidades detectadas durante o processo de auditoria muitas vezes correspondem a ataques reais, torna-se especialmente importante buscar empresas de segurança profissionais para realizar uma auditoria completa dos contratos NFT.
Ver original
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.
16 gostos
Recompensa
16
6
Republicar
Partilhar
Comentar
0/400
BrokeBeans
· 21h atrás
O contrato teve problemas novamente, quem ainda se atreve a comprar?
Ver originalResponder0
CryptoNomics
· 22h atrás
*suspiro* aplicando a análise da cadeia de Markov, estes hacks mostram 73,4% de correlação com uma má auditoria de contratos. estatisticamente inevitável.
Ver originalResponder0
blockBoy
· 22h atrás
Tsk, todos os dias há uma vulnerabilidade.
Ver originalResponder0
ILCollector
· 22h atrás
Ai, dezenas de milhões em dólares evaporaram assim. Sinto muito pelo irmão que fez a perda de corte.
Ver originalResponder0
SorryRugPulled
· 22h atrás
Foi novamente estragado por um golpe de phishing da dc.
Ver originalResponder0
GweiTooHigh
· 22h atrás
Mais uma vez, os contratos estão sendo explorados, sem fim à vista.
Análise dos riscos de segurança dos contratos NFT: Revisão de eventos do primeiro semestre de 2022 e pontos de auditoria
Análise de segurança de contratos NFT: Revisão de eventos do primeiro semestre de 2022 e discussão de questões comuns
No primeiro semestre de 2022, ocorreram frequentes incidentes de segurança no campo dos NFTs, resultando em enormes perdas econômicas. De acordo com as estatísticas, ocorreram 10 incidentes significativos de segurança de NFTs durante esses seis meses, com perdas totais superiores a 64,9 milhões de dólares. Os métodos de ataque incluem principalmente a exploração de vulnerabilidades de contratos, vazamento de chaves privadas e phishing. É importante notar que os ataques de phishing na plataforma Discord são especialmente comuns, com servidores sendo atacados quase diariamente, resultando em muitos usuários sofrendo perdas ao clicarem em links maliciosos.
Análise de Incidentes de Segurança Típicos
evento TreasureDAO
No dia 3 de março, a plataforma de negociação TreasureDAO sofreu um ataque, resultando no roubo de mais de 100 NFTs. O problema estava na função buyItem do contrato TreasureMarketplaceBuyer. Essa função não verificou o tipo de token ao calcular o preço total, multiplicando diretamente a quantidade pelo preço unitário. Isso permitiu que os atacantes chamassem a função buyItem do contrato TreasureMarketplace com um pagamento de token ERC-20 igual a 0 para adquirir os tokens.
A causa raiz é a confusão lógica gerada pela mistura de tokens ERC-1155 e ERC-721. Os tokens ERC-721 não têm um conceito de quantidade, mas o contrato calcula o preço de compra com base na quantidade, e na implementação da transferência final não houve separação lógica.
APE Coin airdrop event
No dia 17 de março, hackers obtiveram mais de 60 mil APE Coin airdrops através de um empréstimo relâmpago. O problema estava no contrato de airdrop do AirdropGrapesToken. O contrato usou alpha.balanceOf() e beta.balanceOf() para determinar a propriedade do chamador sobre os NFTs BAYC/MAYC, mas essa abordagem só consegue capturar o estado momentâneo da propriedade do NFT, que pode ser manipulado por empréstimos relâmpago. Os atacantes exploraram essa vulnerabilidade, pegando emprestado o NFT BAYC através de um empréstimo relâmpago e obtendo o respectivo airdrop.
Evento Revest Finance
No dia 27 de março, o projeto Revest Finance sofreu um ataque, resultando em uma perda de cerca de 120.000 dólares. Este é um exemplo típico de um ataque de reentrada ERC-1155. O problema estava no contrato da Revest. Quando os usuários usam depositAdditionalToFNFT() para adicionar ativos colaterais FNFT, o contrato precisa primeiro destruir o FNFT antigo, e então cunhar o novo FNFT. No entanto, durante o processo de cunhagem, a função min() não verificou se o FNFT a ser cunhado já existia, e a variável de estado fnftId foi incrementada após a função _mint(). Além disso, dentro de _min(), existe uma chamada externa oculta do ERC-1155 _doSafeTransferAcceptanceCheck(), o que resultou em uma vulnerabilidade de reentrada.
NBA薅羊毛事件
No dia 21 de abril, o projeto da NBA foi atacado. O problema estava no mecanismo de verificação de assinatura do contrato The_Association_Sales. Existem duas vulnerabilidades de segurança principais: o uso indevido de assinaturas e a reutilização de assinaturas. A reutilização de assinaturas ocorre porque o contrato não armazena as assinaturas já utilizadas, permitindo que um atacante use repetidamente a mesma assinatura. O uso indevido de assinaturas ocorre porque o parâmetro info da memória vData não foi verificado quanto ao msg.sender durante a passagem de parâmetros, permitindo que a assinatura seja usurpada.
Evento Akutar
No dia 23 de abril, o contrato AkuAuction do projeto NFT Akutar foi bloqueado devido a uma falha, resultando em 11539ETH (cerca de 34 milhões de dólares) sendo bloqueados. O contrato apresentava duas falhas lógicas:
Evento XCarnival
No dia 24 de junho, o protocolo de empréstimo de NFT XCarnival foi atacado, resultando em um lucro de 3087 éteres (cerca de 3,8 milhões de dólares) para o hacker. O problema estava na função pledgeAndBorrow do contrato XNFT. Esta função não verificou se o endereço xToken fornecido pelo atacante estava na lista branca do projeto ao se fazer a aposta de NFTs, e não detectou o estado do registro de colaterais durante o empréstimo, permitindo que o atacante utilizasse repetidamente registros de colaterais inválidos para emprestar.
Perguntas Frequentes sobre Auditoria de Contratos NFT
Uso e reutilização de assinaturas:
Falha lógica:
Ataque de reentrada ERC721/ERC1155:
O escopo da autorização é excessivo:
Manipulação de preços:
Dada a frequência de eventos de segurança em contratos NFT e o fato de que as vulnerabilidades detectadas durante o processo de auditoria muitas vezes correspondem a ataques reais, torna-se especialmente importante buscar empresas de segurança profissionais para realizar uma auditoria completa dos contratos NFT.