MultiversX Wiki - Que s'est-il passé ?
  Que s'est-il passé ?
Publié par Olag ⚡ | Le 08/06/2022  |  Category: Thread

Le 5 juin à 22h04 UTC, un hacker a volé 1 650 000 EGLD.
Félicitations à l'équipe d'Elrond qui a travaillé sans relâche et a réussi à récupérer tous les fonds.

Mais où le hacker a-t-il volé l'EGLD ? Et comment?
C'est l'heure des explications complètes

À 22h, 3 comptes ont retiré de 3 smart-contract d'énormes quantités d'EGLD qui semblaient venir de nulle part :

-450k EGLD sur le shard 0 (22h04)
https://explorer.elrond.com/transactions/39998ab5c929fa67e95d0c64081697fc4207235dbfeaaff10fb2704a6c7716b6
-800k EGLD sur le shard 1 (22h05)
https://explorer.elrond.com/transactions/41effd8536376f3a2edba7074c02776edae94bb5b464485ac414847202eebbe2
-400k EGLD sur le shard 2 (22h06)
https://explorer.elrond.com/transactions/8b8c332577e5b8bdd4e13450ea92b7c6b0ca15399f1f0bb38fc215cfc3ddb490

Concentrons-nous sur le shard 1.
Dans la tx ci-dessus, on voit que le hacker a reçu EGLD en appelant la méthode "withdraw" de son SC (Smart Contract).
Nous avons téléchargé le code binaire de ce SC depuis l'explorateur et l'avons converti dans un format plus facile à comprendre (format WAT).

Dans ce dossier, nous avons recherché les principales méthodes du SC.
Nous avons trouvé la méthode « withdraw », mais plus important encore, une méthode appelée « wrap_egld_callback ».
Cela suggère que l'énorme quantité d'EGLD volée provenait du WEGLD SC (en charge de  wrapping/unwrapping de l'EGLD).

Sur l'explorateur, nous avons chassé les txs suspects passant par WEGLD SC vers 22h.
Nous en avons trouvé un où WEGLD SC a appelé la méthode d'un nouveau SC. Et devinez quoi... cette méthode s'appelait "wrap_egld_callback".
Nous avons donc examiné les détails de cette transmission.

Dans ce tx, le nouveau SC envoie une petite quantité d'EGLD à la méthode "wrapEgld" de WEGLD SC. Cette méthode renvoie WEGLD à la méthode "wrap_egld_callback" du nouveau SC.
En effet, lors de l'appel de "wrapEgld", nous pouvons spécifier la méthode que WEGLD SC doit rappeler.

Nous avons alors trouvé des preuves tangibles que ce nouveau SC appartient également au hacker :

- Dans sa mémoire, le nouveau SC enregistre l'adresse du SC du premier pirate.
https://gateway.elrond.com/address/erd1qqqqqqqqqqqqpgq8urd3mza45z6th63h52e00zpgvrc5zxll9cshfqmhg/keys
- Le code binaire du nouveau SC est exactement le même que celui du premier SC.

 

Pour rappel, le hacker a déployé deux contrats (SC A et SC B) :

-A 22h01, le hacker appelle SC A. SC A appelle WEGLD SC qui wrap quelques EGLD et rappelle la méthode « wrap_egld_callback » de SC A.
-A 22h05, il appelle la méthode "withdraw" de SC B et reçoit 800k EGLD.

En inspectant le code de la méthode « wrap_egld_callback », nous avons découvert 2 choses intéressantes (cf capture d'écran) :

- Le montant "800000" semble définir le montant d'EGLD à transférer.
- La méthode "managedExecuteOnDestContextByCaller" semble transférer l'EGLD de WEGLD SC.

Pour valider ces suppositions, nous avons créé deux référentiels :

  • un pour reproduire le hack avec le code binaire du hacker,
  • un pour reproduire le hack avec notre propre Rust SC.

Dans les deux cas, nous avons réussi à faire en sorte que WEGLD SC envoie 800k EGLD à une adresse de notre choix.

"managedExecuteOnDestContextByCaller" était l'ingrédient clé du hack.
Comme son nom l'indique, lorsque WEGLD SC appelle SC A, il permet à SC A d'exécuter un transfert de token dans le contexte de WEGLD SC, l'appelant.
De cette façon, SC A a pu faire en sorte que WEGLD SC envoie 800k EGLD à SC B.

Félicitations si vous êtes arrivé ici : vous avez compris le hack dans les détails !
Si les EGLD retirés par le hacker semblaient provenir de nulle part, c'est parce qu'ils ont été transférés à l'aide de « managedExecuteOnDestContextByCaller », que l'explorateur n'affichait pas.

Ce que nous avons décrit sur le shard 1 s'est produit exactement de la même manière sur les shard 0 et 2.
Le hacker a échangé l'EGLD contre l'USDC sur Maiar et a tenté de les relier à Ethereum.
Pour l'arrêter, l'équipe d'Elrond a suspendu les contrats intelligents nécessaires et a enquêté.

  Source

  Twitter

Ecrit par Arda

  Publicité

Tweet Partager  
Olag ⚡
@olag

Développeur de MultiversX Wiki - Contributeur

Twitter    Telegram     Site web

Pour pouvoir publier votre commentaire sur cet article Connectez-vous
  Commentaires

  évènement
Pas évènement :(
  Creator Studio
Cet outil est conçu pour faciliter l'ajout de collections et d'artistes NFT ainsi que l'ajout de tokens de projets construits sur MultiversX. De nouvelles options à venir bientôt.
  Creator Studio
  Publicité
  Scam or not ?
...

Vous pouvez vérifier si vous n'avez pas à faire à un scam

Vérifier maintenant