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
За пределами смарт-контракта: операционная безопасность доменов и DNS в Web3
Security Insights

За пределами смарт-контракта: операционная безопасность доменов и DNS в Web3

Аудит контрактов не проверяет сам контракт. Мы провели 800 SEAL-проверок DNS и регистраторов для 100 доменов из TVL Top 100 DefiLlama — лишь один домен прошёл все. Каких четырёх мер защиты не хватает большинству и почему это критично для пользователя.

Поверхности атаки Web3: обзор тестирования на проникновение

Поверхности атаки Web3: обзор тестирования на проникновение

Крипто-организации сохраняют все традиционные уязвимости и добавляют цепочку работы с деньгами. Статья описывает систему через четыре компонента: приложение, авторизацию и подпись, взаимодействие с блокчейном, инфраструктуру — с их зонами атак, а также пять специфичных для web3 областей: от эксплуатации и подписания до вывода средств и контрактов.

Потеряно ~23 млн $: эксплойты Cosmos EVM и Moonwell | BlockSec Weekly
Security Insights

Потеряно ~23 млн $: эксплойты Cosmos EVM и Moonwell | BlockSec Weekly

За период (22.08.2026–30.08.2026): 5 инцидентов, ~$22,7 млн убытков; Tectonic — $74–119,5 млн, откачены на Cronos. Взлом Cosmos EVM (~$5,7 млн) на TAC Chain, Moonwell, Ajna, Rain Card Exploit (Ed25519) на Solana.

Best Security Auditor for Web3

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

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