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

Уразливість миттєвого зберігання призвела до крадіжки активів на суму 300 тисяч доларів

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

Фон

Версія Solidity 0.8.24 впроваджує функцію тимчасового зберігання на основі EIP-1153. Це нове місце зберігання даних, яке має на меті забезпечити розробників низькими витратами та ефективним тимчасовим зберіганням під час транзакцій. Тимчасове зберігання реалізується за допомогою двох нових інструкцій EVM: TSTORE і TLOAD, які мають низькі витрати на газ, постійність у межах транзакції та автоматичне очищення.

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

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

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

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

Кроки атаки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Смертельні залишки: пограбування на ланцюзі на 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, що були переведені на цю платформу.

Підсумок

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

ETH6.72%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 7
  • Поділіться
Прокоментувати
0/400
VitaliksTwinvip
· 2год тому
Ця хвиля підсумування все ще витрачає газ.
Переглянути оригіналвідповісти на0
CountdownToBrokevip
· 3год тому
30w знову прийшов брат
Переглянути оригіналвідповісти на0
0xLuckboxvip
· 3год тому
Знову вкрали триста тисяч~смартконтракти бережуть спокій, га
Переглянути оригіналвідповісти на0
OnchainGossipervip
· 3год тому
Знову виявили вразливість, чи не так?
Переглянути оригіналвідповісти на0
GateUser-0717ab66vip
· 3год тому
30w також сміє згадувати
Переглянути оригіналвідповісти на0
VibesOverChartsvip
· 3год тому
30w? Це всього лише торгові збори за один день.
Переглянути оригіналвідповісти на0
DefiPlaybookvip
· 3год тому
На основі вибірки даних такі вразливості в зберіганні призводять до рівня збитків до 86,3%, будьте обережні!
Переглянути оригіналвідповісти на0
  • Закріпити