Back to Blog

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

Code Auditing
August 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.98M Потеряно: Aztec, Raydium и другие | Еженедельник BlockSec
Security Insights

~$5.98M Потеряно: Aztec, Raydium и другие | Еженедельник BlockSec

Еженедельный отчёт о безопасности блокчейна (8–15 июня 2026 г.): 4 инцидента в Ethereum и Solana, общие потери ~$5,98 млн. Aztec Connect: отсутствие валидации входных данных привело к рассинхронизации rollup и L1. Raydium: уязвимость в AMM v3 позволила дренировать 4 пула.

Анализ уязвимости Zcash Orchard | Еженедельник BlockSec
Security Insights

Анализ уязвимости Zcash Orchard | Еженедельник BlockSec

Критическая уязвимость в цепи Orchard Zcash: отсутствие ограничения равенства в гаджете ECC halo2 позволяло незаметно подделывать ZEC через двойное расходование. Уязвимость существовала 4+ лет, обнаружена ИИ-аудитом (Anthropic Opus 4.8, исследователь Тейлор Хорнби), устранена экстренным обновлением NU6.2.

Информационный бюллетень — май 2026 г.
Security Insights

Информационный бюллетень — май 2026 г.

В мае 2026 года в DeFi произошло 3 взлома: Echo Protocol ($76,7 млн, компрометация ключа), StablR ($12,8 млн, брешь в multisig) и Verus-Ethereum Bridge ($11,7 млн, ошибка проверки типов). Общий ущерб — около $101,2 млн.

Best Security Auditor for Web3

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

BlockSec Audit