Аналіз інциденту атаки у блокчейні на 300000 доларів, спричиненого уразливістю миттєвого зберігання
30 березня 2025 року, певний проект з торгівлі з кредитним плечем на у блокчейні Ethereum зазнав атаки, внаслідок чого було втрачено понад 300 тисяч доларів активів. Команда безпеки провела глибокий аналіз цього інциденту і наразі ділиться результатами, які наведені нижче:
Фонові знання
Версія Solidity 0.8.24 впровадила функцію миттєвого зберігання (transient storage), яка є новим місцем зберігання даних. Її основні характеристики включають:
Низька вартість газу: вартість газу для операцій TSTORE та TLOAD фіксована на рівні 100.
Тривалість даних у угоді: дані залишаються дійсними протягом усієї угоди.
Автоматичне очищення: після завершення угоди миттєве зберігання автоматично скидається до нуля.
Причини атаки
Основною причиною цього інциденту є те, що значення, що використовуються в функції для тимчасового зберігання через tstore, не очищуються після завершення виклику функції. Зловмисник скористався цією особливістю, створивши певну шкідливу адресу, щоб обійти перевірку прав доступу і таким чином вивести токени.
Кроки атаки
Зловмисник створює два шкідливих токени A і B, а також створює пули для цих токенів на певному DEX та вносить ліквідність.
Зловмисник викликає функцію initialize контракту Vault, використовує токен A в якості заставного токена та токен B в якості боргового токена для створення ринкової платформи з важелем.
Зловмисник викликає функцію mint контракту Vault, вносячи борговий токен B для випуску токенів з фінансовим важелем. У цьому процесі адреса DEX-пулу зберігається вперше в тимчасовій пам'яті.
Коли DEX-пул виконує операцію обміну, буде викликано функцію uniswapV3SwapCallback контракту Vault. Ця функція використовує tload для отримання значення з тимчасового сховища для перевірки особи виклику, а також зберігає кількість, що випускається, у другому тимчасовому сховищі.
Зловмисник створює шкідливий контракт, адреса якого збігається з другим значенням тимчасового зберігання.
Зловмисник безпосередньо викликає функцію uniswapV3SwapCallback контракту Vault через цей шкідливий контракт для виведення токенів. Оскільки значення у тимчасовому сховищі не були очищені, це призвело до неправильного проходження автентифікації.
Нарешті, зловмисник через атаку на контракт (токен A) викликає функцію uniswapV3SwapCallback контракту Vault, виводячи інші токени з контракту Vault (такі як WBTC, WETH) для отримання прибутку.
Аналіз руху коштів
Згідно з аналізом інструментів протидії відмиванню грошей та відстеження у блокчейні, зловмисники вкрали активи на суму близько 300 тисяч доларів, включаючи:
17 814,8626 доларів США
1,4085 WBTC
119.871 ЗХ.
Потім зловмисник обміняв WBTC та USDC на WETH, у сумі 193.1428 WETH було переведено в певний міксер. Початкове фінансування зловмисника походило з 0.3 ETH, переведених у цей міксер.
Рекомендації з безпеки
Проектна команда повинна негайно використовувати tstore(key, 0) для очищення значень в миттєвому сховищі після завершення виклику функції відповідно до бізнес-логіки.
Посилити аудит коду контракту та безпечне тестування, щоб уникнути подібних вразливостей.
Обережно використовуйте нововведені функції, повністю розуміючи їх потенційні ризики.
Встановіть механізм багатофакторної перевірки, не покладайтеся лише на один метод автентифікації.
Регулярно проводити оцінку безпеки та сканування на вразливості, своєчасно виправляти виявлені проблеми.
Ця атака ще раз підкреслила, що проєкти у блокчейні повинні бути особливо обережними при використанні нових технологічних особливостей, а також підкреслила важливість постійних аудитів безпеки. Розробники повинні постійно звертати увагу на найновіші найкращі практики безпеки та суворо дотримуватись їх у реалізації коду.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
14 лайків
Нагородити
14
7
Поділіться
Прокоментувати
0/400
DegenWhisperer
· 20год тому
Обман для дурнів одного дня знову почався
Переглянути оригіналвідповісти на0
PensionDestroyer
· 20год тому
30w знову змащено
Переглянути оригіналвідповісти на0
AirDropMissed
· 20год тому
Знову обдурювали людей, як лохів.
Переглянути оригіналвідповісти на0
ruggedNotShrugged
· 20год тому
Масштаб зменшився. Зараз ця атака вже не є серйозною справою.
Переглянути оригіналвідповісти на0
SillyWhale
· 20год тому
Знову якісь маленькі проекти обдурюють людей, як лохів.
Переглянути оригіналвідповісти на0
RugPullAlarm
· 20год тому
Ще один контракт, який не був добре очищений, був викритий.
Переглянути оригіналвідповісти на0
SwingingLittleLeek
· 20год тому
Нещодавно Ethereum коливається вище 3000! У майбутньому він перевищить 3000!
Вразливість транзиторного зберігання призвела до атаки на проекти Ethereum на суму 300 000 доларів США: команда безпеки аналізує ключові деталі
Аналіз інциденту атаки у блокчейні на 300000 доларів, спричиненого уразливістю миттєвого зберігання
30 березня 2025 року, певний проект з торгівлі з кредитним плечем на у блокчейні Ethereum зазнав атаки, внаслідок чого було втрачено понад 300 тисяч доларів активів. Команда безпеки провела глибокий аналіз цього інциденту і наразі ділиться результатами, які наведені нижче:
Фонові знання
Версія Solidity 0.8.24 впровадила функцію миттєвого зберігання (transient storage), яка є новим місцем зберігання даних. Її основні характеристики включають:
Причини атаки
Основною причиною цього інциденту є те, що значення, що використовуються в функції для тимчасового зберігання через tstore, не очищуються після завершення виклику функції. Зловмисник скористався цією особливістю, створивши певну шкідливу адресу, щоб обійти перевірку прав доступу і таким чином вивести токени.
Кроки атаки
Зловмисник створює два шкідливих токени A і B, а також створює пули для цих токенів на певному DEX та вносить ліквідність.
Зловмисник викликає функцію initialize контракту Vault, використовує токен A в якості заставного токена та токен B в якості боргового токена для створення ринкової платформи з важелем.
Зловмисник викликає функцію mint контракту Vault, вносячи борговий токен B для випуску токенів з фінансовим важелем. У цьому процесі адреса DEX-пулу зберігається вперше в тимчасовій пам'яті.
Коли DEX-пул виконує операцію обміну, буде викликано функцію uniswapV3SwapCallback контракту Vault. Ця функція використовує tload для отримання значення з тимчасового сховища для перевірки особи виклику, а також зберігає кількість, що випускається, у другому тимчасовому сховищі.
Зловмисник створює шкідливий контракт, адреса якого збігається з другим значенням тимчасового зберігання.
Зловмисник безпосередньо викликає функцію uniswapV3SwapCallback контракту Vault через цей шкідливий контракт для виведення токенів. Оскільки значення у тимчасовому сховищі не були очищені, це призвело до неправильного проходження автентифікації.
Нарешті, зловмисник через атаку на контракт (токен A) викликає функцію uniswapV3SwapCallback контракту Vault, виводячи інші токени з контракту Vault (такі як WBTC, WETH) для отримання прибутку.
Аналіз руху коштів
Згідно з аналізом інструментів протидії відмиванню грошей та відстеження у блокчейні, зловмисники вкрали активи на суму близько 300 тисяч доларів, включаючи:
Потім зловмисник обміняв WBTC та USDC на WETH, у сумі 193.1428 WETH було переведено в певний міксер. Початкове фінансування зловмисника походило з 0.3 ETH, переведених у цей міксер.
Рекомендації з безпеки
Проектна команда повинна негайно використовувати tstore(key, 0) для очищення значень в миттєвому сховищі після завершення виклику функції відповідно до бізнес-логіки.
Посилити аудит коду контракту та безпечне тестування, щоб уникнути подібних вразливостей.
Обережно використовуйте нововведені функції, повністю розуміючи їх потенційні ризики.
Встановіть механізм багатофакторної перевірки, не покладайтеся лише на один метод автентифікації.
Регулярно проводити оцінку безпеки та сканування на вразливості, своєчасно виправляти виявлені проблеми.
Ця атака ще раз підкреслила, що проєкти у блокчейні повинні бути особливо обережними при використанні нових технологічних особливостей, а також підкреслила важливість постійних аудитів безпеки. Розробники повинні постійно звертати увагу на найновіші найкращі практики безпеки та суворо дотримуватись їх у реалізації коду.