Подробный анализ атаки на Poly Network со стороны хакера
Недавно протокол межсетевого взаимодействия Poly Network подвергся атаке Хакера, что привлекло широкое внимание. Команда безопасности провела глубокий анализ этого инцидента и пришла к выводу, что злоумышленник изменил роль keeper в контракте EthCrossChainData с помощью тщательно подготовленных данных, а не в результате утечки приватного ключа keeper, как сообщалось ранее.
Атакующее ядро
Ключ атаки заключается в том, что функция verifyHeaderAndExecuteTx контракта EthCrossChainManager может выполнять определенные кросс-цепочные транзакции через функцию _executeCrossChainTx. Поскольку владелец контракта EthCrossChainData является контрактом EthCrossChainManager, последний может вызывать функцию putCurEpochConPubKeyBytes контракта EthCrossChainData для изменения keeper контракта.
Атакующий может просто передать тщательно разработанные данные через функцию verifyHeaderAndExecuteTx, чтобы вызвать функцию putCurEpochConPubKeyBytes контракта EthCrossChainData с помощью функции _executeCrossChainTx, тем самым изменив роль хранителя на адрес, указанный атакующим. После замены адреса роли хранителя атакующий сможет произвольно конструировать транзакции и извлекать любое количество средств из контракта.
Процесс атаки
Атакующий сначала вызывает функцию putCurEpochConPubKeyBytes через функцию verifyHeaderAndExecuteTx контракта EthCrossChainManager, чтобы изменить роль хранителя.
Затем злоумышленник начинает осуществлять серию атакующих транзакций, извлекая средства из контракта.
После завершения атаки, из-за изменения keeper, нормальные транзакции других пользователей были отклонены.
Подобные методы атак также были реализованы в сети Ethereum, процесс аналогичен атаке на BSC.
!
Вывод
Основная причина этой атаки заключается в том, что keeper контракта EthCrossChainData может быть изменен контрактом EthCrossChainManager, а функция verifyHeaderAndExecuteTx контракта EthCrossChainManager может выполнять данные, введенные пользователем, через функцию _executeCrossChainTx. Злоумышленник использовал эту уязвимость, создав определенные данные, и успешно изменил keeper контракта EthCrossChainData на адрес, который он контролирует, что позволило ему незаконно вывести средства из контракта.
Это событие еще раз подчеркивает важность аудита безопасности смарт-контрактов, особенно в сложных системах, связанных с кроссчейн-операциями и управлением ключевыми ролями. Команда разработчиков должна более тщательно разрабатывать и реализовывать механизмы управления правами контрактов, чтобы предотвратить использование подобных уязвимостей.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
5 Лайков
Награда
5
5
Поделиться
комментарий
0/400
NFTArchaeologist
· 10ч назад
Безопасность никогда не бывает "после драки"?
Посмотреть ОригиналОтветить0
ChainWanderingPoet
· 07-21 15:58
Снова взломали? Контракт все еще может поддерживаться.
Полный анализ глубины атаки хакера на Poly Network: роль хранителя контракта EthCrossChainData была изменена.
Подробный анализ атаки на Poly Network со стороны хакера
Недавно протокол межсетевого взаимодействия Poly Network подвергся атаке Хакера, что привлекло широкое внимание. Команда безопасности провела глубокий анализ этого инцидента и пришла к выводу, что злоумышленник изменил роль keeper в контракте EthCrossChainData с помощью тщательно подготовленных данных, а не в результате утечки приватного ключа keeper, как сообщалось ранее.
Атакующее ядро
Ключ атаки заключается в том, что функция verifyHeaderAndExecuteTx контракта EthCrossChainManager может выполнять определенные кросс-цепочные транзакции через функцию _executeCrossChainTx. Поскольку владелец контракта EthCrossChainData является контрактом EthCrossChainManager, последний может вызывать функцию putCurEpochConPubKeyBytes контракта EthCrossChainData для изменения keeper контракта.
Атакующий может просто передать тщательно разработанные данные через функцию verifyHeaderAndExecuteTx, чтобы вызвать функцию putCurEpochConPubKeyBytes контракта EthCrossChainData с помощью функции _executeCrossChainTx, тем самым изменив роль хранителя на адрес, указанный атакующим. После замены адреса роли хранителя атакующий сможет произвольно конструировать транзакции и извлекать любое количество средств из контракта.
Процесс атаки
Атакующий сначала вызывает функцию putCurEpochConPubKeyBytes через функцию verifyHeaderAndExecuteTx контракта EthCrossChainManager, чтобы изменить роль хранителя.
Затем злоумышленник начинает осуществлять серию атакующих транзакций, извлекая средства из контракта.
После завершения атаки, из-за изменения keeper, нормальные транзакции других пользователей были отклонены.
Подобные методы атак также были реализованы в сети Ethereum, процесс аналогичен атаке на BSC.
!
Вывод
Основная причина этой атаки заключается в том, что keeper контракта EthCrossChainData может быть изменен контрактом EthCrossChainManager, а функция verifyHeaderAndExecuteTx контракта EthCrossChainManager может выполнять данные, введенные пользователем, через функцию _executeCrossChainTx. Злоумышленник использовал эту уязвимость, создав определенные данные, и успешно изменил keeper контракта EthCrossChainData на адрес, который он контролирует, что позволило ему незаконно вывести средства из контракта.
Это событие еще раз подчеркивает важность аудита безопасности смарт-контрактов, особенно в сложных системах, связанных с кроссчейн-операциями и управлением ключевыми ролями. Команда разработчиков должна более тщательно разрабатывать и реализовывать механизмы управления правами контрактов, чтобы предотвратить использование подобных уязвимостей.