Nous sommes ici pour voir comment il s'y est pris, analyser et déterminer ce qui a été exploité et pourquoi a-t-il rendu les 666 Millions qu'il a dérobés à @PolyNetwork2.
Polynetwork est un projet de transaction cross-chain qui vous permet de déplacer des actifs ou des jetons entre différents protocoles blockchain comme ethereum ou polygon.
C'est assez technique, donc prenez un Dafalgan car votre cerveau risque de chauffer, je vais vous expliquer tout ça pour que même les personnes qui ne comprennent rien aux fonctions informatiques puissent suivre.
Bonne lecture à vous !
Pour commencer, j'ai pris quelques exemples pour que vous compreniez la suite,
il y a un comptable (b) qui a le contrôle de la banque.
Donc ce comptable (b) a le contrôle des comptes bancaires dans lesquels se trouve tout l'argent,
ce comptable (b) a un patron (a), et ce qui se passe c'est que les gens vont voir le patron et disent:
"Je veux faire cette transaction", le patron (a) vérifie si c'est une transaction valide ou non, et si c'est une transaction valide.
Alors le patron (a) donne des instructions au comptable (b) (qui ne répond qu'au patron) et lui dit d'effectuer les transactions financières suivantes pour lui, et tout cela fonctionne très bien.
Sauf que Mr. White Hat l'a fait fonctionné à sa manière,
Passons à l'explication un peu technique, je vais faire de mon mieux pour que vous compreniez, pour ce faire, retenez cela, 👇
"EthCrossChainManageur" (le comptable qui est le propriétaire de "EthCrossChainData", qui lui même a un gardien qu'on appellera (le patron),
Lorsque nous analysons l'attaque, nous pouvons voir que l'attaque a principalement fonctionné parce qu'il y a un gardien (le patron) dans un contrat appelé "EthCrossChainData" qui peut être modifié par un autre contrat séparé appelé "EthCrossChainManager" (le comptable).
Donc, on peut comprendre que le patron peut être "modifié" à cause du contrat "EthCrossChainManager" et ses fonctions qui sont séparées du contrat "EthCrossChainData" (qui contient le gardien (le patron).
Et c'est la que se trouve la faille, entre le patron et le comptable. Le patron peut dire au comptable, "écoute, je ne suis plus ton patron, c'est l'autre type ici présent qui est ton patron".
C'est la première faiblesse.
Le contrat "EthCrossChainManager" (le comptable) a une fonction appelée "verifyHeaderAndExecuteTransaction", et cette fonction permet au contrat "EthCrossChainManager" (le comptable) d'exécuter les données transmises par Mr. White Hat (le hackeur).
Ensuite, la seconde faiblesse qu'on va voir si dessous est que le patron peut enfaite être hypnotisé en donnant une telle instruction au comptable grâce aux différentes fonctions dans le contrat "EthCrossChainData" qui contient le gardien (le patron).
Puisque le propriétaire du contrat "EthCrossChainData" est le contrat "EthCrossChainManager" (le comptable).
Le contrat "EthCrossChainManager" peut modifier le gardien (le patron) du contrat en appelant la fonction "putCurEpochConPubKeyBytes" du contrat "EthCrossChainData".
les données sont soigneusement construite et transmise par le biais de la fonction "verifyHeaderAndExecuteTx" pour que la fonction "_executeCrossChainTx" exécute l'appel à la fonction "PutCurEpochConPubKeyBytes" du contrat ""EthCrossChainData" afin de
modifier le rôle de gardien à l'adresse spécifiée de Mr. White Hat (le hackeur).
En gros, le patron c'est fait "hypnotiser",
Mr. White Hat a dit au patron de dire au comptable que le patron n'est plus le patron du comptable mais qu'il est le patron du comptable à la place,
On peut se demander, qu'est-ce qui a été mis dans cette transaction qui lui a permis de télécharger sa clé publique dans le bookkeeper et ainsi prendre le contrôle ?
C'est là que nous avons une "_méthod" qui a été fournie.
Une "_méthod" est un pointeur vers la fonction du contrat et elle peut être générée si vous avez le bon "hash" ;
Dans le cas de Mr. White Hat, c'est ce qu'il a fait, il devait fournir un identifiant de "_méthod" qui pointerait vers la fonction qui met à jour le bookkeeper
avec sa clé publique.
Une fois l'identifiant encodé, l'attaquant reçois la "_méthod",
"0x41973cd9"
Il l'encode...
Maintenant que notre attaquant avait sa clé publique, mise à jour dans le bookkeeper.
Il pouvait exécuter n'importe qu'elle transaction qu'il voulait.
Pourquoi a-t-il rendu les 666 Millions volés ?
Mr. White Hat a déclaré qu'il a volé les fonds afin de les mettre en sécurité suite à la découverte d'une faille dans les contrats de Poly Network, il voulait simplement contribuer à la sécurité de @PolyNetwork2
L’équipe de PolyNetwork lui on proposé une prime de 500 000 dollars pour le récompenser d’avoir identifié la faille, il a finalement accepté.
Il a même reçu une proposition d’embauche en tant que chef de sécurité chez eux, qu'il a refusé au risque de compromettre son identité.
Voilà pour ce thread, merci d'avoir lu jusqu'ici, si vous souhaitez en apprendre plus sur l'écosystème crypto, n'hésitez pas à me suivre juste ici ! @0xFaycy