Poolz sofre ataque de overflow aritmético, com perdas de cerca de 66,5 mil dólares.
Recentemente, a plataforma Poolz foi atacada nas redes Ethereum, Binance Smart Chain e Polygon, resultando no roubo de uma grande quantidade de tokens, com um valor total de cerca de 665 mil dólares. O ataque ocorreu em 15 de março de 2023, às 3h16 (horário UTC).
De acordo com os dados de monitoramento on-chain, este ataque envolveu vários tokens, incluindo MEE, ESNC, DON, ASW, KMON, POOLZ, entre outros. O atacante já trocou parte dos tokens roubados por BNB, mas até agora os fundos não foram transferidos.
Os atacantes exploraram uma vulnerabilidade de estouro aritmético no contrato Poolz. Especificamente, o problema está na função getArraySum dentro da função CreateMassPools. Essa função, ao calcular a quantidade de tokens, causa um estouro devido ao resultado da soma exceder o valor máximo do tipo uint256, fazendo com que o valor de retorno se torne 1.
O fluxo de ataque é o seguinte:
O atacante primeiro trocou alguns tokens MNZ através de um DEX.
Em seguida, chame a função CreateMassPools, explorando a vulnerabilidade da função getArraySum. O array _StartAmount fornecido pelo atacante contém valores extremamente altos, resultando em um estouro de soma.
Devido à função CreatePool usar _StartAmount para registrar os atributos do pool, o atacante realmente só transfere 1 token, mas o sistema registra um valor gigantesco.
Por fim, o atacante chama a função withdraw para retirar os tokens, completando o ataque.
Para evitar que esses problemas ocorram novamente, recomenda-se que os desenvolvedores usem uma versão mais recente do Solidity para compilar, pois as novas versões realizam automaticamente verificações de estouro. Para projetos que utilizam versões antigas do Solidity, pode-se considerar o uso da biblioteca SafeMath da OpenZeppelin para resolver problemas de estouro de inteiros.
Este evento lembra-nos novamente que, ao desenvolver contratos inteligentes, é necessário ter um cuidado especial ao lidar com operações matemáticas, especialmente quando se trata de cálculos com grandes números. Ao mesmo tempo, realizar auditorias de código e verificações de segurança regularmente é uma medida importante para garantir a segurança do projeto.
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.
8 Curtidas
Recompensa
8
5
Repostar
Compartilhar
Comentário
0/400
ValidatorVibes
· 4h atrás
smh... outro ataque de overflow. auditorias de protocolos são literalmente governança 101 frfr
Ver originalResponder0
MetaverseVagrant
· 4h atrás
Outra vez ficou negro, 660 mil também se atreve a chamar hacker.
Poolz sofre ataque de estouro aritmético, perda de 66,5 mil dólares.
Poolz sofre ataque de overflow aritmético, com perdas de cerca de 66,5 mil dólares.
Recentemente, a plataforma Poolz foi atacada nas redes Ethereum, Binance Smart Chain e Polygon, resultando no roubo de uma grande quantidade de tokens, com um valor total de cerca de 665 mil dólares. O ataque ocorreu em 15 de março de 2023, às 3h16 (horário UTC).
De acordo com os dados de monitoramento on-chain, este ataque envolveu vários tokens, incluindo MEE, ESNC, DON, ASW, KMON, POOLZ, entre outros. O atacante já trocou parte dos tokens roubados por BNB, mas até agora os fundos não foram transferidos.
Os atacantes exploraram uma vulnerabilidade de estouro aritmético no contrato Poolz. Especificamente, o problema está na função getArraySum dentro da função CreateMassPools. Essa função, ao calcular a quantidade de tokens, causa um estouro devido ao resultado da soma exceder o valor máximo do tipo uint256, fazendo com que o valor de retorno se torne 1.
O fluxo de ataque é o seguinte:
O atacante primeiro trocou alguns tokens MNZ através de um DEX.
Em seguida, chame a função CreateMassPools, explorando a vulnerabilidade da função getArraySum. O array _StartAmount fornecido pelo atacante contém valores extremamente altos, resultando em um estouro de soma.
Devido à função CreatePool usar _StartAmount para registrar os atributos do pool, o atacante realmente só transfere 1 token, mas o sistema registra um valor gigantesco.
Por fim, o atacante chama a função withdraw para retirar os tokens, completando o ataque.
Para evitar que esses problemas ocorram novamente, recomenda-se que os desenvolvedores usem uma versão mais recente do Solidity para compilar, pois as novas versões realizam automaticamente verificações de estouro. Para projetos que utilizam versões antigas do Solidity, pode-se considerar o uso da biblioteca SafeMath da OpenZeppelin para resolver problemas de estouro de inteiros.
Este evento lembra-nos novamente que, ao desenvolver contratos inteligentes, é necessário ter um cuidado especial ao lidar com operações matemáticas, especialmente quando se trata de cálculos com grandes números. Ao mesmo tempo, realizar auditorias de código e verificações de segurança regularmente é uma medida importante para garantir a segurança do projeto.