ETHW подтверждает использование уязвимости в контракте, отвергая заявления об атаке воспроизведения

Пост-эфирная сеть ETHW, созданная после слияния Ethereum Merge proof-of-work (PoW), опровергла заявления о том, что в выходные она подверглась атаке повторного воспроизведения на цепочке.

Компания BlockSec, занимающаяся аудитом смарт-контрактов, отметила атаку повторного воспроизведения, которая произошла 16 сентября. Злоумышленники собрали токены ETHW, воспроизведя данные о вызовах цепочки Ethereum proof-of-stake (PoS) на вилочной цепочке Ethereum PoW.

Согласно BlockSec, первопричина эксплойта была связана с тем, что мост Omni cross-chain на цепочке ETHW использовал старый chainID и неправильно проверял правильный chainID сообщения cross-chain.

Mainnet и тестовые сети Ethereum используют два идентификатора для разных целей, а именно: идентификатор сети и идентификатор цепи (chainID). Одноранговые сообщения между узлами используют идентификатор сети, а подписи транзакций — идентификатор цепи. EIP-155 ввел chainID в качестве средства предотвращения атак повторного воспроизведения между блокчейнами ETH и Ethereum Classic (ETC).

1/ Alert | BlockSec обнаружил, что эксплуататоры воспроизводят сообщение (calldata) цепочки PoS на @EthereumPow. Первопричина эксплуатации заключается в том, что мост неправильно проверяет фактический chainid (который поддерживается самостоятельно) межцепочечного сообщения.

— BlockSec (@BlockSecTeam) 18 сентября 2022 г.

BlockSec был первым аналитическим сервисом, который отметил атаку на воспроизведение и уведомил ETHW, который, в свою очередь, быстро опроверг первоначальные заявления о том, что атака на воспроизведение была проведена на цепочке. ETHW предприняла попытки уведомить Omni Bridge об эксплойте на уровне контракта:

Вчера мы пытались всеми способами связаться с Omni Bridge.

Мосты должны правильно проверять фактический ChainID межцепочечных сообщений.

Повторяю, это не воспроизведение транзакций на уровне цепочки, это воспроизведение calldata из-за дефекта конкретного контракта. pic.twitter.com/NZDn61cslJ

— EthereumPoW (ETHW) Official #ETHW #ETHPoW (@EthereumPoW) September 18, 2022

Анализ атаки показал, что эксплуататор начал с перевода 200 WETH через мост Omni в цепи Gnosis, а затем воспроизвел то же сообщение в цепи PoW, получив еще 200ETHW. Это привело к тому, что баланс цепного контракта, развернутого на цепочке PoW, был слит.

Связанное: Перекрестные цепи под прицелом: взломы призывают к улучшению механизмов защиты

Проведенный BlockSec анализ исходного кода моста Omni показал, что логика проверки идентификатора цепи присутствовала, но проверенный идентификатор цепи, используемый в контракте, был взят из значения, хранящегося в хранилище под названием unitStorage.

Команда объяснила, что это был неправильный идентификатор цепи, собранный с помощью опкода CHAINID, который был предложен в EIP-1344 и усугублен в результате форка после слияния Ethereum:

«Вероятно, это связано с тем, что код довольно старый (используется Solidity 0.4.24). Код работал нормально все время до форка цепочки PoW.»

Это позволяло злоумышленникам собирать ETHW и, возможно, другие токены, принадлежащие мосту на цепочке PoW, и далее торговать ими на торговых площадках, где перечислены соответствующие токены. 

Cointelegraph связался с BlockSec, чтобы выяснить стоимость извлеченных средств. Яджин Чжоу, генеральный директор BlockSec, сказал, что его команда не проводила точных расчетов, но отметил ограничение на переводы обернутых ETH (WETH) через мост Omni:

«Мост имеет ограничение на количество WETH, которые могут быть переданы. Злоумышленник может получить только 250 ETHW в день. Обратите внимание, что это касается только данного контракта моста. Подобная уязвимость может существовать и на других проектах в цепочке EthereumPoW.»

После успешного события Merge в Ethereum, в результате которого блокчейн смарт-контрактов перешел от PoW к PoS, группа майнеров решила продолжить цепочку PoW через хард-форк.