30 тисяч доларів у блокчейні: уразливість тимчасового зберігання спричинила проблеми для проектів Маржинальної торгівлі

robot
Генерація анотацій у процесі

Смертельний залишок: напад на 300 тисяч доларів у блокчейні, що виник через транзитне зберігання

30 березня 2025 року певна система безпеки виявила, що проект з леверидж-трейдингу на Ethereum у блокчейні зазнав атаки, внаслідок чого було втрачено активів на понад 300 тисяч доларів. Команда безпеки провела глибокий аналіз цього інциденту, і тепер ділиться результатами:

Фон

Версія Solidity 0.8.24 (випущена в січні 2024 року) вводить особливість тимчасового зберігання на основі EIP-1153. Це нове місце для зберігання даних, яке призначене для забезпечення розробників низькими витратами та ефективним тимчасовим зберіганням під час транзакцій.

Основні характеристики моментального зберігання включають:

  1. Низька вартість gas: газова вартість операцій TSTORE та TLOAD становить 100.
  2. Постійність даних у транзакції: дані залишаються дійсними протягом усієї транзакції.
  3. Автоматичне очищення: після завершення交易, тимчасове сховище автоматично скидається на нуль.

Смертельний залишок: пограбування у 300 тисяч доларів, спричинене транзитним сховищем у блокчейні

Джерело атаки

Основною причиною цього інциденту є те, що значення, що зберігаються в tstore для тимчасового зберігання у функції, не очищуються після закінчення виклику функції. Це дозволяє зловмисникам використовувати цю особливість для створення певних шкідливих адрес, обходячи перевірку прав для виведення токенів.

Смертельний залишок: крадіжка у блокчейні на 300 000 доларів, викликана тимчасовими зберіганнями

Процес атаки

  1. Зловмисник створює два шкідливі токени A та B, на певному DEX створює пули для цих токенів та вводить ліквідність, при цьому токен A є атакуючим контрактом.

  2. Атакуючий викликає функцію initialize контракту Vault, використовуючи токен A як забезпечення, а токен B як борговий токен для створення ринкових механізмів з важелем APE-21.

  3. Зловмисник викликає функцію mint контракту Vault, вносячи борговий токен B для випуску токена важеля APE. У цьому процесі відбувається дві операції з тимчасовим зберіганням: спочатку зберігається адреса певного пулу DEX, а потім зберігається кількість випущених токенів.

Смертельний залишок: пограбування у блокчейні на 300 000 доларів, викликане тимчасовим зберіганням

  1. Зловмисник створює шкідливий контракт спеціальним способом, адреса якого відповідає значенню другого миттєвого сховища.

  2. Зловмисник безпосередньо викликає функцію зворотного виклику контракту Vault через цей шкідливий контракт для виведення токенів. Оскільки значення в тимчасовому сховищі не були очищені, це призводить до помилкового проходження перевірки особи виклику.

  3. Нарешті, зловмисник через атаку на контракт (токен A) викликає функцію зворотного виклику контракту Vault, щоб вивести інші токени з контракту Vault (такі як WBTC, WETH) для отримання прибутку.

Смертельний залишок: пограбування на 300 000 доларів у блокчейні, викликане транзитним зберіганням

Смертельні залишки: пограбування у блокчейні на 300 тисяч доларів, викликане трансентним зберіганням

Смертельний залишок: зловмисний напад на 300 000 доларів, викликаний транзитним зберіганням у блокчейні

Смертельний залишок: злочин у 30 тисяч доларів, спричинений тимчасовим зберіганням у блокчейні

Смертельні залишки: пограбування у 300 000 доларів, викликане транзитним зберіганням у блокчейні

Смертельний залишок: крадіжка у блокчейні на 300 тисяч доларів, спричинена тимчасовим сховищем

Смертельні залишки: справа про крадіжку у блокчейні на 300 тисяч доларів, спричинена транзитним зберіганням

Смертельні залишки: пограбування на 300 тисяч доларів, викликане транзитним зберіганням у блокчейні

Смертельний залишок: пограбування на 300 тисяч доларів, спричинене тимчасовим зберіганням у блокчейні

Смертельний залишок: злочин у 30 тисяч доларів у блокчейні, спричинений тимчасовим зберіганням

Смертельний залишок: пограбування на 300 тисяч доларів у блокчейні, спричинене тимчасовим зберіганням

Смертельний залишок: пограбування у 300 000 доларів у блокчейні, спричинене транзитним зберіганням

Смертельні залишки: злочин на $300,000 у блокчейні, викликаний тимчасовим зберіганням

Смертельний залишок: справа про 300 тисяч доларів у блокчейні, викликана транзитним зберіганням

Аналіз руху коштів

Згідно з аналізом інструментів у блокчейні, зловмисники викрали активи на суму приблизно 300 тисяч доларів, включаючи 17,814.8626 USDC, 1.4085 WBTC та 119.871 WETH. Ці активи були об'єднані та конвертовані в WETH, в кінцевому підсумку переведені до певного протоколу приватної торгівлі.

Початкові кошти нападника надходять з 0.3 ETH, що були переведені в цю приватну торгову угоду.

Підсумок та рекомендації

Основна суть цієї атаки полягає в тому, що зловмисник використав властивість транзитного зберігання, що дозволяє зберігати значення незмінними протягом усього періоду транзакції, тим самим обійшовши перевірку прав доступу до функцій зворотного виклику для отримання прибутку. Щоб запобігти подібним ситуаціям, рекомендується командам проекту:

  1. Відповідно до бізнес-логіки, після завершення виклику функції негайно використовуйте tstore(key, 0) для очищення значень у тимчасовому сховищі.
  2. Посилити аудит коду контракту та безпекове тестування.
  3. Обережно використовуйте нововведені функції, повністю усвідомлюючи їх потенційні ризики.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
LayerZeroHerovip
· 08-02 23:27
Атака обов'язково має мати бекдор
Переглянути оригіналвідповісти на0
Web3ProductManagervip
· 08-01 12:37
Класична точка тертя UX-атаки
Переглянути оригіналвідповісти на0
OnchainDetectivevip
· 08-01 04:23
Код помилок призводить до збитків.
Переглянути оригіналвідповісти на0
SchrodingersFOMOvip
· 08-01 04:18
Не тестуючи, одразу потрапляй у небезпеку
Переглянути оригіналвідповісти на0
ProbablyNothingvip
· 08-01 04:18
Рано чи пізно з'являться вразливості.
Переглянути оригіналвідповісти на0
rug_connoisseurvip
· 08-01 04:11
Новий вразливість швидко заробляє гроші
Переглянути оригіналвідповісти на0
  • Закріпити