Нещодавно кросчейн-протокол взаємодії Poly Network зазнав хакерської атаки, що викликало широку увагу в галузі. За аналізом команди безпеки, ця атака не сталася через витік приватного ключа keeper, а зловмисник успішно змінив адресу keeper контракту EthCrossChainData, використовуючи ретельно підготовлені дані.
Деталі атаки
Основна суть атаки полягає в тому, що функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконати певну крос-чейн транзакцію через функцію _executeCrossChainTx.
Власність контракту EthCrossChainData належить контракту EthCrossChainManager, що дозволяє останньому викликати функцію putCurEpochConPubKeyBytes для зміни keeper.
Зловмисник використовує особливості функції verifyHeaderAndExecuteTx, передаючи ретельно спроектовані дані, що призводить до виклику функції putCurEpochConPubKeyBytes контракту EthCrossChainData функцією _executeCrossChainTx, змінюючи роль keeper на адресу, вказану зловмисником.
Після завершення заміни ролі keeper, атакуючий може вільно створювати транзакції та витягувати з контракту будь-яку кількість коштів.
Процес атаки
Атакуючий спочатку викликає функцію putCurEpochConPubKeyBytes через функцію verifyHeaderAndExecuteTx контракту EthCrossChainManager, успішно змінюючи keeper.
Потім зловмисник почав здійснювати серію атакуючих транзакцій, щоб витягти кошти з контракту.
Через те, що keeper був змінений, інші користувачі не можуть виконати свої нормальні транзакції.
Цей тип атаки відбувається не лише на ланцюгу BSC, але й подібні операції з'явилися в мережі Ethereum.
!
Висновок
Корінь цієї атаки полягає в тому, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, а функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати дані, передані користувачем. Атакуючий скористався цим недоліком дизайну, ретельно сконструювавши дані, успішно змінив адресу keeper контракту EthCrossChainData, що призвело до викрадення коштів. Ця подія ще раз нагадує нам про те, наскільки важливими є управління правами доступу та безпека викликів функцій у дизайні смарт-контрактів.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
14 лайків
Нагородити
14
7
Репост
Поділіться
Прокоментувати
0/400
GasDevourer
· 9год тому
Контракт знову обдурили, жахливо.
Переглянути оригіналвідповісти на0
RetailTherapist
· 08-09 15:39
Ще один атакований пішов у небуття
Переглянути оригіналвідповісти на0
StableGeniusDegen
· 08-09 15:31
Ще один охолоджений~
Переглянути оригіналвідповісти на0
NotSatoshi
· 08-09 15:28
Знову хакер влаштовує біду.
Переглянути оригіналвідповісти на0
ShibaSunglasses
· 08-09 15:23
Знову чорне їсть чорне, так?
Переглянути оригіналвідповісти на0
SorryRugPulled
· 08-09 15:20
Ще шахрайство? Вже звик.
Переглянути оригіналвідповісти на0
RektButSmiling
· 08-09 15:10
Ще одна проблема? keeper також більше не безпечний.
Poly Network зазнав атаки хакера: keeper контракту EthCrossChainData був змінений
Аналіз інциденту з атакою на Poly Network
Нещодавно кросчейн-протокол взаємодії Poly Network зазнав хакерської атаки, що викликало широку увагу в галузі. За аналізом команди безпеки, ця атака не сталася через витік приватного ключа keeper, а зловмисник успішно змінив адресу keeper контракту EthCrossChainData, використовуючи ретельно підготовлені дані.
Деталі атаки
Основна суть атаки полягає в тому, що функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконати певну крос-чейн транзакцію через функцію _executeCrossChainTx.
Власність контракту EthCrossChainData належить контракту EthCrossChainManager, що дозволяє останньому викликати функцію putCurEpochConPubKeyBytes для зміни keeper.
Зловмисник використовує особливості функції verifyHeaderAndExecuteTx, передаючи ретельно спроектовані дані, що призводить до виклику функції putCurEpochConPubKeyBytes контракту EthCrossChainData функцією _executeCrossChainTx, змінюючи роль keeper на адресу, вказану зловмисником.
Після завершення заміни ролі keeper, атакуючий може вільно створювати транзакції та витягувати з контракту будь-яку кількість коштів.
Процес атаки
Атакуючий спочатку викликає функцію putCurEpochConPubKeyBytes через функцію verifyHeaderAndExecuteTx контракту EthCrossChainManager, успішно змінюючи keeper.
Потім зловмисник почав здійснювати серію атакуючих транзакцій, щоб витягти кошти з контракту.
Через те, що keeper був змінений, інші користувачі не можуть виконати свої нормальні транзакції.
Цей тип атаки відбувається не лише на ланцюгу BSC, але й подібні операції з'явилися в мережі Ethereum.
!
Висновок
Корінь цієї атаки полягає в тому, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, а функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати дані, передані користувачем. Атакуючий скористався цим недоліком дизайну, ретельно сконструювавши дані, успішно змінив адресу keeper контракту EthCrossChainData, що призвело до викрадення коштів. Ця подія ще раз нагадує нам про те, наскільки важливими є управління правами доступу та безпека викликів функцій у дизайні смарт-контрактів.