Poolz подвергся атаке переполнения арифметики, убытки составили около 66,5 тысячи долларов США
Недавно на нескольких блокчейн-сетях произошел серьезный инцидент безопасности. Согласно данным мониторинга блокчейна, 15 марта в полночь проект Poolz на сетях Ethereum, BNB Smart Chain и Polygon подвергся хакерской атаке, в результате которой было украдено большое количество токенов.
Атака затронула несколько токенов, включая MEE, ESNC, DON, ASW, KMON, POOLZ и другие. Общая стоимость украденных токенов составляет около 665 000 долларов США. В настоящее время злоумышленники уже обменяли часть украденных токенов на BNB, но еще не перевели средства с адреса атаки.
Анализ показывает, что данная атака в основном использовала арифметическую уязвимость переполнения в смарт-контракте Poolz. Злоумышленник, вызывая функцию CreateMassPools, ловко манипулировал расчетом количества токенов, что позволило ему получить большое количество токенов за очень небольшое количество.
Конкретно, злоумышленник сначала обменял небольшое количество токенов MNZ на одной из децентрализованных бирж. Затем злоумышленник вызвал функцию CreateMassPools для массового создания ликвидных пулов. Эта функция изначально предназначалась для того, чтобы пользователи могли массово создавать пулы и предоставлять начальную ликвидность.
Проблема заключается в функции getArraySum. Эта функция отвечает за вычисление количества начальной ликвидности, предоставленного пользователем. Злоумышленник передал специально сконструированный массив, содержащий два огромных числа. Когда эти два числа складываются, из-за ограничения типа uint256 происходит переполнение целого числа, в результате чего окончательный результат становится равным 1.
Однако контракт использует исходное большое значение при записи атрибутов пула. Это создает серьезную несоответствие: злоумышленник фактически перевел только 1 токен, но контракт зафиксировал огромное значение. В конце концов, злоумышленник легко извлек большое количество токенов, вызвав функцию withdraw, завершив весь процесс атаки.
Этот инцидент еще раз подчеркивает важность безопасности смарт-контрактов. Чтобы предотвратить подобные проблемы, разработчикам рекомендуется использовать более новые версии языка программирования Solidity, так как новые версии автоматически выполняют проверку на переполнение во время компиляции. Для проектов, использующих старую версию Solidity, можно рассмотреть возможность внедрения библиотеки SafeMath от OpenZeppelin для решения проблемы переполнения целых чисел.
Это событие напоминает нам, что даже незначительная ошибка в программировании может привести к огромным экономическим потерям. Проекты в области блокчейна должны уделять больше внимания аудиту кода и тестированию безопасности, чтобы обеспечить безопасность активов пользователей.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
5
Поделиться
комментарий
0/400
ShibaOnTheRun
· 07-12 01:15
Снова руки черного рынка уязвимости переполнения
Посмотреть ОригиналОтветить0
GateUser-ccc36bc5
· 07-11 10:27
Еще один проект обречен
Посмотреть ОригиналОтветить0
GasFeeNightmare
· 07-09 09:48
мир криптовалют за один день равен одному году на земле
Poolz подвергся атаке арифметического переполнения, многоканальные потери составили 66,5 тысячи долларов США.
Poolz подвергся атаке переполнения арифметики, убытки составили около 66,5 тысячи долларов США
Недавно на нескольких блокчейн-сетях произошел серьезный инцидент безопасности. Согласно данным мониторинга блокчейна, 15 марта в полночь проект Poolz на сетях Ethereum, BNB Smart Chain и Polygon подвергся хакерской атаке, в результате которой было украдено большое количество токенов.
Атака затронула несколько токенов, включая MEE, ESNC, DON, ASW, KMON, POOLZ и другие. Общая стоимость украденных токенов составляет около 665 000 долларов США. В настоящее время злоумышленники уже обменяли часть украденных токенов на BNB, но еще не перевели средства с адреса атаки.
Анализ показывает, что данная атака в основном использовала арифметическую уязвимость переполнения в смарт-контракте Poolz. Злоумышленник, вызывая функцию CreateMassPools, ловко манипулировал расчетом количества токенов, что позволило ему получить большое количество токенов за очень небольшое количество.
Конкретно, злоумышленник сначала обменял небольшое количество токенов MNZ на одной из децентрализованных бирж. Затем злоумышленник вызвал функцию CreateMassPools для массового создания ликвидных пулов. Эта функция изначально предназначалась для того, чтобы пользователи могли массово создавать пулы и предоставлять начальную ликвидность.
Проблема заключается в функции getArraySum. Эта функция отвечает за вычисление количества начальной ликвидности, предоставленного пользователем. Злоумышленник передал специально сконструированный массив, содержащий два огромных числа. Когда эти два числа складываются, из-за ограничения типа uint256 происходит переполнение целого числа, в результате чего окончательный результат становится равным 1.
Однако контракт использует исходное большое значение при записи атрибутов пула. Это создает серьезную несоответствие: злоумышленник фактически перевел только 1 токен, но контракт зафиксировал огромное значение. В конце концов, злоумышленник легко извлек большое количество токенов, вызвав функцию withdraw, завершив весь процесс атаки.
Этот инцидент еще раз подчеркивает важность безопасности смарт-контрактов. Чтобы предотвратить подобные проблемы, разработчикам рекомендуется использовать более новые версии языка программирования Solidity, так как новые версии автоматически выполняют проверку на переполнение во время компиляции. Для проектов, использующих старую версию Solidity, можно рассмотреть возможность внедрения библиотеки SafeMath от OpenZeppelin для решения проблемы переполнения целых чисел.
Это событие напоминает нам, что даже незначительная ошибка в программировании может привести к огромным экономическим потерям. Проекты в области блокчейна должны уделять больше внимания аудиту кода и тестированию безопасности, чтобы обеспечить безопасность активов пользователей.