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

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

По данным BlockSec, первопричина эксплойта заключалась в том, что мост кросс-цепочки Omni на цепочке ETHW использовал старый chainID и неправильно проверял правильный chainId сообщения кросс-цепочки.

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

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

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

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

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

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

И снова это не воспроизведение транзакции на уровне цепочки, это воспроизведение calldata из-за недостатка конкретного контракта. https://t.co/bHbYR4b2AW pic.Twitter.com/NZDn61cslJ

- EthereumPoW (ETHW) Официальный #ETHW #ETHPoW (@EthereumPoW) 18 сентября 2022 г.

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

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

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

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

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

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

Источник