Нещодавно кросчейн-протокол взаємодії Poly Network зазнав атаки Хакера, що викликало широкий інтерес. Після глибокого аналізу безпековою командою виявилося, що зловмисник не здійснив атаку через витік приватного ключа keeper, а скористався вразливістю в контракті.
Принцип атаки
Ядро атаки полягає в тому, що функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати певні міжмережеві транзакції через функцію _executeCrossChainTx. Оскільки власник контракту EthCrossChainData є контрактом EthCrossChainManager, то останній може викликати функцію putCurEpochConPubKeyBytes першого, щоб змінити keeper контракту.
Зловмисник передав у функцію verifyHeaderAndExecuteTx ретельно сконструйовані дані, що призвело до виконання функції _executeCrossChainTx, яка викликала функцію putCurEpochConPubKeyBytes контракту EthCrossChainData, в результаті чого роль keeper була змінена на адресу, вказану зловмисником. Після завершення заміни ролі keeper зловмисник може вільно конструювати транзакції та витягувати з контракту будь-яку кількість коштів.
Процес атаки
Зловмисник спочатку викликав функцію putCurEpochConPubKeyBytes через функцію verifyHeaderAndExecuteTx контракту EthCrossChainManager, змінивши keeper.
Після цього зловмисник використав змінені права для проведення серії атакуючих транзакцій, витягуючи кошти з контракту.
Через те, що keeper був модифікований, інші користувачі не змогли виконати свої нормальні транзакції.
Цей атакувальний режим відбувається не лише на BSC-ланцюзі, але й у мережі Ethereum також зазнав подібних атак.
Висновок
Кореневою причиною цього інциденту атаки є те, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, тоді як функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати введені користувачем дані через функцію _executeCrossChainTx. Зловмисник скористався цим конструктивним дефектом, модифікувавши keeper контракту EthCrossChainData за допомогою спеціально сконструйованих даних, що призвело до крадіжки коштів.
Ця подія ще раз підкреслила важливість безпеки проектування крос-чейн протоколів, особливо в аспектах управління правами та виклику функцій, які потребують більш суворого аудиту та обмежень. Для проектів децентралізованих фінансів безперервний аудит безпеки та усунення вразливостей є надзвичайно важливими для запобігання подібним атакам.
!
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
18 лайків
Нагородити
18
6
Репост
Поділіться
Прокоментувати
0/400
PanicSeller69
· 08-12 04:32
Уразливості ще робити DeFi?
Переглянути оригіналвідповісти на0
BearMarketNoodler
· 08-11 11:12
Ще одна жертва Попередження про безкоштовні навчання
Переглянути оригіналвідповісти на0
HodlKumamon
· 08-10 15:50
А-а-а, чому QA-аудит зроблений так неякісно~
Переглянути оригіналвідповісти на0
AirdropATM
· 08-10 15:49
Дійсно набридли вразливості в контрактах
Переглянути оригіналвідповісти на0
TokenCreatorOP
· 08-10 15:46
Знову ліквідовано?
Переглянути оригіналвідповісти на0
PoolJumper
· 08-10 15:31
Коли так багато шерсті обірвали, контракт ще наважується говорити про вразливості?
Poly Network зазнав атаки хакера: вразливість контракту призвела до зміни keeper
Аналіз інциденту з атакою на Poly Network Хакер
Нещодавно кросчейн-протокол взаємодії Poly Network зазнав атаки Хакера, що викликало широкий інтерес. Після глибокого аналізу безпековою командою виявилося, що зловмисник не здійснив атаку через витік приватного ключа keeper, а скористався вразливістю в контракті.
Принцип атаки
Ядро атаки полягає в тому, що функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати певні міжмережеві транзакції через функцію _executeCrossChainTx. Оскільки власник контракту EthCrossChainData є контрактом EthCrossChainManager, то останній може викликати функцію putCurEpochConPubKeyBytes першого, щоб змінити keeper контракту.
Зловмисник передав у функцію verifyHeaderAndExecuteTx ретельно сконструйовані дані, що призвело до виконання функції _executeCrossChainTx, яка викликала функцію putCurEpochConPubKeyBytes контракту EthCrossChainData, в результаті чого роль keeper була змінена на адресу, вказану зловмисником. Після завершення заміни ролі keeper зловмисник може вільно конструювати транзакції та витягувати з контракту будь-яку кількість коштів.
Процес атаки
Зловмисник спочатку викликав функцію putCurEpochConPubKeyBytes через функцію verifyHeaderAndExecuteTx контракту EthCrossChainManager, змінивши keeper.
Після цього зловмисник використав змінені права для проведення серії атакуючих транзакцій, витягуючи кошти з контракту.
Через те, що keeper був модифікований, інші користувачі не змогли виконати свої нормальні транзакції.
Цей атакувальний режим відбувається не лише на BSC-ланцюзі, але й у мережі Ethereum також зазнав подібних атак.
Висновок
Кореневою причиною цього інциденту атаки є те, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, тоді як функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати введені користувачем дані через функцію _executeCrossChainTx. Зловмисник скористався цим конструктивним дефектом, модифікувавши keeper контракту EthCrossChainData за допомогою спеціально сконструйованих даних, що призвело до крадіжки коштів.
Ця подія ще раз підкреслила важливість безпеки проектування крос-чейн протоколів, особливо в аспектах управління правами та виклику функцій, які потребують більш суворого аудиту та обмежень. Для проектів децентралізованих фінансів безперервний аудит безпеки та усунення вразливостей є надзвичайно важливими для запобігання подібним атакам.
!