Poolz sufre un ataque de desbordamiento aritmético, con pérdidas de 665,000 dólares.
En la madrugada del 15 de marzo, Poolz fue atacado en la red de Ethereum, Binance Smart Chain y Polygon, lo que resultó en el robo de varios tokens, con un valor total de aproximadamente 665,000 dólares. Los atacantes aprovecharon una vulnerabilidad de desbordamiento aritmético en el contrato inteligente para obtener con éxito una gran cantidad de tokens.
Los atacantes crean múltiples grupos de liquidez al invocar la función CreateMassPools. Esta función tiene una vulnerabilidad crítica que permite a los atacantes eludir las comprobaciones de liquidez normales mediante parámetros cuidadosamente construidos. Específicamente, los atacantes aprovecharon un problema de desbordamiento de enteros en la función getArraySum.
Durante el proceso de ataque, los hackers primero intercambiaron una pequeña cantidad de tokens MNZ en un intercambio descentralizado. Luego, invocaron la función CreateMassPools que tenía vulnerabilidades. Esta función debía utilizarse para crear en masa pools de liquidez y proporcionar liquidez inicial, pero debido a un defecto en la función getArraySum, los atacantes pudieron inyectar liquidez falsa que superaba con creces la cantidad real transferida.
La función getArraySum, al sumar el array _StartAmount pasado, devuelve un valor final de 1 debido a un problema de desbordamiento. Sin embargo, la función CreatePool sigue utilizando el valor original de _StartAmount para el registro. Esto permite que un atacante ingrese solo 1 token y registre una gran cantidad de liquidez falsa en el sistema.
Después de completar este paso, el atacante simplemente llama a la función withdraw para extraer los tokens, completando así todo el proceso de ataque.
Este incidente destaca nuevamente la importancia de la seguridad en las operaciones aritméticas dentro de los contratos inteligentes. Para evitar problemas similares, los desarrolladores deberían considerar utilizar versiones más recientes del compilador de Solidity, las cuales pueden realizar comprobaciones de desbordamiento automáticamente en la fase de compilación. Para los proyectos que utilizan versiones antiguas de Solidity, se recomienda integrar la biblioteca SafeMath de OpenZeppelin para manejar problemas de desbordamiento de enteros.
Este incidente de ataque nos recuerda que, en el ecosistema blockchain, incluso una pequeña vulnerabilidad en el código puede resultar en pérdidas económicas graves. Por lo tanto, una auditoría completa del código y actualizaciones de seguridad continuas son fundamentales para proteger los activos de los usuarios.
Ver originales
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 sufre un ataque de desbordamiento aritmético con pérdidas de 665,000 dólares.
Poolz sufre un ataque de desbordamiento aritmético, con pérdidas de 665,000 dólares.
En la madrugada del 15 de marzo, Poolz fue atacado en la red de Ethereum, Binance Smart Chain y Polygon, lo que resultó en el robo de varios tokens, con un valor total de aproximadamente 665,000 dólares. Los atacantes aprovecharon una vulnerabilidad de desbordamiento aritmético en el contrato inteligente para obtener con éxito una gran cantidad de tokens.
Los atacantes crean múltiples grupos de liquidez al invocar la función CreateMassPools. Esta función tiene una vulnerabilidad crítica que permite a los atacantes eludir las comprobaciones de liquidez normales mediante parámetros cuidadosamente construidos. Específicamente, los atacantes aprovecharon un problema de desbordamiento de enteros en la función getArraySum.
Durante el proceso de ataque, los hackers primero intercambiaron una pequeña cantidad de tokens MNZ en un intercambio descentralizado. Luego, invocaron la función CreateMassPools que tenía vulnerabilidades. Esta función debía utilizarse para crear en masa pools de liquidez y proporcionar liquidez inicial, pero debido a un defecto en la función getArraySum, los atacantes pudieron inyectar liquidez falsa que superaba con creces la cantidad real transferida.
La función getArraySum, al sumar el array _StartAmount pasado, devuelve un valor final de 1 debido a un problema de desbordamiento. Sin embargo, la función CreatePool sigue utilizando el valor original de _StartAmount para el registro. Esto permite que un atacante ingrese solo 1 token y registre una gran cantidad de liquidez falsa en el sistema.
Después de completar este paso, el atacante simplemente llama a la función withdraw para extraer los tokens, completando así todo el proceso de ataque.
Este incidente destaca nuevamente la importancia de la seguridad en las operaciones aritméticas dentro de los contratos inteligentes. Para evitar problemas similares, los desarrolladores deberían considerar utilizar versiones más recientes del compilador de Solidity, las cuales pueden realizar comprobaciones de desbordamiento automáticamente en la fase de compilación. Para los proyectos que utilizan versiones antiguas de Solidity, se recomienda integrar la biblioteca SafeMath de OpenZeppelin para manejar problemas de desbordamiento de enteros.
Este incidente de ataque nos recuerda que, en el ecosistema blockchain, incluso una pequeña vulnerabilidad en el código puede resultar en pérdidas económicas graves. Por lo tanto, una auditoría completa del código y actualizaciones de seguridad continuas son fundamentales para proteger los activos de los usuarios.