Уразливість миттєвого зберігання призвела до крадіжки активів на суму 300 тисяч доларів
30 березня 2025 року проектів з маржинальної торгівлі на блокчейні Ethereum зазнав атаки, що призвело до втрат активів на суму понад 300 тисяч доларів. Команда безпеки провела глибокий аналіз цього інциденту, результати якого тепер публікуємо:
Фон
Версія Solidity 0.8.24 впроваджує функцію тимчасового зберігання на основі EIP-1153. Це нове місце зберігання даних, яке має на меті забезпечити розробників низькими витратами та ефективним тимчасовим зберіганням під час транзакцій. Тимчасове зберігання реалізується за допомогою двох нових інструкцій EVM: TSTORE і TLOAD, які мають низькі витрати на газ, постійність у межах транзакції та автоматичне очищення.
Причини атаки
Основною причиною цього інциденту є те, що значення, яке використовується в tstore для тимчасового зберігання в функції, не очищається після завершення виклику функції. Зловмисник скористався цією особливістю, щоб створити певну шкідливу адресу, обійти перевірку прав і вивести токени.
Кроки атаки
Атакувальник створює два шкідливі токени A та B, і створює пул для цих токенів на певному DEX, а також вносить ліквідність.
Зловмисник викликає функцію ініціалізації контракту Vault, використовуючи токен A як заставу, а токен B як борговий токен для створення ринків з важелем.
Атакуючий викликає функцію mint контракту Vault, вносячи борговий токен B для випуску леверидж-токенів. У цьому процесі адреса DEX пулу та кількість випуску зберігаються в тимчасовій пам'яті.
Зловмисник створює шкідливий контракт, адреса якого збігається з другим значенням тимчасового зберігання.
Зловмисник викликає функцію зворотного виклику контракту Vault через шкідливий контракт для виведення токенів. Оскільки значення, що зберігаються у тимчасовій пам'яті, не було очищено, перевірка особи була помилково пройдена.
Нарешті, зловмисник через атаку на контракт (токен A) викликає функцію зворотного виклику контракту Vault, виводячи інші токени (такі як WBTC, WETH) для отримання прибутку.
Аналіз руху коштів
Зловмисник викрав близько 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) для очищення значень у транзиторному сховищі. Одночасно слід посилити аудит коду контракту та безпекове тестування, щоб запобігти подібним ситуаціям.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
7 лайків
Нагородити
7
7
Репост
Поділіться
Прокоментувати
0/400
VitaliksTwin
· 10год тому
Ця хвиля підсумування все ще витрачає газ.
Переглянути оригіналвідповісти на0
CountdownToBroke
· 10год тому
30w знову прийшов брат
Переглянути оригіналвідповісти на0
0xLuckbox
· 10год тому
Знову вкрали триста тисяч~смартконтракти бережуть спокій, га
Переглянути оригіналвідповісти на0
OnchainGossiper
· 10год тому
Знову виявили вразливість, чи не так?
Переглянути оригіналвідповісти на0
GateUser-0717ab66
· 10год тому
30w також сміє згадувати
Переглянути оригіналвідповісти на0
VibesOverCharts
· 10год тому
30w? Це всього лише торгові збори за один день.
Переглянути оригіналвідповісти на0
DefiPlaybook
· 10год тому
На основі вибірки даних такі вразливості в зберіганні призводять до рівня збитків до 86,3%, будьте обережні!
Вразливість тимчасового зберігання призвела до втрати 300 000 доларів США у проекті маржинальної торгівлі Ethereum.
Уразливість миттєвого зберігання призвела до крадіжки активів на суму 300 тисяч доларів
30 березня 2025 року проектів з маржинальної торгівлі на блокчейні Ethereum зазнав атаки, що призвело до втрат активів на суму понад 300 тисяч доларів. Команда безпеки провела глибокий аналіз цього інциденту, результати якого тепер публікуємо:
Фон
Версія Solidity 0.8.24 впроваджує функцію тимчасового зберігання на основі EIP-1153. Це нове місце зберігання даних, яке має на меті забезпечити розробників низькими витратами та ефективним тимчасовим зберіганням під час транзакцій. Тимчасове зберігання реалізується за допомогою двох нових інструкцій EVM: TSTORE і TLOAD, які мають низькі витрати на газ, постійність у межах транзакції та автоматичне очищення.
Причини атаки
Основною причиною цього інциденту є те, що значення, яке використовується в tstore для тимчасового зберігання в функції, не очищається після завершення виклику функції. Зловмисник скористався цією особливістю, щоб створити певну шкідливу адресу, обійти перевірку прав і вивести токени.
Кроки атаки
Атакувальник створює два шкідливі токени A та B, і створює пул для цих токенів на певному DEX, а також вносить ліквідність.
Зловмисник викликає функцію ініціалізації контракту Vault, використовуючи токен A як заставу, а токен B як борговий токен для створення ринків з важелем.
Атакуючий викликає функцію mint контракту Vault, вносячи борговий токен B для випуску леверидж-токенів. У цьому процесі адреса DEX пулу та кількість випуску зберігаються в тимчасовій пам'яті.
Зловмисник створює шкідливий контракт, адреса якого збігається з другим значенням тимчасового зберігання.
Зловмисник викликає функцію зворотного виклику контракту Vault через шкідливий контракт для виведення токенів. Оскільки значення, що зберігаються у тимчасовій пам'яті, не було очищено, перевірка особи була помилково пройдена.
Нарешті, зловмисник через атаку на контракт (токен A) викликає функцію зворотного виклику контракту Vault, виводячи інші токени (такі як WBTC, WETH) для отримання прибутку.
Аналіз руху коштів
Зловмисник викрав близько 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) для очищення значень у транзиторному сховищі. Одночасно слід посилити аудит коду контракту та безпекове тестування, щоб запобігти подібним ситуаціям.