Проект Poolz подвергся атаке из-за уязвимости переполнения арифметики, убытки составили около 665000 долларов США
Недавно инцидент с атакой на проект Poolz привлек широкое внимание криптовалютного сообщества. Согласно данным мониторинга в блокчейне, атака произошла 15 марта 2023 года и затронула три сети: Ethereum, BNB Chain и Polygon. Злоумышленники использовали уязвимость переполнения арифметики в смарт-контракте, успешно похитив большое количество токенов на общую сумму около 665000 долларов.
Детали атаки
Злоумышленник осуществил эту атаку, выполнив следующие шаги:
Сначала на децентрализованной бирже обменял определенное количество токенов MNZ.
Затем была вызвана функция CreateMassPools в контракте Poolz. Эта функция должна позволить пользователям массово создавать ликвидные пулы и предоставлять начальную ликвидность, но в ней есть серьезные уязвимости.
Проблема возникает в функции getArraySum. Эта функция предназначена для вычисления количества первоначальной ликвидности, предоставляемой пользователем, но не справляется с ситуацией переполнения целых чисел.
Злоумышленник искусно сконструировал входные параметры, так что массив _StartAmount содержит числа, превышающие максимальное значение uint256. Это приводит к переполнению суммы, и в конечном итоге возвращаемое значение составляет 1.
Поскольку контракт использует исходное значение _StartAmount при записи атрибутов пула, а не фактическое количество токенов, переведенных в пул, злоумышленнику достаточно внести 1 токен, чтобы создать пул с ликвидностью, значительно превышающей реальную.
В конце концов, злоумышленник вызвал функцию withdraw и вывел большое количество несанкционированных токенов, завершив весь процесс атаки.
Украденные активы
Атака привела к убыткам различных токенов, включая, но не ограничиваясь:
2 805 805 MEE
525 134 ESNC
774,997 ДОН
2 007 504 238 ПЛО
6 510 689 км
2 521 065 ПУЛЗ
35,976,107 DCD
760,845 ПОРТХ
Злоумышленники обменяли часть украденных токенов на BNB, но на момент составления отчета эти средства еще не были переведены с адреса злоумышленника.
Рекомендации по предотвращению
Чтобы предотвратить подобные уязвимости переполнения арифметики, эксперты рекомендуют принять следующие меры:
Используйте более новые версии компилятора Solidity, которые автоматически выполняют проверку переполнения во время компиляции.
Для проектов, использующих более старые версии Solidity, рекомендуется использовать библиотеку SafeMath от OpenZeppelin для обработки целочисленных операций, чтобы избежать проблем с переполнением.
Провести всесторонний аудит кода, особенно сосредоточившись на частях, связанных с большими числами.
Внедрить строгую проверку входных данных, чтобы гарантировать, что параметры, предоставленные пользователем, находятся в разумных пределах.
Рассмотрите возможность добавления таких механизмов безопасности, как мультиподпись или замок времени, в ключевые операции.
Этот инцидент еще раз подчеркивает важность безопасности смарт-контрактов, напоминает разработчикам и командам проектов о необходимости оставаться бдительными и постоянно улучшать безопасность кода. В то же время, это также напоминает пользователям быть особенно осторожными при взаимодействии с проектами децентрализованного финансирования, особенно при участии в новых или недостаточно проверенных проектах.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
18 Лайков
Награда
18
8
Поделиться
комментарий
0/400
GateUser-a5fa8bd0
· 07-23 01:44
Снова проблемы с контрактом, тьфу-тьфу.
Посмотреть ОригиналОтветить0
SellTheBounce
· 07-20 10:40
Еще один неудачник падение до нуля, знакомый сюжет
Посмотреть ОригиналОтветить0
DataBartender
· 07-20 02:14
Слушая вас, я выпью чашку чая.
Посмотреть ОригиналОтветить0
GasFeeCrying
· 07-20 02:13
Опять черная история, ускользнула, ускользнула.
Посмотреть ОригиналОтветить0
LazyDevMiner
· 07-20 02:13
Еще один случай предупреждения о нулевом переполнении
Посмотреть ОригиналОтветить0
DEXRobinHood
· 07-20 02:13
Еще черная компания, кто следующий?
Посмотреть ОригиналОтветить0
SandwichVictim
· 07-20 02:08
Еще один проект, который разыгрывайте людей как лохов, смылся.
Проект Poolz подвергся атаке арифметического переполнения, потеряв 665000 долларов США в шифровании активов.
Проект Poolz подвергся атаке из-за уязвимости переполнения арифметики, убытки составили около 665000 долларов США
Недавно инцидент с атакой на проект Poolz привлек широкое внимание криптовалютного сообщества. Согласно данным мониторинга в блокчейне, атака произошла 15 марта 2023 года и затронула три сети: Ethereum, BNB Chain и Polygon. Злоумышленники использовали уязвимость переполнения арифметики в смарт-контракте, успешно похитив большое количество токенов на общую сумму около 665000 долларов.
Детали атаки
Злоумышленник осуществил эту атаку, выполнив следующие шаги:
Сначала на децентрализованной бирже обменял определенное количество токенов MNZ.
Затем была вызвана функция CreateMassPools в контракте Poolz. Эта функция должна позволить пользователям массово создавать ликвидные пулы и предоставлять начальную ликвидность, но в ней есть серьезные уязвимости.
Проблема возникает в функции getArraySum. Эта функция предназначена для вычисления количества первоначальной ликвидности, предоставляемой пользователем, но не справляется с ситуацией переполнения целых чисел.
Злоумышленник искусно сконструировал входные параметры, так что массив _StartAmount содержит числа, превышающие максимальное значение uint256. Это приводит к переполнению суммы, и в конечном итоге возвращаемое значение составляет 1.
Поскольку контракт использует исходное значение _StartAmount при записи атрибутов пула, а не фактическое количество токенов, переведенных в пул, злоумышленнику достаточно внести 1 токен, чтобы создать пул с ликвидностью, значительно превышающей реальную.
В конце концов, злоумышленник вызвал функцию withdraw и вывел большое количество несанкционированных токенов, завершив весь процесс атаки.
Украденные активы
Атака привела к убыткам различных токенов, включая, но не ограничиваясь:
Злоумышленники обменяли часть украденных токенов на BNB, но на момент составления отчета эти средства еще не были переведены с адреса злоумышленника.
Рекомендации по предотвращению
Чтобы предотвратить подобные уязвимости переполнения арифметики, эксперты рекомендуют принять следующие меры:
Используйте более новые версии компилятора Solidity, которые автоматически выполняют проверку переполнения во время компиляции.
Для проектов, использующих более старые версии Solidity, рекомендуется использовать библиотеку SafeMath от OpenZeppelin для обработки целочисленных операций, чтобы избежать проблем с переполнением.
Провести всесторонний аудит кода, особенно сосредоточившись на частях, связанных с большими числами.
Внедрить строгую проверку входных данных, чтобы гарантировать, что параметры, предоставленные пользователем, находятся в разумных пределах.
Рассмотрите возможность добавления таких механизмов безопасности, как мультиподпись или замок времени, в ключевые операции.
Этот инцидент еще раз подчеркивает важность безопасности смарт-контрактов, напоминает разработчикам и командам проектов о необходимости оставаться бдительными и постоянно улучшать безопасность кода. В то же время, это также напоминает пользователям быть особенно осторожными при взаимодействии с проектами децентрализованного финансирования, особенно при участии в новых или недостаточно проверенных проектах.