Вразливість транзиторного зберігання призвела до атаки на проекти Ethereum на суму 300 000 доларів США: команда безпеки аналізує ключові деталі

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

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

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

Фонові знання

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

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

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

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

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

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

Кроки атаки

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

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

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

  4. Коли DEX-пул виконує операцію обміну, буде викликано функцію uniswapV3SwapCallback контракту Vault. Ця функція використовує tload для отримання значення з тимчасового сховища для перевірки особи виклику, а також зберігає кількість, що випускається, у другому тимчасовому сховищі.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Потім зловмисник обміняв WBTC та USDC на WETH, у сумі 193.1428 WETH було переведено в певний міксер. Початкове фінансування зловмисника походило з 0.3 ETH, переведених у цей міксер.

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

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

Рекомендації з безпеки

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

  2. Посилити аудит коду контракту та безпечне тестування, щоб уникнути подібних вразливостей.

  3. Обережно використовуйте нововведені функції, повністю розуміючи їх потенційні ризики.

  4. Встановіть механізм багатофакторної перевірки, не покладайтеся лише на один метод автентифікації.

  5. Регулярно проводити оцінку безпеки та сканування на вразливості, своєчасно виправляти виявлені проблеми.

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

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 7
  • Поділіться
Прокоментувати
0/400
DegenWhisperervip
· 20год тому
Обман для дурнів одного дня знову почався
Переглянути оригіналвідповісти на0
PensionDestroyervip
· 20год тому
30w знову змащено
Переглянути оригіналвідповісти на0
AirDropMissedvip
· 20год тому
Знову обдурювали людей, як лохів.
Переглянути оригіналвідповісти на0
ruggedNotShruggedvip
· 20год тому
Масштаб зменшився. Зараз ця атака вже не є серйозною справою.
Переглянути оригіналвідповісти на0
SillyWhalevip
· 20год тому
Знову якісь маленькі проекти обдурюють людей, як лохів.
Переглянути оригіналвідповісти на0
RugPullAlarmvip
· 20год тому
Ще один контракт, який не був добре очищений, був викритий.
Переглянути оригіналвідповісти на0
SwingingLittleLeekvip
· 20год тому
Нещодавно Ethereum коливається вище 3000! У майбутньому він перевищить 3000!
Переглянути оригіналвідповісти на0
  • Закріпити