Нещодавно кросчейн-протокол взаємодії Poly Network зазнав атаки хакера, що викликало широкий інтерес. Згідно з аналізом команди безпеки, ця атака не сталася через витік приватного ключа keeper, а атака сталася через хитро спроектовані дані, які використовували вразливість контракту для зміни адреси keeper контракту EthCrossChainData.
Атакувати ядро
Ключ до атаки полягає у функції verifyHeaderAndExecuteTx контракту EthCrossChainManager. Ця функція може виконати певну кросчейн-транзакцію через функцію _executeCrossChainTx. Оскільки власником контракту EthCrossChainData є контракт EthCrossChainManager, останній має право викликати функцію putCurEpochConPubKeyBytes контракту EthCrossChainData для зміни keeper.
Зловмисники використовують цей механізм, передаючи ретельно спроектовані дані через функцію verifyHeaderAndExecuteTx, що призводить до виконання виклику функції putCurEpochConPubKeyBytes контракту EthCrossChainData через функцію _executeCrossChainTx, в результаті чого роль keeper змінюється на адресу, вказану зловмисником.
Процес атаки
Зловмисник спочатку викликав функцію putCurEpochConPubKeyBytes через функцію verifyHeaderAndExecuteTx контракту EthCrossChainManager, змінивши keeper.
Після завершення заміни адреси ролі keeper, зловмисник може вільно створювати транзакції та витягувати будь-яку кількість коштів з контракту.
Після завершення атаки, через зміни в keeper, інші користувачі не можуть виконати свої нормальні угоди.
Цей режим атаки здійснюється не лише на BSC-ланцюзі, але й подібні дії сталися в мережі Ethereum.
Висновок
Основною причиною атаки стало те, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, а функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати дані, передані користувачем. Атакувальник скористався цим конструктивним недоліком, шляхом створення специфічних даних змінив адресу keeper контракту EthCrossChainData, а не, як раніше повідомлялося, витік приватного ключа keeper.
Ця подія ще раз підкреслила важливість безпеки дизайну кросчейн-протоколів та суворі вимоги до управління правами контрактів. Це також нагадує нам, що навіть здавалося б безпечні функції в екосистемі блокчейну, якщо їх зловмисно використовувати, можуть призвести до серйозних безпекових вразливостей.
!
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Poly Network зазнав атаки хакера: вразливість контракту призвела до модифікації keeper
Аналіз події атаки на Poly Network
Нещодавно кросчейн-протокол взаємодії Poly Network зазнав атаки хакера, що викликало широкий інтерес. Згідно з аналізом команди безпеки, ця атака не сталася через витік приватного ключа keeper, а атака сталася через хитро спроектовані дані, які використовували вразливість контракту для зміни адреси keeper контракту EthCrossChainData.
Атакувати ядро
Ключ до атаки полягає у функції verifyHeaderAndExecuteTx контракту EthCrossChainManager. Ця функція може виконати певну кросчейн-транзакцію через функцію _executeCrossChainTx. Оскільки власником контракту EthCrossChainData є контракт EthCrossChainManager, останній має право викликати функцію putCurEpochConPubKeyBytes контракту EthCrossChainData для зміни keeper.
Зловмисники використовують цей механізм, передаючи ретельно спроектовані дані через функцію verifyHeaderAndExecuteTx, що призводить до виконання виклику функції putCurEpochConPubKeyBytes контракту EthCrossChainData через функцію _executeCrossChainTx, в результаті чого роль keeper змінюється на адресу, вказану зловмисником.
Процес атаки
Зловмисник спочатку викликав функцію putCurEpochConPubKeyBytes через функцію verifyHeaderAndExecuteTx контракту EthCrossChainManager, змінивши keeper.
Після завершення заміни адреси ролі keeper, зловмисник може вільно створювати транзакції та витягувати будь-яку кількість коштів з контракту.
Після завершення атаки, через зміни в keeper, інші користувачі не можуть виконати свої нормальні угоди.
Цей режим атаки здійснюється не лише на BSC-ланцюзі, але й подібні дії сталися в мережі Ethereum.
Висновок
Основною причиною атаки стало те, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, а функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати дані, передані користувачем. Атакувальник скористався цим конструктивним недоліком, шляхом створення специфічних даних змінив адресу keeper контракту EthCrossChainData, а не, як раніше повідомлялося, витік приватного ключа keeper.
Ця подія ще раз підкреслила важливість безпеки дизайну кросчейн-протоколів та суворі вимоги до управління правами контрактів. Це також нагадує нам, що навіть здавалося б безпечні функції в екосистемі блокчейну, якщо їх зловмисно використовувати, можуть призвести до серйозних безпекових вразливостей.
!