Проект Poolz зазнав атаки через переповнення арифметичних обчислень, збитки приблизно 66,5 тисяч доларів США
Нещодавно безпековий інцидент, що стався з мультиблокчейновим проектом Poolz, привернув увагу галузі. Згідно з даними моніторингу блокчейнів, зловмисники використали вразливість переповнення арифметики в смарт-контракті, успішно вкрали велику кількість токенів з проекту Poolz на мережах Ethereum, BNB Chain та Polygon, загальна вартість яких становить приблизно 66,5 тисячі доларів.
Атака сталася близько 3:16 ранку за всесвітнім координованим часом 15 березня 2023 року. Вкрадені активи включають різні ERC-20 токени, такі як MEE, ESNC, DON, ASW, KMON, POOLZ тощо. Зловмисники потім обміняли частину токенів на BNB, але наразі ці кошти ще не були переміщені.
Основна проблема атаки полягає в функції CreateMassPools проекту Poolz. Ця функція спочатку використовувалася для масового створення ліквідних пулів і надання початкової ліквідності, але в ній є вразливість переповнення цілого числа в функції getArraySum. Зловмисники, шляхом ретельно підібраних вхідних параметрів, змусили суму перевищити межі uint256, внаслідок чого значення, що повертається функцією, дорівнює 1.
Однак функція CreatePool використовує первісний параметр _StartAmount при запису атрибутів пулу, а не фактичну кількість токенів, що були переведені. Це призвело до того, що зловмисник може перевести лише 1 токен, щоб зафіксувати початкову ліквідність, що значно перевищує фактичну кількість. Потім зловмисник здійснив операцію виведення, викликавши функцію withdraw, тим самим досягнувши мети атаки.
Щоб запобігти повторенню таких проблем, рекомендується розробникам використовувати новіші версії Solidity для компіляції, щоб скористатися вбудованими функціями перевірки переповнення. Для проектів, що використовують старі версії Solidity, можна розглянути можливість впровадження бібліотеки SafeMath від OpenZeppelin для вирішення проблеми переповнення цілих чисел.
Ця подія ще раз нагадує нам про важливість безпеки та аудиту коду під час розробки смарт-контрактів. Навіть на вигляд незначна арифметична помилка може бути використана зловмисниками, що призведе до величезних економічних втрат.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
9 лайків
Нагородити
9
5
Репост
Поділіться
Прокоментувати
0/400
TrustMeBro
· 08-10 11:16
Ге-гей, це всього лише дрібні гроші, наступний.
Переглянути оригіналвідповісти на0
DeFiAlchemist
· 08-10 11:15
*налагоджує містичні діаграми* ще один протокол падає в темну арифметику... числа ніколи не брешуть
Переглянути оригіналвідповісти на0
RooftopReserver
· 08-10 11:13
Знову найкращий час для лежання на даху.
Переглянути оригіналвідповісти на0
HashBard
· 08-10 10:54
сумно... ще один день, ще одна вразливість переповнення
Poolz зазнала атаки переповнення арифметики, втративши 665 тисяч доларів США.
Проект Poolz зазнав атаки через переповнення арифметичних обчислень, збитки приблизно 66,5 тисяч доларів США
Нещодавно безпековий інцидент, що стався з мультиблокчейновим проектом Poolz, привернув увагу галузі. Згідно з даними моніторингу блокчейнів, зловмисники використали вразливість переповнення арифметики в смарт-контракті, успішно вкрали велику кількість токенів з проекту Poolz на мережах Ethereum, BNB Chain та Polygon, загальна вартість яких становить приблизно 66,5 тисячі доларів.
Атака сталася близько 3:16 ранку за всесвітнім координованим часом 15 березня 2023 року. Вкрадені активи включають різні ERC-20 токени, такі як MEE, ESNC, DON, ASW, KMON, POOLZ тощо. Зловмисники потім обміняли частину токенів на BNB, але наразі ці кошти ще не були переміщені.
Основна проблема атаки полягає в функції CreateMassPools проекту Poolz. Ця функція спочатку використовувалася для масового створення ліквідних пулів і надання початкової ліквідності, але в ній є вразливість переповнення цілого числа в функції getArraySum. Зловмисники, шляхом ретельно підібраних вхідних параметрів, змусили суму перевищити межі uint256, внаслідок чого значення, що повертається функцією, дорівнює 1.
Однак функція CreatePool використовує первісний параметр _StartAmount при запису атрибутів пулу, а не фактичну кількість токенів, що були переведені. Це призвело до того, що зловмисник може перевести лише 1 токен, щоб зафіксувати початкову ліквідність, що значно перевищує фактичну кількість. Потім зловмисник здійснив операцію виведення, викликавши функцію withdraw, тим самим досягнувши мети атаки.
Щоб запобігти повторенню таких проблем, рекомендується розробникам використовувати новіші версії Solidity для компіляції, щоб скористатися вбудованими функціями перевірки переповнення. Для проектів, що використовують старі версії Solidity, можна розглянути можливість впровадження бібліотеки SafeMath від OpenZeppelin для вирішення проблеми переповнення цілих чисел.
Ця подія ще раз нагадує нам про важливість безпеки та аудиту коду під час розробки смарт-контрактів. Навіть на вигляд незначна арифметична помилка може бути використана зловмисниками, що призведе до величезних економічних втрат.