Вразливість тимчасового зберігання призвела до 300 тисяч доларів у блокчейні крадіжки в проектах маржинальної торгівлі.

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

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

30 березня 2025 року на мережі Ethereum відбулася крадіжка на понад 300 тисяч доларів у блоці. За даними системи моніторингу безпеки, проект з маржинальної торгівлі SIR.trading зазнав нападу і зазнав значних втрат. Команда з безпеки провела глибокий аналіз цього інциденту, і тепер публікує результати розслідування.

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

Передумови події

Версія Solidity 0.8.24, яка вийде в січні 2024 року, вводить функцію миттєвого зберігання (transient storage). Це нове місце зберігання даних, призначене для забезпечення розробників дешевим, тимчасовим способом зберігання, дійсним під час транзакцій. Миттєве зберігання реалізується за допомогою двох нових інструкцій EVM TSTORE і TLOAD, має низьку вартість газу, постійність у межах транзакції та автоматичне очищення.

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

Причини атаки

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

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

Процес атаки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Згідно з даними інструментів аналізу у блокчейні, зловмисники вкрали приблизно 300 тисяч доларів США активів, зокрема 17,814.8626 USDC, 1.4085 WBTC та 119.871 WETH. Після цього зловмисники обміняли та перевели ці активи:

  • WBTC обмінюється на 63.5596 WETH
  • USDC обмінюється на 9.7122 WETH
  • Загалом 193.1428 WETH було переведено в певну анонімну мережу

Варто зазначити, що початкові кошти зловмисника надійшли з анонімної мережі у розмірі 0.3 ETH.

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

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

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

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

  1. Згідно з бізнес-логікою, після завершення виклику функції негайно використовуйте tstore(key, 0) для очищення значень у миттєвому сховищі.
  2. Посилити аудит коду контракту та тестування безпеки, особливо звертаючи увагу на ризики використання нових функцій.
  3. Реалізація багаторівневої системи перевірки, яка не покладається лише на одне перевірку особи.
  4. Регулярно проводити оцінку безпеки, вчасно виявляти та усувати потенційні вразливості.

Ця подія ще раз нагадує нам про необхідність обережного підходу при впровадженні нових технологій, а також про важливість всебічної оцінки їхнього впливу на безпеку. Водночас постійний аудит безпеки та управління ризиками є критично важливими для захисту активів користувачів.

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
GhostChainLoyalistvip
· 07-23 20:02
Пропустити можливість знову - це ще один проект, обдурюючи людей, як лохів.
Переглянути оригіналвідповісти на0
HypotheticalLiquidatorvip
· 07-23 17:12
300 тисяч? Це те, що відбувається очищення ринку...
Переглянути оригіналвідповісти на0
P2ENotWorkingvip
· 07-20 21:17
вечірка проєкту знову спить
Переглянути оригіналвідповісти на0
BlockchainRetirementHomevip
· 07-20 21:16
Знову бачимо смартконтракти Обман для дурнів
Переглянути оригіналвідповісти на0
DYORMastervip
· 07-20 20:49
На вигляд гарно, але не працює, код навіть не перевіряють.
Переглянути оригіналвідповісти на0
DecentralizedEldervip
· 07-20 20:47
Взяв і забрав, проект справді дуже поганий.
Переглянути оригіналвідповісти на0
  • Закріпити