Back to Blog

Краткий анализ эксплуатации уязвимости CVE-2021–39137 в дикой природе

Code Auditing
28 августа 2021 г.
3 min read

CVE-2021-39137 — это уязвимость, о которой было сообщено и которая была исправлена несколько дней назад. Однако не все узлы Ethereum применили патч. Мы наблюдаем, что эта уязвимость была использована злоумышленниками в транзакции.

Транзакция атаки

https://tx.blocksecteam.com/tx/0x1cb6fb36633d270edefc04d048145b4298e67b8aa82a9e5ec4aa1435dd770ce4

Эта транзакция содержит STATICCALL с адресом 0x4. Это предварительно скомпилированный смарт-контракт dataCopy. Аргументы выглядят следующим образом:

inOffset = 0, inSize = 32, retOffset = 7 и retSize = 32.

Смарт-контракт 0x4

Рисунок 1

Поскольку целью STATICCALL является предварительно скомпилированный контракт 0x4, он выполнит функцию RunPrecompiledContract, показанную на Рисунке 1.

Рисунок 2

Рисунок 3

Согласно Рисункам 2 и 3, смарт-контракт 0x4 просто возвращает ссылку на указатель in.

Рисунок 4

Рисунок 5

Рисунок 4 содержит код для опкода STATICCALL. В строке 751 args указывает на [inOffset ~ inOffset + inSize] памяти EVM, то есть на Mem[0:32].

Согласно Рисунку 5 и анализу логики кода 0x04 (Рисунки 2/3), возвращаемое значение (ret) является ссылкой на ту же область памяти, что и args. То есть оно также указывает на Mem[0:32].

Уязвимость

В уязвимом коде (версия 1.10.7) строка 762 копирует содержимое ret в Mem[retOffset : retOffset + retOffset], то есть копирует Mem[0:32] в Mem[7:7+32]. Эта операция непреднамеренно изменяет содержимое ret. Это означает, что возвращаемое значение предварительно скомпилированного контракта 0x4 было изменено.

В исправленной версии (1.10.8) создается копия ret (строка 766). Это устраняет уязвимость, поскольку копирование в строке 767 не может изменить содержимое ret.

Уязвимость CVE-2021–39137 была использована злоумышленниками из-за того, что узлы не обновили свои патчи вовремя. Этот дефект касался операций с памятью в виртуальной машине Ethereum (EVM), но был исправлен в версии 1.10.8. Для обеспечения безопасности системы рекомендуется всем узлам Ethereum немедленно обновиться до последней версии.

Авторы

Анализ атаки выполнен: Сивэй У (Siwei Wu), Юфэн Ху (Yufeng Hu), Лэй У (Lei Wu), Яцзинь Чжоу (Yajin Zhou) @BlockSec

Sign up for the latest updates
Потери около 5,57 млн USD: атаки на X100 Freezer и NEM | Еженедельный обзор BlockSec
Security Insights

Потери около 5,57 млн USD: атаки на X100 Freezer и NEM | Еженедельный обзор BlockSec

Этот еженедельный отчёт охватывает два инцидента безопасности в сетях Ethereum и BNB Chain за период 19.10.2026–25.10.2026. В нём рассматриваются захват управления X100 Freezer, профинансированный с помощью флеш-кредита, и ошибка при расчёте налога, затронувшая пул ликвидности токена NEM в сети BNB Chain. Оценочные потери в рамках отчёта составляют в общей сложности около 5,57 млн USD: ~4,75 млн USD по рассматриваемой транзакции X100 и ~820 тыс. USD в результате инцидента с пулом NEM. В эту сумму не входят отдельно опубликованные данные о последующих выводах средств из X100.

Потери на сумму около 3,87 млн USD: взломы Autheo Network и UNCX | Еженедельный обзор BlockSec
Security Insights

Потери на сумму около 3,87 млн USD: взломы Autheo Network и UNCX | Еженедельный обзор BlockSec

В этом еженедельном отчёте рассматриваются 3 инцидента безопасности за период 12.10.2026–18.10.2026. Общий оценочный ущерб составил около 3,87 млн USD. Ущерб Autheo Network от компрометации закрытого ключа составил примерно 1,76 млн USD, Qubic Wallet потерял примерно 1,30 млн USD из-за ненадёжной генерации seed, а ошибка учёта в контрактах Smart Token Vesting V2 сети UNCX Network на Ethereum, BNB Chain, Base и Robinhood Chain привела к ущербу примерно в 807 тыс. USD. В подробном анализе инцидента UNCX объясняется, как некорректный расчёт совокупного количества долей смешивал транши вестинга, созданные при разных соотношениях токенов и долей, и позволял выводить из общих пулов больше положенного.

Потеряно около $542 тыс.: эксплуатация уязвимости MakerDaoBot | Еженедельный обзор BlockSec
Security Insights

Потеряно около $542 тыс.: эксплуатация уязвимости MakerDaoBot | Еженедельный обзор BlockSec

В Ethereum за 05–11.10.2026 произошёл 1 инцидент; ущерб — около $542 тыс. Атакующий передал вредоносный адаптер функции MakerDaoBot без контроля доступа. Получив права на балансы MakerDAO, адаптер закрыл 4 аукциона ETH-A, конвертировал 200 ETH-A в WETH; атакующий вывел 200 ETH.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit