ETHW підтверджує використання вразливості контракту, відхиляє заяви про атаку повторного відтворення

Мережа перевірки роботи (PoW) після злиття Ethereum ETHW прийняла рішення придушити заяви про те, що вона зазнала атаки повторного відтворення в ланцюзі на вихідних.

Аудиторська фірма BlockSec, яка займається смарт-контрактами, повідомила, що це таке описано як повторна атака, яка відбулася 16 вересня, під час якої зловмисники збирали токени ETHW, відтворюючи дані виклику ланцюжка доказу частки (PoS) Ethereum на роздвоєному ланцюжку PoW Ethereum.

Згідно з BlockSec, основна причина експлойту полягала в тому, що міжланцюжковий міст Omni у ланцюжку ETHW використовував старий ідентифікатор ланцюга та неправильно перевіряв правильний ідентифікатор ланцюга в повідомленні між ланцюжками.

Основна мережа та тестові мережі Ethereum використовують два ідентифікатори для різних цілей, а саме ідентифікатор мережі та ідентифікатор ланцюга (chainID). Однорангові повідомлення між вузлами використовують ідентифікатор мережі, тоді як підписи транзакцій використовують ідентифікатор ланцюга. ЕІП-155 представив chainID як засіб запобігання повторним атакам між блокчейнами ETH і Ethereum Classic (ETC).

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

Аналіз атаки показав, що експлойтер почав із передачі 200 WETH через міст Omni ланцюжка Gnosis, а потім відтворив те саме повідомлення в ланцюжку PoW, отримавши додаткові 200 ETHW. Це призвело до виснаження балансу ланцюжкового контракту, розгорнутого в ланцюзі PoW.

Пов’язане: перехресні ланцюжки в перехресті прицілу: хакі вимагають кращих механізмів захисту

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

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

«Ймовірно, це пов’язано з тим, що код досить старий (використовується Solidity 0.4.24). Код працює добре весь час до розгалуження ланцюжка PoW».

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

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