Poolz зазнав атаки через вразливість переповнення арифметичних операцій, понесені збитки близько 66,5 тисяч доларів США
Нещодавно проекти Poolz на Ethereum, Binance Smart Chain та мережі Polygon зазнали атаки, внаслідок якої було вкрадено кілька токенів на загальну суму близько 665 тисяч доларів США. Атака сталася близько 3:16 ранку UTC 15 березня 2023 року.
Згідно з даними на блокчейні, ця атака стосується кількох токенів, включаючи MEE, ESNC, DON, ASW, KMON, POOLZ тощо. Зловмисники вже обміняли частину вкрадених токенів на BNB, але наразі ці кошти ще не були переміщені.
Атака в основному використовувала арифметичну переповненість у контракті Poolz. Конкретно, проблема полягає у функції getArraySum у функції CreateMassPools. Ця функція не обробляє великі значення належним чином під час обчислення початкової ліквідності для масового створення пулів, що призводить до переповнення цілого числа.
Зловмисник, шляхом ретельно побудованих вхідних параметрів, змушує функцію getArraySum повертати значення 1, тоді як фактичний запис _StartAmount є дуже великою цифрою. Таким чином, зловмиснику потрібно лише внести 1 токен, щоб зафіксувати в системі велику кількість початкової ліквідності. Після цього зловмисник викликає функцію withdraw для вилучення цієї "фальшивої" ліквідності, завершуючи атаку.
Щоб запобігти повторенню подібних проблем, експерти радять розробникам використовувати новіші версії компілятора Solidity, оскільки нові версії автоматично виконують перевірки переповнення. Для проектів, які використовують низькі версії Solidity, можна розглянути можливість впровадження бібліотеки SafeMath від OpenZeppelin для обробки цілочисельних операцій, щоб уникнути ризику переповнення.
Ця подія ще раз нагадує нам, що безпека арифметичних операцій є надзвичайно важливою в розробці смарт-контрактів. Розробники повинні бути постійно насторожі щодо можливих проблем з переповненням цілих чисел і вжити відповідних заходів для захисту безпеки контракту.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
12 лайків
Нагородити
12
7
Поділіться
Прокоментувати
0/400
CryptoPunster
· 07-09 19:50
Добре, знову проблеми з контрактами, цибулю вже обдурюють людей, як лохів.
Переглянути оригіналвідповісти на0
BoredRiceBall
· 07-08 04:48
Ще одна купа вразливостей виявлена!
Переглянути оригіналвідповісти на0
NotFinancialAdviser
· 07-06 20:27
Суми втрат не такі великі, так?
Переглянути оригіналвідповісти на0
LiquidationSurvivor
· 07-06 20:25
Знову бачимо проект голяка
Переглянути оригіналвідповісти на0
SelfSovereignSteve
· 07-06 20:14
Ще один Аірдроп обдурювати людей, як лохів проект приречений
Poolz зазнала атаки переповнення арифметичних даних, втратила 66500 доларів США
Poolz зазнав атаки через вразливість переповнення арифметичних операцій, понесені збитки близько 66,5 тисяч доларів США
Нещодавно проекти Poolz на Ethereum, Binance Smart Chain та мережі Polygon зазнали атаки, внаслідок якої було вкрадено кілька токенів на загальну суму близько 665 тисяч доларів США. Атака сталася близько 3:16 ранку UTC 15 березня 2023 року.
Згідно з даними на блокчейні, ця атака стосується кількох токенів, включаючи MEE, ESNC, DON, ASW, KMON, POOLZ тощо. Зловмисники вже обміняли частину вкрадених токенів на BNB, але наразі ці кошти ще не були переміщені.
Атака в основному використовувала арифметичну переповненість у контракті Poolz. Конкретно, проблема полягає у функції getArraySum у функції CreateMassPools. Ця функція не обробляє великі значення належним чином під час обчислення початкової ліквідності для масового створення пулів, що призводить до переповнення цілого числа.
Зловмисник, шляхом ретельно побудованих вхідних параметрів, змушує функцію getArraySum повертати значення 1, тоді як фактичний запис _StartAmount є дуже великою цифрою. Таким чином, зловмиснику потрібно лише внести 1 токен, щоб зафіксувати в системі велику кількість початкової ліквідності. Після цього зловмисник викликає функцію withdraw для вилучення цієї "фальшивої" ліквідності, завершуючи атаку.
Щоб запобігти повторенню подібних проблем, експерти радять розробникам використовувати новіші версії компілятора Solidity, оскільки нові версії автоматично виконують перевірки переповнення. Для проектів, які використовують низькі версії Solidity, можна розглянути можливість впровадження бібліотеки SafeMath від OpenZeppelin для обробки цілочисельних операцій, щоб уникнути ризику переповнення.
Ця подія ще раз нагадує нам, що безпека арифметичних операцій є надзвичайно важливою в розробці смарт-контрактів. Розробники повинні бути постійно насторожі щодо можливих проблем з переповненням цілих чисел і вжити відповідних заходів для захисту безпеки контракту.