Анализ инцидента атаки в 30 долларов США в результате уязвимости временного хранилища в блокчейне
30 марта 2025 года проект по торговле с кредитным плечом на определённой сети Ethereum подвергся атаке, что привело к убыткам на сумму более 300 000 долларов США. Команда безопасности провела глубокий анализ данного инцидента и теперь делится результатами:
Фоновая информация
Версия 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) для получения прибыли.
Анализ денежных потоков
Согласно анализу инструментов противодействия отмыванию денег и отслеживания в блокчейне, злоумышленники украли активы на сумму около 300000 долларов, включая:
17,814.8626 USDC
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ч назад
В последнее время Эфир колебался выше 3000! В будущем он будет оставаться выше 3000.
Уязвимость временного хранилища привела к атаке на проект Ethereum на сумму 300000 долларов. Команда безопасности анализирует ключевые детали.
Анализ инцидента атаки в 30 долларов США в результате уязвимости временного хранилища в блокчейне
30 марта 2025 года проект по торговле с кредитным плечом на определённой сети Ethereum подвергся атаке, что привело к убыткам на сумму более 300 000 долларов США. Команда безопасности провела глубокий анализ данного инцидента и теперь делится результатами:
Фоновая информация
Версия 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) для получения прибыли.
Анализ денежных потоков
Согласно анализу инструментов противодействия отмыванию денег и отслеживания в блокчейне, злоумышленники украли активы на сумму около 300000 долларов, включая:
Затем злоумышленник обменял WBTC и USDC на WETH, в итоге 193.1428 WETH было переведено в некий смешанный инструмент. Исходный капитал злоумышленника поступил из 0.3 ETH, переведенных в этот смешанный инструмент.
Рекомендации по безопасности
Команда проекта должна немедленно использовать tstore(key, 0) для очистки значений во временном хранилище после завершения вызова функции в соответствии с логикой бизнеса.
Укрепить аудит кода контрактов и безопасность тестирования, чтобы избежать подобных уязвимостей.
Осторожно используйте новые вводимые функции, полностью осознавая их потенциальные риски.
Установите многофакторный механизм аутентификации, не полагайтесь только на один метод проверки подлинности.
Регулярно проводить оценку безопасности и сканирование на уязвимости, своевременно устранять обнаруженные проблемы.
Данный инцидент с атакой снова подчеркивает необходимость особой осторожности при использовании новых технологических характеристик в проектах в блокчейне, а также важность постоянного аудита безопасности. Разработчики должны постоянно следить за последними лучшими практиками безопасности и строго соблюдать их при реализации кода.