Смертельный остаток: атака в 300000 долларов в блокчейне, вызванная временным хранилищем
30 марта 2025 года, система безопасности обнаружила атаку на проект с использованием заемных средств на Ethereum в блокчейне, в результате которой были потеряны активы на сумму более 300 тысяч долларов. Команда безопасности провела глубокий анализ данного инцидента и делится результатами:
Фон
Версия Solidity 0.8.24 (выпущена в январе 2024 года) вводит характеристики временного хранилища на основе EIP-1153. Это новое место хранения данных, предназначенное для предоставления разработчикам недорогого, эффективного временного хранилища в течение транзакции.
Основные характеристики временного хранилища включают:
Низкая стоимость газа: фиксированная стоимость газа для операций TSTORE и TLOAD составляет 100.
Постоянство данных в сделке: данные остаются действительными на протяжении всей сделки.
Автоматическое удаление: после завершения сделки временное хранилище автоматически сбрасывается на ноль.
Корень атаки
Коренная причина данного инцидента заключается в том, что значения, хранящиеся во временном хранилище tstore в функции, не очищаются после завершения вызова функции. Это позволяет злоумышленникам использовать эту особенность для создания определенных вредоносных адресов, обходя проверку прав и выводя токены.
Процесс атаки
Злоумышленник создает два вредоносных токена A и B, создает пулы для этих токенов на определенном DEX и вводит ликвидность, где токен A является атакующим контрактом.
Атакующий вызывает функцию initialize контракта Vault, чтобы создать рынок маржинальной торговли APE-21 с токеном A в качестве залогового токена и токеном B в качестве долгового токена.
Нападающий вызывает функцию mint контракта Vault, вносит долговой токен B для выпуска токена с левереджем APE. В этом процессе происходит две операции временного хранения: сначала сохраняется адрес пула DEX, затем сохраняется количество выпущенных токенов.
Нападающий создает вредоносный контракт специальным способом, адрес которого совпадает со значением второго временного хранилища.
Злоумышленник напрямую вызывает обратный вызов контракта Vault через этот вредоносный контракт для вывода токенов. Поскольку значения во временном хранилище не были очищены, проверка идентичности вызывающего лица была ошибочно пройдена.
В конце, злоумышленник через атаку на контракт (токен A) вызывает функцию обратного вызова контракта Vault, чтобы вывести другие токены (например, WBTC, WETH) из контракта Vault для получения прибыли.
Анализ потоков средств
Согласно анализу инструментов в блокчейне, злоумышленники украли около 300 000 долларов США активов, включая 17 814,8626 USDC, 1,4085 WBTC и 119,871 WETH. Эти активы затем были объединены и преобразованы в WETH, в конечном итоге переведены в некоторый приватный торговый протокол.
Начальный капитал злоумышленника поступил из 0.3 ETH, переведенных в этот приватный торговый протокол.
Итоги и рекомендации
В центре этой атаки лежит использование атакующим характеристики временного хранения, которое сохраняет значение неизменным на протяжении всей транзакции, чтобы обойти проверку прав доступа в функции обратного вызова и получить прибыль. Для предотвращения подобных ситуаций рекомендуется стороне проекта:
В соответствии с бизнес-логикой немедленно используйте tstore(key после завершения вызова функции для очистки значений во временном хранилище.
Укрепить аудит кода контрактов и тестирование безопасности.
Осторожно используйте новые введенные функции, полностью осознавая их потенциальные риски.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
13 Лайков
Награда
13
6
Поделиться
комментарий
0/400
LayerZeroHero
· 08-02 23:27
Атака всегда имеет бэкдор
Посмотреть ОригиналОтветить0
Web3ProductManager
· 08-01 12:37
Классическая атака на точки трения в пользовательском опыте
30 тысяч долларов США в блокчейне атак события: уязвимость временного хранилища привела к проблемам у проекта Маржинальная торговля
Смертельный остаток: атака в 300000 долларов в блокчейне, вызванная временным хранилищем
30 марта 2025 года, система безопасности обнаружила атаку на проект с использованием заемных средств на Ethereum в блокчейне, в результате которой были потеряны активы на сумму более 300 тысяч долларов. Команда безопасности провела глубокий анализ данного инцидента и делится результатами:
Фон
Версия Solidity 0.8.24 (выпущена в январе 2024 года) вводит характеристики временного хранилища на основе EIP-1153. Это новое место хранения данных, предназначенное для предоставления разработчикам недорогого, эффективного временного хранилища в течение транзакции.
Основные характеристики временного хранилища включают:
Корень атаки
Коренная причина данного инцидента заключается в том, что значения, хранящиеся во временном хранилище tstore в функции, не очищаются после завершения вызова функции. Это позволяет злоумышленникам использовать эту особенность для создания определенных вредоносных адресов, обходя проверку прав и выводя токены.
Процесс атаки
Злоумышленник создает два вредоносных токена A и B, создает пулы для этих токенов на определенном DEX и вводит ликвидность, где токен A является атакующим контрактом.
Атакующий вызывает функцию initialize контракта Vault, чтобы создать рынок маржинальной торговли APE-21 с токеном A в качестве залогового токена и токеном B в качестве долгового токена.
Нападающий вызывает функцию mint контракта Vault, вносит долговой токен B для выпуска токена с левереджем APE. В этом процессе происходит две операции временного хранения: сначала сохраняется адрес пула DEX, затем сохраняется количество выпущенных токенов.
Нападающий создает вредоносный контракт специальным способом, адрес которого совпадает со значением второго временного хранилища.
Злоумышленник напрямую вызывает обратный вызов контракта Vault через этот вредоносный контракт для вывода токенов. Поскольку значения во временном хранилище не были очищены, проверка идентичности вызывающего лица была ошибочно пройдена.
В конце, злоумышленник через атаку на контракт (токен A) вызывает функцию обратного вызова контракта Vault, чтобы вывести другие токены (например, WBTC, WETH) из контракта Vault для получения прибыли.
Анализ потоков средств
Согласно анализу инструментов в блокчейне, злоумышленники украли около 300 000 долларов США активов, включая 17 814,8626 USDC, 1,4085 WBTC и 119,871 WETH. Эти активы затем были объединены и преобразованы в WETH, в конечном итоге переведены в некоторый приватный торговый протокол.
Начальный капитал злоумышленника поступил из 0.3 ETH, переведенных в этот приватный торговый протокол.
Итоги и рекомендации
В центре этой атаки лежит использование атакующим характеристики временного хранения, которое сохраняет значение неизменным на протяжении всей транзакции, чтобы обойти проверку прав доступа в функции обратного вызова и получить прибыль. Для предотвращения подобных ситуаций рекомендуется стороне проекта: