Poolz enfrenta um ataque de overflow aritmético, com perdas de 66,5 mil dólares
Na madrugada de 15 de março, o Poolz foi atacado nas redes Ethereum, Binance Smart Chain e Polygon, resultando no roubo de vários tokens, com um valor total de aproximadamente 665 mil dólares. Os atacantes exploraram uma vulnerabilidade de overflow aritmético em um contrato inteligente, conseguindo obter uma grande quantidade de tokens.
Os atacantes criam múltiplas pools de liquidez chamando a função CreateMassPools. Esta função possui uma vulnerabilidade crítica que permite aos atacantes contornar as verificações normais de liquidez através de parâmetros cuidadosamente elaborados. Especificamente, os atacantes exploram um problema de estouro de inteiro na função getArraySum.
Durante o ataque, os hackers primeiro trocaram uma pequena quantidade de tokens MNZ em uma certa exchange descentralizada. Em seguida, eles chamaram a função CreateMassPools, que tinha uma vulnerabilidade. Essa função deveria ser usada para criar em massa pools de liquidez e fornecer liquidez inicial, mas devido a um defeito na função getArraySum, os atacantes conseguiram injetar uma liquidez falsa muito superior ao valor real transferido.
A função getArraySum, ao somar o array _StartAmount passado, retorna um valor final de 1 devido a um problema de estouro. No entanto, a função CreatePool ainda utiliza o valor original do _StartAmount para registro. Isso permite que um atacante insira apenas 1 token e registre uma grande quantidade de liquidez falsa no sistema.
Após completar este passo, o atacante simplesmente chama a função withdraw para retirar os tokens, completando assim todo o processo de ataque.
Este incidente destaca novamente a importância da segurança nas operações aritméticas em contratos inteligentes. Para evitar problemas semelhantes, os desenvolvedores devem considerar o uso de versões mais recentes do compilador Solidity, que podem realizar verificações de estouro automaticamente na fase de compilação. Para projetos que utilizam versões antigas do Solidity, recomenda-se integrar a biblioteca SafeMath da OpenZeppelin para lidar com problemas de estouro de inteiros.
Este incidente de ataque nos lembra que, no ecossistema blockchain, até mesmo pequenas vulnerabilidades de código podem resultar em perdas econômicas significativas. Portanto, auditorias de código rigorosas e atualizações de segurança contínuas são fundamentais para proteger os ativos dos usuários.
Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Poolz sofre ataque de estouro aritmético com perda de 665 mil dólares.
Poolz enfrenta um ataque de overflow aritmético, com perdas de 66,5 mil dólares
Na madrugada de 15 de março, o Poolz foi atacado nas redes Ethereum, Binance Smart Chain e Polygon, resultando no roubo de vários tokens, com um valor total de aproximadamente 665 mil dólares. Os atacantes exploraram uma vulnerabilidade de overflow aritmético em um contrato inteligente, conseguindo obter uma grande quantidade de tokens.
Os atacantes criam múltiplas pools de liquidez chamando a função CreateMassPools. Esta função possui uma vulnerabilidade crítica que permite aos atacantes contornar as verificações normais de liquidez através de parâmetros cuidadosamente elaborados. Especificamente, os atacantes exploram um problema de estouro de inteiro na função getArraySum.
Durante o ataque, os hackers primeiro trocaram uma pequena quantidade de tokens MNZ em uma certa exchange descentralizada. Em seguida, eles chamaram a função CreateMassPools, que tinha uma vulnerabilidade. Essa função deveria ser usada para criar em massa pools de liquidez e fornecer liquidez inicial, mas devido a um defeito na função getArraySum, os atacantes conseguiram injetar uma liquidez falsa muito superior ao valor real transferido.
A função getArraySum, ao somar o array _StartAmount passado, retorna um valor final de 1 devido a um problema de estouro. No entanto, a função CreatePool ainda utiliza o valor original do _StartAmount para registro. Isso permite que um atacante insira apenas 1 token e registre uma grande quantidade de liquidez falsa no sistema.
Após completar este passo, o atacante simplesmente chama a função withdraw para retirar os tokens, completando assim todo o processo de ataque.
Este incidente destaca novamente a importância da segurança nas operações aritméticas em contratos inteligentes. Para evitar problemas semelhantes, os desenvolvedores devem considerar o uso de versões mais recentes do compilador Solidity, que podem realizar verificações de estouro automaticamente na fase de compilação. Para projetos que utilizam versões antigas do Solidity, recomenda-se integrar a biblioteca SafeMath da OpenZeppelin para lidar com problemas de estouro de inteiros.
Este incidente de ataque nos lembra que, no ecossistema blockchain, até mesmo pequenas vulnerabilidades de código podem resultar em perdas econômicas significativas. Portanto, auditorias de código rigorosas e atualizações de segurança contínuas são fundamentais para proteger os ativos dos usuários.