Недавно протокол межсетевого взаимодействия Poly Network подвергся атаке Хакера, что вызвало широкий интерес в отрасли. Анализ команды безопасности показал, что эта атака не была вызвана утечкой приватного ключа keeper, а злоумышленник изменил адрес keeper контракта EthCrossChainData с помощью тщательно подготовленных данных.
Атакующее ядро
Суть атаки заключается в том, что функция verifyHeaderAndExecuteTx контракта EthCrossChainManager может выполнять конкретные кроссчейн-транзакции через функцию _executeCrossChainTx. Поскольку владелец контракта EthCrossChainData является контрактом EthCrossChainManager, последний может вызывать функцию putCurEpochConPubKeyBytes первого контракта для изменения хранителя контракта.
Атакующий использует функцию 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 первого контракта для изменения хранителя контракта.
Атакующий использует функцию verifyHeaderAndExecuteTx, передавая тщательно сконструированные данные, чтобы функция _executeCrossChainTx вызвала функцию putCurEpochConPubKeyBytes контракта EthCrossChainData, тем самым изменяя роль keeper на адрес, указанный атакующим. Завершив этот шаг, атакующий может создать транзакцию для извлечения любого количества средств из контракта.
Процесс атаки
Атакующий сначала вызывает функцию putCurEpochConPubKeyBytes через функцию verifyHeaderAndExecuteTx контракта EthCrossChainManager, изменяя keeper.
Затем злоумышленник провел серию атакующих сделок, извлекая средства из контракта.
После завершения атаки, из-за изменения keeper, нормальные транзакции других пользователей были отклонены.
Эта атака происходит не только на BSC, но и на сети Ethereum наблюдаются аналогичные действия.
!
Заключение
Ключом к этой атаке является то, что keeper контракта EthCrossChainData может быть изменен контрактом EthCrossChainManager, а функция verifyHeaderAndExecuteTx последнего может выполнять переданные пользователем данные через функцию _executeCrossChainTx. Атакующий использовал этот проектный недостаток, конструктивно изменив адрес keeper контракта EthCrossChainData с помощью определенных данных, тем самым достигнув своей цели атаки.
Это событие вновь подчеркивает важность безопасности кросс-цепочных протоколов и напоминает разработчикам о необходимости быть более осторожными при проектировании смарт-контрактов, особенно в отношении функций, связанных с изменением полномочий ключевых ролей. В то же время пользователям также следует оставаться бдительными при использовании кросс-цепочных услуг и обращать внимание на связанные с безопасностью новости.