Back to Blog

Первичный анализ взлома PolyNetwork

Code Auditing
August 11, 2021
3 min read

Сеть PolyNetwork была взломана, похищено более 300 миллионов долларов США. Атакующий совершил нападение сразу на несколько блокчейнов. В этом блоге мы используем транзакцию атаки в сети Ethereum (0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a ) для анализа возможных причин взлома. Наш первичный анализ показывает, что одной из вероятных причин может быть либо утечка закрытого ключа, используемого для подписи кросс-чейн сообщений, либо наличие ошибки в процессе подписи PolyNetwork, которой злоумышленник воспользовался для подписи сфабрикованного сообщения.

Отказ от ответственности: Этот блог содержит только результаты нашего первичного анализа, основанного на данных в блокчейне Ethereum. Мы не можем подтвердить наши выводы без дополнительной информации от Poly Network.

Обновление от 12.08.2021: Дополнительная информация показывает, что причиной атаки стало изменение «хранителя» (keeper) злоумышленником (а не утечка закрытого ключа). У нас есть дальнейший анализ, отвечающий на вопрос, каким образом транзакция по смене хранителя вообще могла быть выполнена.

Транзакция и трассировка вызовов

Мы используем нашу систему анализа транзакций для восстановления трассировки.

Злоумышленник -> EthCrossChainManager -> EthCrossChainData -> LockProxy -> managerProxyContractforLockProxy

  • 0xc8a65fadf0e0ddaf421f28feab69bf6e2e589963: Злоумышленник
  • 0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270: EthCrossChainManager
  • 0xcf2afe102057ba5c16f899271045a0a37fcb10f2: EthCrossChainData
  • 0x250e76987d838a75310c34bf422ea9f1ac4cc906: LockProxy
  • 0x5a51e2ebf8d136926b9ca7b59b60464e7c44d2eb: managerProxyContract для LockProxy

Сигнатуры функций:

  • d450e04c (verifyHeaderAndExecuteTx)
  • 69d48074 (getCurEpochConPubKeyBytes)
  • 5ac40790 (getCurEpochStartHeight)
  • 0586763c (checkIfFromChainTxExist)
  • e90bfdcf (markFromChainTxExist(uint64,bytes32))

Основной процесс атаки

Основной процесс атаки заключается в том, что злоумышленник передал подписанные данные функции verifyHeaderAndExecuteTx(). Эта функция декодирует данные и проверяет подписи, которые были использованы для подписания данных. Если процесс проверки проходит успешно, выполняется метод (и адрес контракта), указанный в сообщении. Во время этой атаки для перевода Fei злоумышленнику была вызвана функция unlock смарт-контракта 0x250e76987d838a75310c34bf422ea9f1ac4cc906.

Таким образом, атака стала возможной из-за передачи корректных параметров функции verifyHeaderAndExecuteTx. Эти параметры успешно прошли проверку подписи. После этого транзакция, указанная в сообщении, была выполнена (подобно выполнению произвольных команд в сфере программной безопасности).

Чтобы лучше понять этот процесс, мы восстановили критические значения трассировки вызовов.

Функция: verifyHeaderAndExecuteTx:

verifySig

unlock

Переменная managerProxyContract в LockProxy. Она совпадает со значением адреса вызывающего объекта функции unlock.

Заключение

Исходя из восстановленных значений, мы обнаружили следующее:

  1. Злоумышленник предоставил действительное подписанное сообщение функции verifyHeaderAndExecuteTx.
  2. Модификатор onlyManagerContract в смарт-контракте LockProxy НЕ был обойден.

Основываясь на этих двух наблюдениях, мы предполагаем, что:

  1. Злоумышленник мог обладать законными ключами для подписания сообщений, что указывает на возможную утечку ключей подписи.

Или

  1. В процессе подписи PolyNetwork существует ошибка, которой воспользовались для подписания сфабрикованного сообщения.

Однако у нас нет дополнительных данных вне блокчейна, чтобы подтвердить наши выводы. Мы надеемся, что наш анализ будет полезен для дальнейшего расследования.

Авторы: Юфэн Ху, Сивэй У, Лэй У, Яцзинь Чжоу @BlockSec

Twitter: https://twitter.com/BlockSecTeam

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