Back to Blog

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

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