Проект Ethereum подвергся атаке на сумму 300 000 долларов США, причиной которой стал дефект временного хранилища.

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

Уязвимость временного хранения привела к атаке на проект Ethereum на 300 000 долларов

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

Фоновая информация

Версия Solidity 0.8.24 ввела функцию временного хранения (transient storage), которая представляет собой новое место для хранения данных. Основная характеристика заключается в том, что данные действительны только на протяжении выполнения текущей транзакции и автоматически удаляются после завершения транзакции. Доступ и изменение осуществляются с помощью двух новых инструкций EVM: TSTORE и TLOAD.

Временное хранилище имеет следующие характеристики:

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

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

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

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

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

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

  1. Злоумышленник создает два вредоносных токена A и B и создает пулы ликвидности для этих токенов на некотором DEX, где токен A является атакующим контрактом.

  2. Атакующий вызывает функцию initialize контракта Vault, чтобы создать рынок кредитного плеча APE-21 с токеном A в качестве залогового токена и токеном B в качестве долгового токена.

  3. Атакующий вызывает функцию mint контракта Vault, вносит долговой токен B для выпуска лендингового токена APE. В этом процессе адрес DEX-пула и количество выпускаемого токена временно сохраняются.

  4. Злоумышленник создает вредоносный контракт, адрес которого совпадает со значением второго временного хранилища.

  5. Атакующий напрямую вызывает обратную функцию контракта Vault через этот вредоносный контракт для вывода токенов. Поскольку значение в временном хранилище не было очищено, идентификационная проверка была ошибочно пройдена.

  6. В конце концов, атакующий вызывает функцию обратного вызова контракта Vault через атаку на контракт (токен A), чтобы вывести другие токены (WBTC, WETH) из контракта Vault и получить прибыль.

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

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

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

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

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

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

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

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

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

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

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

Анализ денежного потока

Согласно анализу на блокчейне, злоумышленники украли активы на сумму около 300,000 долларов США, включая 17,814.8626 USDC, 1.4085 WBTC и 119.871 WETH.

  • WBTC обменен на 63.5596 WETH
  • USDC был обменян на 9.7122 WETH
  • В общей сложности 193.1428 WETH были переведены в определённый сервис смешивания

Исходный капитал атакующего поступил от определенной службы смешивания монет в размере 0,3 ETH.

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

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

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

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

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

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

Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Награда
  • 3
  • Поделиться
комментарий
0/400
CommunitySlackervip
· 15ч назад
Еще один проект, ставший банкоматом.
Посмотреть ОригиналОтветить0
BlockchainDecodervip
· 15ч назад
С технической точки зрения это典型ный неправильное использование временного хранения.
Посмотреть ОригиналОтветить0
StealthMoonvip
· 15ч назад
Снова уязвимость временного хранения? Будьте внимательнее.
Посмотреть ОригиналОтветить0
  • Закрепить