Em 7 de dezembro de 2023, de acordo com Beosin EagleEye, o contrato TIME no Ethereum foi vítima de um ataque de hacker, resultando em um lucro de aproximadamente US$ 188.000 para o invasor.
Este não foi um ataque comum.
Ao rastrear as origens, descobriu-se que em 4 de dezembro de 2023, a Thirdweb emitiu um comunicado de vulnerabilidade em seu blog e canais oficiais afirmando: “Em 20 de novembro de 2023, percebemos que há uma vulnerabilidade de segurança na integração de um ambiente aberto comum. padrão de biblioteca de origem para contratos inteligentes web3. Esta vulnerabilidade afeta alguns contratos inteligentes pré-construídos da Thirdweb, e entramos em contato com as equipes de projeto relevantes para mitigação.”
No dia 7 de dezembro, o contrato TIME no Ethereum tornou-se o primeiro projeto a ser vítima deste problema de segurança. Hoje, vamos descobrir a verdade por trás desse ataque.
Visão geral do histórico do protocolo
Protocolo de segurança de metatransação nativo ERC2771:
O protocolo EIP 2771 define um protocolo em nível de contrato para o contrato destinatário aceitar metatransações por meio de um contrato de retransmissão confiável. Nenhuma alteração de protocolo é feita. O protocolo foi projetado para permitir que Ethereum aceite chamadas de contas externas que não possuem ETH para pagar taxas de gás. O protocolo envia msg.sender válido (chamado msgSender()) e msg.data (chamado msgData()) ao contrato do destinatário anexando dados de chamada adicionais. A intenção é permitir que a Ethereum aceite chamadas de contas externas sem a ETH para pagar as taxas de gás.
Devido ao design específico, o msg.sender, conforme descrito no protocolo, é obtido através da função _msgSender(). Esta função verifica se o iniciador é um retransmissor confiável e, em caso afirmativo, intercepta os últimos 20 bytes dos dados de chamada recebidos como o iniciador da transação.
Biblioteca de processamento em lote Muticall:
Muticall é uma biblioteca de recursos fornecida pela OpenZeppelin Contracts para processar múltiplas chamadas em uma única chamada externa.
No evento Time, podemos ver que a função Multicall() em sua base de código itera por meio das funções DelegateCall para processar Calldata e chamar outras funções neste contrato.
Informações sobre o evento do contrato TIME
● Transação de ataque
0xecdd111a60debfadc6533de30fb7f55dc5ceed01dfadd30e4a7ebdb416d2f6b6
● Endereço do invasor
0xfde0d1575ed8e06fbf36256bcdfa1f359281455a
● Contrato de Ataque
0x6980a47bee930a4584b09ee79ebe46484fbdbdd0
● Contrato Atacado
0x4b0e9a7da8bab813efae92a6651019b8bd6c0a29
Análise de vulnerabilidade de evento de contrato TIME
Este ataque explorou principalmente um contrato Forwarder que chamou a função multicall do token TIME. Devido ao uso do protocolo de segurança de metatransação nativo ERC2771 pelo token TIME, o invasor forjou _msg.sender maliciosamente, levando à destruição dos tokens do par. No final das contas, o invasor lucrou com o aumento do preço do token por meio das exchanges.
Fluxo de ataque de evento de contrato TIME
1. O invasor inicialmente usou 5 WTH para trocar aproximadamente 3,45 bilhões de tokens de tempo como fundos preparatórios.
2. Posteriormente, o invasor chamou a função de execução do encaminhador por meio de verificação de assinatura, passando dados de chamada maliciosos da seguinte forma:
3. Neste ponto, a função de execução chamaria o endereço req.to (endereço do token de tempo), o endereço do pacote req.data e req.from e chamaria a função multicall do token de tempo. Como o hacker descartou req.from? O hacker definiu o comprimento (tamanho) dos dados[1] como 0x38, fazendo com que o multicall truncasse req.from ao analisar os dados.
4. A função multicall chamou a função burn, destruindo tokens de tempo no par como chamador.
5. Por fim, o invasor chamou a função de sincronização do par para sincronizar as reservas, fazendo com que o preço dos tokens Time subisse.
No final, o hacker trocou os tokens TIME obtidos durante a fase de preparação pela ETH do par, resultando em um lucro de US$ 188 mil. Este ataque nos lembra mais uma vez a importância crítica da segurança dos contratos inteligentes. As equipes de projeto devem fortalecer os esforços de identificação e remediação de vulnerabilidades para garantir o desenvolvimento sustentável do ecossistema blockchain e a segurança do usuário.
Contato
Se você precisar de algum serviço de segurança blockchain, entre em contato conosco:
Site Oficial Beosin EagleEye Twitter Telegrama Linkedin