На днях межсетевой протокол 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.
Это событие вновь подчеркивает важность безопасного проектирования кросс-цепных протоколов и строгих требований к управлению правами контрактов. Оно также напоминает нам, что в экосистеме блокчейна даже казалось бы безобидные функции, если они будут злоупотреблены, могут привести к серьезным уязвимостям в безопасности.
!