Poly Network a été attaqué par des hackers : une vulnérabilité de contrat a conduit à la modification du keeper.

robot
Création du résumé en cours

Analyse de l'incident d'attaque du Hacker sur Poly Network

Récemment, le protocole d'interopérabilité cross-chain Poly Network a subi une attaque de hacker, suscitant une large attention. Après une analyse approfondie de l'équipe de sécurité, il a été constaté que l'attaquant n'avait pas mené l'attaque par la fuite de la clé privée du keeper, mais avait plutôt exploité une vulnérabilité dans le contrat.

Principe de l'attaque

Le cœur de l'attaque réside dans la fonction verifyHeaderAndExecuteTx du contrat EthCrossChainManager, qui peut exécuter des transactions inter-chaînes spécifiques via la fonction _executeCrossChainTx. Étant donné que le propriétaire du contrat EthCrossChainData est le contrat EthCrossChainManager, ce dernier peut appeler la fonction putCurEpochConPubKeyBytes de ce dernier pour modifier le keeper du contrat.

L'attaquant a réussi à faire appel à la fonction putCurEpochConPubKeyBytes du contrat EthCrossChainData en passant des données soigneusement construites à la fonction verifyHeaderAndExecuteTx, ce qui a conduit à l'exécution de la fonction _executeCrossChainTx et à un changement du rôle de keeper vers l'adresse spécifiée par l'attaquant. Une fois le remplacement du rôle de keeper terminé, l'attaquant peut alors construire des transactions à sa guise et extraire n'importe quel montant de fonds du contrat.

Processus d'attaque

  1. L'attaquant a d'abord appelé la fonction putCurEpochConPubKeyBytes via la fonction verifyHeaderAndExecuteTx du contrat EthCrossChainManager, modifiant ainsi le keeper.

  2. Ensuite, l'attaquant a utilisé les permissions modifiées pour effectuer une série de transactions d'attaque, extrayant des fonds du contrat.

  3. En raison de la modification du keeper, les transactions normales des autres utilisateurs ont été refusées.

  4. Ce mode d'attaque ne se produit pas seulement sur la chaîne BSC, mais le réseau Ethereum a également été confronté à des opérations d'attaque similaires.

Conclusion

La cause fondamentale de cet incident d'attaque réside dans le fait que le keeper du contrat EthCrossChainData peut être modifié par le contrat EthCrossChainManager, tandis que la fonction verifyHeaderAndExecuteTx du contrat EthCrossChainManager peut exécuter les données saisies par l'utilisateur via la fonction _executeCrossChainTx. L'attaquant a exploité ce défaut de conception en construisant des données spécifiques pour modifier le keeper du contrat EthCrossChainData, permettant ainsi le vol de fonds.

Cet événement souligne à nouveau l'importance de la conception de la sécurité des protocoles inter-chaînes, en particulier en ce qui concerne la gestion des autorisations et les appels de fonctions qui nécessitent des audits et des restrictions plus stricts. Pour les projets de finance décentralisée, des audits de sécurité continus et des corrections de vulnérabilités sont essentiels pour prévenir la survenance d'attaques similaires.

Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 4
  • Reposter
  • Partager
Commentaire
0/400
HodlKumamonvip
· Il y a 3h
Ah ah ah, comment l'audit QA peut-il être si flou~
Voir l'originalRépondre0
AirdropATMvip
· Il y a 3h
Les failles de contrat sont vraiment ennuyeuses.
Voir l'originalRépondre0
TokenCreatorOPvip
· Il y a 3h
Encore été liquidé, n'est-ce pas ?
Voir l'originalRépondre0
PoolJumpervip
· Il y a 3h
Après avoir été autant plumé, le contrat ose encore parler de vulnérabilités ?
Voir l'originalRépondre0
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)