Poolz подвергся атаке переполнения арифметики, убытки составили около 665000 долларов США
Недавно платформа Poolz подверглась атаке в сетях Ethereum, Binance Smart Chain и Polygon, в результате чего было украдено большое количество токенов на общую сумму около 665 000 долларов США. Атака произошла 15 марта 2023 года в 3:16 утра (UTC).
Согласно данным мониторинга в блокчейне, в этой атаке участвуют различные токены, включая MEE, ESNC, DON, ASW, KMON, POOLZ и другие. Злоумышленники уже обменяли часть украденных токенов на BNB, но в настоящее время средства еще не были переведены.
Злоумышленник использовал уязвимость переполнения арифметики в контракте Poolz. Конкретно, проблема заключалась в функции getArraySum в функции CreateMassPools. Эта функция при вычислении количества токенов переполнила значение, так как сумма превышала максимальное значение типа uint256, в результате чего возвращаемое значение стало равным 1.
Процесс атаки следующий:
Нападающий сначала обменял некоторые токены MNZ через один DEX.
Затем вызывается функция CreateMassPools, используя уязвимость функции getArraySum. Массив _StartAmount, переданный атакующим, содержит очень большие значения, что приводит к переполнению при сложении.
Поскольку функция CreatePool использует _StartAmount для записи свойств пула, злоумышленник фактически переводит только 1 токен, но система фиксирует огромное значение.
Наконец, злоумышленник вызывает функцию withdraw для вывода токенов, завершив атаку.
Чтобы предотвратить повторение подобных проблем, рекомендуется разработчикам использовать более новые версии Solidity для компиляции, так как новые версии автоматически выполняют проверку на переполнение. Для проектов, использующих низкие версии Solidity, можно рассмотреть возможность использования библиотеки SafeMath от OpenZeppelin для решения проблемы переполнения целых чисел.
Это событие снова напоминает нам о том, что при разработке смарт-контрактов необходимо быть особенно осторожными при выполнении математических операций, особенно когда речь идет о вычислениях с большими числами. В то же время регулярное проведение аудита кода и проверок безопасности является важной мерой для обеспечения безопасности проекта.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
8 Лайков
Награда
8
5
Репост
Поделиться
комментарий
0/400
ValidatorVibes
· 8ч назад
смех... еще одна атака переполнения. Протокол аудиты это буквально управление 101 frfr
Посмотреть ОригиналОтветить0
MetaverseVagrant
· 8ч назад
Снова черно и мрачно, 660 тысяч также смеют называть Хакером
Poolz подвергся атаке переполнения арифметики, потеряв 665000 долларов США.
Poolz подвергся атаке переполнения арифметики, убытки составили около 665000 долларов США
Недавно платформа Poolz подверглась атаке в сетях Ethereum, Binance Smart Chain и Polygon, в результате чего было украдено большое количество токенов на общую сумму около 665 000 долларов США. Атака произошла 15 марта 2023 года в 3:16 утра (UTC).
Согласно данным мониторинга в блокчейне, в этой атаке участвуют различные токены, включая MEE, ESNC, DON, ASW, KMON, POOLZ и другие. Злоумышленники уже обменяли часть украденных токенов на BNB, но в настоящее время средства еще не были переведены.
Злоумышленник использовал уязвимость переполнения арифметики в контракте Poolz. Конкретно, проблема заключалась в функции getArraySum в функции CreateMassPools. Эта функция при вычислении количества токенов переполнила значение, так как сумма превышала максимальное значение типа uint256, в результате чего возвращаемое значение стало равным 1.
Процесс атаки следующий:
Нападающий сначала обменял некоторые токены MNZ через один DEX.
Затем вызывается функция CreateMassPools, используя уязвимость функции getArraySum. Массив _StartAmount, переданный атакующим, содержит очень большие значения, что приводит к переполнению при сложении.
Поскольку функция CreatePool использует _StartAmount для записи свойств пула, злоумышленник фактически переводит только 1 токен, но система фиксирует огромное значение.
Наконец, злоумышленник вызывает функцию withdraw для вывода токенов, завершив атаку.
Чтобы предотвратить повторение подобных проблем, рекомендуется разработчикам использовать более новые версии Solidity для компиляции, так как новые версии автоматически выполняют проверку на переполнение. Для проектов, использующих низкие версии Solidity, можно рассмотреть возможность использования библиотеки SafeMath от OpenZeppelin для решения проблемы переполнения целых чисел.
Это событие снова напоминает нам о том, что при разработке смарт-контрактов необходимо быть особенно осторожными при выполнении математических операций, особенно когда речь идет о вычислениях с большими числами. В то же время регулярное проведение аудита кода и проверок безопасности является важной мерой для обеспечения безопасности проекта.