Analyse de l'incident de cyberattaque de Poly Network
Récemment, le protocole d'interopérabilité cross-chain Poly Network a subi une attaque de hacker, suscitant une large attention. Selon l'analyse de l'équipe de sécurité, cette attaque n'est pas due à une fuite de la clé privée du keeper, mais les attaquants ont utilisé des données habilement construites pour exploiter une vulnérabilité du contrat et modifier l'adresse du keeper du contrat EthCrossChainData.
Attaque du noyau
La clé de l'attaque réside dans la fonction verifyHeaderAndExecuteTx du contrat EthCrossChainManager. Cette fonction peut exécuter des transactions inter-chaînes spécifiques via la fonction _executeCrossChainTx. Comme le propriétaire du contrat EthCrossChainData est le contrat EthCrossChainManager, ce dernier a le droit d'appeler la fonction putCurEpochConPubKeyBytes du contrat EthCrossChainData pour modifier le keeper.
L'attaquant exploite ce mécanisme en passant des données soigneusement conçues à la fonction verifyHeaderAndExecuteTx, ce qui a conduit à l'exécution de l'appel de fonction putCurEpochConPubKeyBytes du contrat EthCrossChainData par la fonction _executeCrossChainTx, modifiant ainsi le rôle de keeper en l'adresse spécifiée par l'attaquant.
Processus d'attaque
L'attaquant a d'abord appelé la fonction putCurEpochConPubKeyBytes via la fonction verifyHeaderAndExecuteTx du contrat EthCrossChainManager, modifiant ainsi le keeper.
Après avoir terminé le remplacement de l'adresse du rôle de keeper, l'attaquant peut librement construire des transactions et extraire n'importe quel montant de fonds du contrat.
Après l'attaque, en raison des modifications apportées au keeper, les transactions normales des autres utilisateurs ont été refusées.
Ce mode d'attaque n'a pas seulement été mis en œuvre sur la chaîne BSC, des opérations similaires se sont également produites sur le réseau Ethereum.
Conclusion
La cause fondamentale de cette attaque réside dans le fait que le keeper du contrat EthCrossChainData peut être modifié par le contrat EthCrossChainManager, et que la fonction verifyHeaderAndExecuteTx de ce contrat peut exécuter les données fournies par l'utilisateur. L'attaquant a exploité ce défaut de conception en construisant des données spécifiques pour modifier l'adresse du keeper du contrat EthCrossChainData, et non par la fuite de la clé privée du keeper comme cela avait été précédemment rapporté.
Cet événement met à nouveau en évidence l'importance de la conception de la sécurité des protocoles inter-chaînes et les exigences strictes en matière de gestion des autorisations des contrats. Il nous rappelle également que, dans l'écosystème blockchain, même des fonctionnalités apparemment inoffensives, si elles sont exploitées de manière malveillante, peuvent entraîner de graves vulnérabilités de sécurité.
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.
Poly Network a été attaqué par un Hacker : une vulnérabilité du contrat a conduit à la falsification du keeper.
Analyse de l'incident de cyberattaque de Poly Network
Récemment, le protocole d'interopérabilité cross-chain Poly Network a subi une attaque de hacker, suscitant une large attention. Selon l'analyse de l'équipe de sécurité, cette attaque n'est pas due à une fuite de la clé privée du keeper, mais les attaquants ont utilisé des données habilement construites pour exploiter une vulnérabilité du contrat et modifier l'adresse du keeper du contrat EthCrossChainData.
Attaque du noyau
La clé de l'attaque réside dans la fonction verifyHeaderAndExecuteTx du contrat EthCrossChainManager. Cette fonction peut exécuter des transactions inter-chaînes spécifiques via la fonction _executeCrossChainTx. Comme le propriétaire du contrat EthCrossChainData est le contrat EthCrossChainManager, ce dernier a le droit d'appeler la fonction putCurEpochConPubKeyBytes du contrat EthCrossChainData pour modifier le keeper.
L'attaquant exploite ce mécanisme en passant des données soigneusement conçues à la fonction verifyHeaderAndExecuteTx, ce qui a conduit à l'exécution de l'appel de fonction putCurEpochConPubKeyBytes du contrat EthCrossChainData par la fonction _executeCrossChainTx, modifiant ainsi le rôle de keeper en l'adresse spécifiée par l'attaquant.
Processus d'attaque
L'attaquant a d'abord appelé la fonction putCurEpochConPubKeyBytes via la fonction verifyHeaderAndExecuteTx du contrat EthCrossChainManager, modifiant ainsi le keeper.
Après avoir terminé le remplacement de l'adresse du rôle de keeper, l'attaquant peut librement construire des transactions et extraire n'importe quel montant de fonds du contrat.
Après l'attaque, en raison des modifications apportées au keeper, les transactions normales des autres utilisateurs ont été refusées.
Ce mode d'attaque n'a pas seulement été mis en œuvre sur la chaîne BSC, des opérations similaires se sont également produites sur le réseau Ethereum.
Conclusion
La cause fondamentale de cette attaque réside dans le fait que le keeper du contrat EthCrossChainData peut être modifié par le contrat EthCrossChainManager, et que la fonction verifyHeaderAndExecuteTx de ce contrat peut exécuter les données fournies par l'utilisateur. L'attaquant a exploité ce défaut de conception en construisant des données spécifiques pour modifier l'adresse du keeper du contrat EthCrossChainData, et non par la fuite de la clé privée du keeper comme cela avait été précédemment rapporté.
Cet événement met à nouveau en évidence l'importance de la conception de la sécurité des protocoles inter-chaînes et les exigences strictes en matière de gestion des autorisations des contrats. Il nous rappelle également que, dans l'écosystème blockchain, même des fonctionnalités apparemment inoffensives, si elles sont exploitées de manière malveillante, peuvent entraîner de graves vulnérabilités de sécurité.