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