Poolz подвергся атаке переполнения арифметики, убытки составили около 665 тысяч долларов США
На днях несколько проектов Poolz в различных блокчейн-сетях подверглись атакам, в результате которых было похищено большое количество токенов на общую сумму около 665000 долларов США. Атака произошла 15 марта 2023 года и затронула контракты Poolz на таких сетях, как Ethereum, BNB Chain и Polygon.
Атакующий использовал уязвимость переполнения арифметики в смарт-контракте Poolz. Конкретно, проблема заключалась в функции getArraySum в функции CreateMassPools. Эта функция при расчете начальной ликвидности пула из-за переполнения целого числа позволила атакующему создать иллюзию большой ликвидности, переведя лишь небольшое количество токенов.
Процесс атаки следующий:
Нападающий сначала обменял небольшое количество токенов MNZ на одном из децентрализованных обменников.
Затем был вызван уязвимый функция CreateMassPools. Эта функция позволяет пользователям массово создавать ликвидные пулы и предоставлять первоначальную ликвидность.
При вычислении начальной суммы ликвидности произошел переполнение целого числа в функции getArraySum. Сумма массива, переданная злоумышленником, превысила максимальное значение, которое может быть представлено uint256, что привело к тому, что возвращаемое значение функции стало равно 1.
Однако контракт по-прежнему использовал исходные значения массива _StartAmount при записи свойств пула. Это привело к тому, что атакующий фактически перевел только 1 токен, но был зафиксирован как обладающий огромной ликвидностью.
Наконец, злоумышленник вызывает функцию withdraw для вывода средств, завершив атаку.
Данный инцидент выявил опасности переполнения арифметических операций в смарт-контрактах. Чтобы предотвратить подобные проблемы, разработчики должны рассмотреть возможность использования более новых версий компилятора Solidity, которые автоматически выполняют проверки на переполнение. Для проектов, использующих более старые версии Solidity, можно использовать библиотеку SafeMath от OpenZeppelin для обработки целочисленных операций, чтобы избежать риска переполнения.
Эта атака снова подчеркивает необходимость особого внимания к безопасности арифметических операций при разработке и аудите смарт-контрактов. В то же время, команде проекта следует регулярно проводить аудиты безопасности, чтобы своевременно выявлять и исправлять потенциальные уязвимости для защиты активов пользователей.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
16 Лайков
Награда
16
6
Поделиться
комментарий
0/400
OnChainDetective
· 7ч назад
заметил эту атаку раньше... ошибка новичка с переполнением целого числа. когда же разработчики научатся использовать safeMath, смh
Посмотреть ОригиналОтветить0
AirdropGrandpa
· 7ч назад
Снова переполнение стека, это правда печально.
Посмотреть ОригиналОтветить0
CryptoSurvivor
· 7ч назад
Такие маленькие уязвимости могут быть обнаружены, это действительно мелочные дела.
Посмотреть ОригиналОтветить0
FrogInTheWell
· 7ч назад
Снова переполнение... Вы понимаете безопасность аудита?
Poolz подвергся атаке с переполнением арифметики, убытки составили 665 000 долларов США, пострадали многосетевые проекты.
Poolz подвергся атаке переполнения арифметики, убытки составили около 665 тысяч долларов США
На днях несколько проектов Poolz в различных блокчейн-сетях подверглись атакам, в результате которых было похищено большое количество токенов на общую сумму около 665000 долларов США. Атака произошла 15 марта 2023 года и затронула контракты Poolz на таких сетях, как Ethereum, BNB Chain и Polygon.
Атакующий использовал уязвимость переполнения арифметики в смарт-контракте Poolz. Конкретно, проблема заключалась в функции getArraySum в функции CreateMassPools. Эта функция при расчете начальной ликвидности пула из-за переполнения целого числа позволила атакующему создать иллюзию большой ликвидности, переведя лишь небольшое количество токенов.
Процесс атаки следующий:
Нападающий сначала обменял небольшое количество токенов MNZ на одном из децентрализованных обменников.
Затем был вызван уязвимый функция CreateMassPools. Эта функция позволяет пользователям массово создавать ликвидные пулы и предоставлять первоначальную ликвидность.
При вычислении начальной суммы ликвидности произошел переполнение целого числа в функции getArraySum. Сумма массива, переданная злоумышленником, превысила максимальное значение, которое может быть представлено uint256, что привело к тому, что возвращаемое значение функции стало равно 1.
Однако контракт по-прежнему использовал исходные значения массива _StartAmount при записи свойств пула. Это привело к тому, что атакующий фактически перевел только 1 токен, но был зафиксирован как обладающий огромной ликвидностью.
Наконец, злоумышленник вызывает функцию withdraw для вывода средств, завершив атаку.
Данный инцидент выявил опасности переполнения арифметических операций в смарт-контрактах. Чтобы предотвратить подобные проблемы, разработчики должны рассмотреть возможность использования более новых версий компилятора Solidity, которые автоматически выполняют проверки на переполнение. Для проектов, использующих более старые версии Solidity, можно использовать библиотеку SafeMath от OpenZeppelin для обработки целочисленных операций, чтобы избежать риска переполнения.
Эта атака снова подчеркивает необходимость особого внимания к безопасности арифметических операций при разработке и аудите смарт-контрактов. В то же время, команде проекта следует регулярно проводить аудиты безопасности, чтобы своевременно выявлять и исправлять потенциальные уязвимости для защиты активов пользователей.