Нещодавно кросчейн-протокол Poly Network зазнав атаки з боку хакера, що викликало широкий інтерес в галузі. Команда безпеки провела глибокий аналіз цього інциденту і вважає, що зловмисник шляхом ретельно спланованих даних змінив keeper контракту EthCrossChainData на вказану адресу, а не через раніше поширену версію про витік приватного ключа keeper.
Деталі атаки
Ядро атаки полягає в тому, що функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати міжланцюгові транзакції через функцію _executeCrossChainTx.
Власник контракту EthCrossChainData є контрактом EthCrossChainManager, що дозволяє останньому викликати функцію putCurEpochConPubKeyBytes першого, щоб змінити keeper.
Функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може внутрішньо викликати функцію _executeCrossChainTx для виконання кросчейн-транзакції, вказаної користувачем. Зловмисник використовує це, передаючи ретельно сконструйовані дані, щоб викликати функцію putCurEpochConPubKeyBytes контракту EthCrossChainData, в результаті чого роль keeper змінюється на адресу, вказану зловмисником.
Завершивши заміну адреси ролі keeper, зловмисник може вільно створювати транзакції та витягувати будь-яку кількість коштів з контракту.
Процес атаки
Зловмисник спочатку через виклик функції verifyHeaderAndExecuteTx контракту EthCrossChainManager викликав функцію putCurEpochConPubKeyBytes, змінивши keeper.
Після цього зловмисник почав здійснювати серію атакуючих транзакцій, витягуючи кошти з контракту.
Після завершення атаки, через те, що keeper був змінений, нормальні交易 інших користувачів були відхилені.
Схожі моделі атак також з'явилися в мережі Ethereum, зловмисники використовували ті ж методи для зміни keeper та реалізації атак.
!
Підсумок
Ключовим моментом цієї атаки є те, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, а функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати дані, передані користувачем, через функцію _executeCrossChainTx. Атакуючий скористався цим проєктувальним недоліком, змінивши keeper контракту EthCrossChainData, шляхом конструювання специфічних даних, а не через витік приватного ключа keeper, як вважалося раніше. Ця подія ще раз підкреслює важливість безпеки дизайну смарт-контрактів та надає цінний досвід і уроки для галузі.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
11 лайків
Нагородити
11
4
Поділіться
Прокоментувати
0/400
RugPullAlarm
· 07-20 15:15
Чисті дані у блокчейні говорять, не втрачаючи великі гроші
Переглянути оригіналвідповісти на0
SchrodingerAirdrop
· 07-20 15:11
Знову сталася подія безпеки, а? Ха-ха
Переглянути оригіналвідповісти на0
MetaDreamer
· 07-20 14:50
Знову kp підвели. Коли це закінчиться?
Переглянути оригіналвідповісти на0
GasFeeLady
· 07-20 14:47
smh... компроміс з хранителем просто чекав, щоб статися, якщо чесно. потрібно перевірити ці точки входу
Poly Network зазнав хакерської атаки, keeper був змінений, що призвело до втрати коштів.
Аналіз інциденту атаки на Poly Network Хакер
Нещодавно кросчейн-протокол Poly Network зазнав атаки з боку хакера, що викликало широкий інтерес в галузі. Команда безпеки провела глибокий аналіз цього інциденту і вважає, що зловмисник шляхом ретельно спланованих даних змінив keeper контракту EthCrossChainData на вказану адресу, а не через раніше поширену версію про витік приватного ключа keeper.
Деталі атаки
Ядро атаки полягає в тому, що функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати міжланцюгові транзакції через функцію _executeCrossChainTx.
Власник контракту EthCrossChainData є контрактом EthCrossChainManager, що дозволяє останньому викликати функцію putCurEpochConPubKeyBytes першого, щоб змінити keeper.
Функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може внутрішньо викликати функцію _executeCrossChainTx для виконання кросчейн-транзакції, вказаної користувачем. Зловмисник використовує це, передаючи ретельно сконструйовані дані, щоб викликати функцію putCurEpochConPubKeyBytes контракту EthCrossChainData, в результаті чого роль keeper змінюється на адресу, вказану зловмисником.
Завершивши заміну адреси ролі keeper, зловмисник може вільно створювати транзакції та витягувати будь-яку кількість коштів з контракту.
Процес атаки
Зловмисник спочатку через виклик функції verifyHeaderAndExecuteTx контракту EthCrossChainManager викликав функцію putCurEpochConPubKeyBytes, змінивши keeper.
Після цього зловмисник почав здійснювати серію атакуючих транзакцій, витягуючи кошти з контракту.
Після завершення атаки, через те, що keeper був змінений, нормальні交易 інших користувачів були відхилені.
Схожі моделі атак також з'явилися в мережі Ethereum, зловмисники використовували ті ж методи для зміни keeper та реалізації атак.
!
Підсумок
Ключовим моментом цієї атаки є те, що keeper контракту EthCrossChainData може бути змінений контрактом EthCrossChainManager, а функція verifyHeaderAndExecuteTx контракту EthCrossChainManager може виконувати дані, передані користувачем, через функцію _executeCrossChainTx. Атакуючий скористався цим проєктувальним недоліком, змінивши keeper контракту EthCrossChainData, шляхом конструювання специфічних даних, а не через витік приватного ключа keeper, як вважалося раніше. Ця подія ще раз підкреслює важливість безпеки дизайну смарт-контрактів та надає цінний досвід і уроки для галузі.