Уразливість миттєвого зберігання призвела до атаки на проект у блокчейні на 300 000 доларів США. Експерти аналізують поради щодо запобігання.

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

Аналіз атаки у блокчейні на суму 300 000 доларів, викликаної вразливістю миттєвого зберігання

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

Фон

Атака сталася в мережі Ethereum, метою якої був проект з торгівлі з важелем. Атакуючий скористався вразливістю, пов'язаною з миттєвим зберіганням у контракті проекту.

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

Попередні знання

Версія Solidity 0.8.24 ввела функцію миттєвого зберігання (transient storage), яка є новим місцем для зберігання даних. Основні характеристики включають:

  • Низькі витрати на газ: операції TSTORE та TLOAD споживають фіксовано 100 газу
  • Тривалість даних у транзакції: дані залишаються дійсними протягом усієї транзакції
  • Автоматичне очищення: автоматичне скидання до нуля після завершення交易.

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

Причини вразливості

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

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

Процес атаки

  1. Зловмисник створює два шкідливі токени A та B і створює для них ліквідність у певному DEX.
  2. Викликати функцію initialize цільового контракту, щоб створити ринкову платформу для маржинальної торгівлі з токеном A в якості застави та токеном B в якості боргового токена.
  3. Виклик функції mint для внесення токенів B для карбування токенів з важелем, при цьому було виконано дві операції тимчасового зберігання.
  4. Створіть адресу, яка має таке ж значення тимчасового зберігання, як і другий раз, для шкідливого контракту.
  5. Використовуючи цей шкідливий контракт, викликається функція зворотного виклику цільового контракту, обходячи перевірку прав для виведення токенів.
  6. Нарешті, через атаку на контракт (токен A) знову викликається функція зворотного виклику, щоб вивести інші токени (такі як WBTC, WETH) для отримання прибутку.

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

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

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

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

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

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

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

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

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

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

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

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

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

Зловмисники вкрали близько 300 тисяч доларів активів, включаючи:

  • 17 814,8626 доларів США
  • 1,4085 WBTC
  • 119.871 ЗХ.

Потім зловмисник обміняв WBTC та USDC на WETH, врешті-решт перевівши 193,1428 WETH у певний мікс-сервіс.

Початковий капітал нападника (0.3 ETH) також походить з цього сервісу змішування.

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

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

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

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

  1. Після закінчення виклику функції негайно використовуйте tstore(key, 0) для очищення значень у тимчасовому сховищі.
  2. Посилити аудит коду контрактів та безпекове тестування.
  3. Обережно використовуйте нові мовні особливості, повністю усвідомлюючи їх потенційні ризики.
WBTC1.06%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
PensionDestroyervip
· 17год тому
Знову невдахи надіслали
Переглянути оригіналвідповісти на0
TestnetFreeloadervip
· 17год тому
А це що, безкоштовно хапнути? Навіть свій проект не можуть втримати.
Переглянути оригіналвідповісти на0
LootboxPhobiavip
· 17год тому
Погано, погано, ще один брат наступив на міну.
Переглянути оригіналвідповісти на0
BearMarketMonkvip
· 17год тому
Витягнули не лише ягнята, але й контрактні дірки.
Переглянути оригіналвідповісти на0
DeFiAlchemistvip
· 17год тому
ах, ще одна жертва темним мистецтвам експлуатації смарт-контрактів... *налаштовує кристальну кулю* ці ефемерні вразливості зберігання подібні до тріщин у герметичному запечатанні алхімії протоколу
Переглянути оригіналвідповісти на0
TestnetNomadvip
· 17год тому
Погано, знову обдерли.
Переглянути оригіналвідповісти на0
  • Закріпити