Poolz подвергся атаке переполнения арифметики, убытки составили 665000 долларов США
15 марта в полночь Poolz подвергся атаке в сети Ethereum, Binance Smart Chain и Polygon, в результате чего было похищено множество токенов на общую сумму около 665 000 долларов США. Злоумышленники использовали уязвимость арифметического переполнения в смарт-контракте, в результате чего им удалось получить значительное количество токенов.
Атакующий создает массовые ликвидные пулы, вызывая функцию CreateMassPools. Эта функция имеет критическую уязвимость, которая позволяет атакующему обходить обычные проверки ликвидности с помощью тщательно подобранных параметров. В частности, атакующий воспользовался проблемой переполнения целого числа в функции getArraySum.
Во время атаки хакеры сначала обменяли небольшое количество токенов MNZ на одной из децентрализованных бирж. Затем они вызвали функцию CreateMassPools, в которой была уязвимость. Эта функция должна была использоваться для массового создания пулов ликвидности и предоставления первоначальной ликвидности, но из-за недостатка в функции getArraySum злоумышленники смогли инжектировать ложную ликвидность, превышающую фактический объем перевода.
Функция getArraySum при суммировании переданного массива _StartAmount из-за проблемы переполнения в конечном итоге возвращает значение 1. Однако функция CreatePool все еще использует исходное значение _StartAmount для записи. Это приводит к тому, что злоумышленник, переведя всего 1 токен, может зарегистрировать в системе большое количество ложной ликвидности.
После выполнения этого шага злоумышленник просто вызывает функцию withdraw для извлечения токенов, завершая весь процесс атаки.
Это событие еще раз подчеркивает важность безопасности арифметических операций в смарт-контрактах. Чтобы предотвратить подобные проблемы, разработчики должны рассмотреть возможность использования более новых версий компилятора Solidity, которые могут автоматически проверять переполнение на этапе компиляции. Для проектов, использующих старые версии Solidity, рекомендуется интегрировать библиотеку SafeMath от OpenZeppelin для обработки проблем с переполнением целых чисел.
Этот инцидент с атакой напоминает нам, что в экосистеме блокчейна даже незначительные уязвимости в коде могут привести к серьезным экономическим потерям. Поэтому тщательный аудит кода и постоянные обновления безопасности имеют жизненно важное значение для защиты активов пользователей.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Poolz подвергся атаке переполнения арифметики, убыток составил 665000 долларов США.
Poolz подвергся атаке переполнения арифметики, убытки составили 665000 долларов США
15 марта в полночь Poolz подвергся атаке в сети Ethereum, Binance Smart Chain и Polygon, в результате чего было похищено множество токенов на общую сумму около 665 000 долларов США. Злоумышленники использовали уязвимость арифметического переполнения в смарт-контракте, в результате чего им удалось получить значительное количество токенов.
Атакующий создает массовые ликвидные пулы, вызывая функцию CreateMassPools. Эта функция имеет критическую уязвимость, которая позволяет атакующему обходить обычные проверки ликвидности с помощью тщательно подобранных параметров. В частности, атакующий воспользовался проблемой переполнения целого числа в функции getArraySum.
Во время атаки хакеры сначала обменяли небольшое количество токенов MNZ на одной из децентрализованных бирж. Затем они вызвали функцию CreateMassPools, в которой была уязвимость. Эта функция должна была использоваться для массового создания пулов ликвидности и предоставления первоначальной ликвидности, но из-за недостатка в функции getArraySum злоумышленники смогли инжектировать ложную ликвидность, превышающую фактический объем перевода.
Функция getArraySum при суммировании переданного массива _StartAmount из-за проблемы переполнения в конечном итоге возвращает значение 1. Однако функция CreatePool все еще использует исходное значение _StartAmount для записи. Это приводит к тому, что злоумышленник, переведя всего 1 токен, может зарегистрировать в системе большое количество ложной ликвидности.
После выполнения этого шага злоумышленник просто вызывает функцию withdraw для извлечения токенов, завершая весь процесс атаки.
Это событие еще раз подчеркивает важность безопасности арифметических операций в смарт-контрактах. Чтобы предотвратить подобные проблемы, разработчики должны рассмотреть возможность использования более новых версий компилятора Solidity, которые могут автоматически проверять переполнение на этапе компиляции. Для проектов, использующих старые версии Solidity, рекомендуется интегрировать библиотеку SafeMath от OpenZeppelin для обработки проблем с переполнением целых чисел.
Этот инцидент с атакой напоминает нам, что в экосистеме блокчейна даже незначительные уязвимости в коде могут привести к серьезным экономическим потерям. Поэтому тщательный аудит кода и постоянные обновления безопасности имеют жизненно важное значение для защиты активов пользователей.