Уязвимость временного хранения привела к атаке на проект в блокчейне на сумму 300000 долларов США. Эксперт дает рекомендации по предотвращению.

robot
Генерация тезисов в процессе

Анализ инцидента с атакой в 300000 долларов в блокчейне, вызванного уязвимостью временного хранилища

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

Фон

Атака произошла в сети Ethereum, целью которой был проект с маржинальной торговлей. Нападающий использовал уязвимость, связанную с временным хранилищем, в контракте этого проекта.

Смертельное наследие: ограбление на сумму 300000 долларов в блокчейне, вызванное временным хранилищем

Предварительные знания

Версия Solidity 0.8.24 представила функцию временного хранилища (transient storage), которая является новым местом для хранения данных. Основные характеристики включают:

  • Низкая стоимость газа: операции TSTORE и TLOAD фиксированно потребляют 100 газа
  • Постоянство данных в транзакциях: данные остаются действительными на протяжении всей транзакции
  • Автоматическое сбрасывание: автоматически сбрасывается на ноль после завершения сделки

Смертельные остатки: ограбление в 300000 долларов, вызванное временным хранением в блокчейне

Причина уязвимости

Основная причина этой атаки заключается в том, что значения, использующие tstore для временного хранения в контракте, не очищаются после завершения вызова функции. Это позволяет злоумышленникам использовать эту особенность для создания определенного адреса, обходя проверку прав и выводя токены.

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

Процесс атаки

  1. Нападающий создаёт два вредоносных токена A и B и создаёт ликвидный пул для них на одном DEX.
  2. Вызовите функцию initialize целевого контракта, чтобы создать рынок маржинальной торговли с токеном A в качестве залога и токеном B в качестве долгового токена.
  3. Вызовите функцию mint для хранения токена B, который создает токены с кредитным плечом, при этом было выполнено две операции мгновенного хранения.
  4. Создайте адрес с тем же значением временного хранения, что и во втором злоумышленном контракте.
  5. Через этот вредоносный контракт вызывается функция обратного вызова целевого контракта, обходя проверку прав, для вывода токенов.
  6. Наконец, через атакующий контракт (токен A) снова вызывается функция обратного вызова, чтобы вывести другие токены (такие как WBTC, WETH) для получения прибыли.

Смертельные остатки: ограбление на сумму 300000 долларов в блокчейне, вызванное временным хранением

Смертельный остаток: ограбление на 300000 долларов в результате временного хранения в блокчейне

Смертельный остаток: ограбление на сумму 300000 долларов, вызванное временным хранилищем в блокчейне

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

Смертельный остаток: ограбление в 300000 долларов в результате временного хранилища в блокчейне

Смертельный остаток: ограбление на сумму 300000 долларов в блокчейне, вызванное транзитным хранилищем

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

Смертельный остаток: ограбление на сумму 300000 долларов, вызванное временным хранением в блокчейне

Смертельные остатки: ограбление на сумму 300000 долларов, вызванное временным хранилищем в блокчейне

Смертельный остаток: ограбление в $300,000, вызванное временным хранением в блокчейне

Смертельные остатки: ограбление в 300000 долларов, вызванное временным хранением в блокчейне

Смертельный остаток: ограбление в 300000 долларов в блокчейне, вызванное временным хранением

Анализ потоков средств

Злоумышленники украли активы на сумму около 300 000 долларов, включая:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 ВТ

Затем злоумышленник обменял WBTC и USDC на WETH, в конце концов переведя 193.1428 WETH в одну из микс-сервисов.

Начальный капитал злоумышленника (0.3 ETH) также поступил из этой службы смешивания.

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

Смертельные остатки: ограбление в 300000 долларов, вызванное временным хранением в блокчейне

Резюме и рекомендации

Основная цель этой атаки заключается в использовании свойства временного хранения, позволяющего сохранять значение неизменным на протяжении всей транзакции, что позволяет обойти проверку полномочий контракта. Для предотвращения подобных атак рекомендуется команде проекта:

  1. Немедленно используйте tstore(key для очистки значений в временном хранилище после завершения вызова функции.
  2. Укрепить аудит кода контрактов и тестирование безопасности.
  3. Осторожно используйте новые языковые функции и полностью осознавайте их потенциальные риски.
WBTC0.24%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 6
  • Поделиться
комментарий
0/400
PensionDestroyervip
· 10ч назад
Снова неудачники прислали.
Посмотреть ОригиналОтветить0
TestnetFreeloadervip
· 10ч назад
А что это, так уж и быть, даже свой проект не удерживаю.
Посмотреть ОригиналОтветить0
LootboxPhobiavip
· 10ч назад
Проблема, проблема, еще один брат наступил на мину.
Посмотреть ОригиналОтветить0
BearMarketMonkvip
· 10ч назад
Выдернули羊毛 и забрали контракт洞
Посмотреть ОригиналОтветить0
DeFiAlchemistvip
· 10ч назад
ах, еще одна жертва темным искусствам эксплуатации смарт-контрактов... *регулирует хрустальный шар* эти эфемерные уязвимости хранения подобны трещинам в герметичной печати алхимии протокола
Посмотреть ОригиналОтветить0
TestnetNomadvip
· 10ч назад
Жесть, снова нас обобрали.
Посмотреть ОригиналОтветить0
  • Закрепить