TechFlow, Ethan Buchman, cofondateur de Cosmos, a commenté l'incident d'attaque du pont entre chaînes BSC, indiquant que le cœur du problème réside dans la capacité des pirates à falsifier des preuves Merkle. Cela ne devrait pas être possible, car les preuves Merkle doivent garantir une haute intégrité. Les clients légers de blockchain (et IBC) reposent sur des preuves Merkle, et de nombreuses blockchains stockent leurs données dans des arbres Merkle afin de pouvoir générer des preuves attestant qu'une donnée spécifique est bien incluse dans l'arbre.
Les chaînes Cosmos utilisent un type d'arbre Merkle appelé IAVL. Le dépôt IAVL expose publiquement une API utilisant des « preuves par plage » (RangeProof), mais il s'avère que le fonctionnement interne de RangeProof comporte une grave faille. Le problème de code dans les RangeProof IAVL réside dans le fait qu'il permet de remplir les champs Left et Right des nœuds internes. Les attaquants ont essentiellement exploité cette possibilité en insérant des informations non vérifiées dans le champ Right, des informations qui n'affectent ni la validation ni le calcul de hachage, induisant ainsi le vérificateur en erreur en lui faisant croire que certains nœuds feuilles faisaient partie de l'arbre. Ainsi, ils ont réussi à falsifier une preuve Merkle.
Buchman précise que, bien que l'utilisation de RangeProof ne soit pas recommandée, il existe une solution potentielle : rejeter préalablement toute preuve où un nœud interne possède à la fois ses champs gauche et droit remplis. Dans le cas des preuves Merkle utilisées par IBC, IBC n'utilise pas le système intégré de RangeProof de l'arbre IAVL ; à la place, il utilise la norme ICS23 pour générer et vérifier les preuves Merkle à partir de l'arbre IAVL. Le code ICS23 ne présente pas cette vulnérabilité, car il rejette explicitement les RangeProof.Lien original




