Répartition : comment le pirate informatique a volé 80 XNUMX ETH sur le pont Solana Wormhole PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Répartition : comment le pirate a volé 80 XNUMX ETH au pont Solana Wormhole

Un des pires hacks contre la blockchain Solana s'est produit mercredi lorsqu'un pirate informatique a réussi à transférer 80,000 214 ether (ETH), soit plus de XNUMX millions de dollars au moment de la rédaction, hors du système Solana et dans la blockchain Ethereum via le pont Wormhole – un service offrant la possibilité de transférer fonds entre les différentes blockchains.

Expliqué dans un tweet fil par le profil Twitter pseudonyme contrats intelligents, le pirate a finalisé l'exploit en transférant les 80,000 XNUMX ETH du contrat intelligent Wormhole sur Ethereum en un seul transaction. Il s'est avéré que ce n'était que le dernier mouvement d'une série de piratages qui ont permis au pirate de voler les fonds. 

« Bien qu'elle soit spectaculaire, cette transaction n'est que la toute fin d'une intéressante série d'événements. J'ai dû commencer à revenir en arrière pour comprendre comment cela était même possible », tweete smartcontracts.

Les tuteurs ont signé un faux transfert

Wormhole est un soi-disant pont, un contrat intelligent, sur Ethereum dans ce cas, qui fournit un moyen de déplacer des actifs cryptographiques entre différentes blockchains. Selon les contrats intelligents, d'un point de vue de haut niveau, Wormhole dispose spécifiquement d'un ensemble de soi-disant tuteurs qui approuvent les transferts entre les blockchains.

Les gardiens de Wormhole avaient en quelque sorte approuvé ce transfert de 80,000 100 ETH comme s'il était XNUMX% légitime.

"La transaction qui a retiré 80,000 XNUMX ETH était en fait l'attaquant transférant 80,000 XNUMX ETH de Solana à Ethereum. Au départ, je pensais que le contrat avait peut-être validé de manière incorrecte les signatures sur le transfert, mais les signatures [ont été] complètement vérifiées.

Selon smartcontracts, la première percée et explication partielle est venue d'un transaction sur Solana qui a en quelque sorte frappé 120,000 XNUMX "Wormhole ETH", enveloppé d'éther sur Solana, sorti de nulle part. Étant donné que le pirate a pu frapper Wormhole ETH sur Solana, il a pu le retirer correctement vers Ethereum.

"Solana est un peu bizarre"

En examinant l'historique des transactions du pirate informatique, il y a une transaction qui a eu lieu juste avant la frappe des 120,000 XNUMX ETH Wormhole. Dans ce transaction, le pirate frappe seulement 0.1 ETH Wormhole, comme s'il testait la fonction avec une petite quantité.

Un examen plus approfondi de l'historique des transactions du pirate révèle que le pirate a fait un Dépôt de 0.1 ETH d'Ethereum en Solana. Bien que l'attaquant n'ait pas effectué de dépôt ETH de 120,000 XNUMX ETH dans le contrat intelligent Wormhole sur Ethereum, ce dépôt a quelque chose d'intéressant.

Comme l'explique smartcontract dans son tweet, les transactions qui ont frappé Wormhole ETH sur Solana déclenchaient un contrat intelligent Wormhole fonction appelée "complete_wrapped“. L'un des paramètres pris par cette fonction est un "message de transfert", essentiellement un message signé par les gardiens du pont qui dit quel jeton frapper et combien.

"Solana est un peu bizarre, donc ces paramètres sont en fait des contrats intelligents eux-mêmes. Mais l'important est de savoir comment ces contrats de « message de transfert » sont créés. Ici se trouve le transaction qui a créé le message de transfert 0.1 ETH », tweete smartcontracts.

Qui vérifie les dames ?

Ce contrat de « message de transfert » est créé en déclenchant un fonction appelée "post_vaa“. La chose la plus importante est que post_vaa vérifie si le message est valide en vérifiant les signatures des tuteurs. Cette partie semble assez raisonnable, dit smartcontracts, mais c'est cette étape de vérification de la signature qui a tout cassé.

La fonction "post_vaa" ne vérifie pas réellement les signatures. Au lieu de cela, à la manière typique de Solana, il existe un autre contrat intelligent qui est créé en appelant le "vérifier_signatures » fonction. L'un des entrées à la fonction «verify_signatures» se trouve un programme «système» intégré à Solana qui contient divers utilitaires que le contrat peut utiliser.

Dans "verify_signatures", le programme Wormhole tente de vérifier que l'exécution qui s'est produite juste avant le déclenchement de cette fonction était que le Secp256k1 fonction de vérification de signature a été exécutée.

« Cette fonction de vérification est un outil intégré censé vérifier que les signatures données sont correctes. La vérification des signatures a donc été sous-traitée à ce programme. Mais c'est là qu'intervient le bogue », tweete smartcontracts.

Les contrats Wormhole utilisaient la fonction charger_instruction_at pour vérifier que la fonction Secp256k1 a été appelée en premier, mais la fonction load_instruction_at a été obsolète relativement récemment car elle ne vérifie pas qu'il s'exécute par rapport à l'adresse système réelle!

Game Over

Selon les smartcontracts, l'appelant est censé fournir autant contribution l'adresse système du programme en cours d'exécution, mais le pirate a fourni une adresse système différente.

Voici cette adresse système utilisée comme entrée pour le "verify_signatures" pour le dépôt légitime de 0.1 ETH :

Saisie correcte de l'adresse système
Saisie correcte de l'adresse système

Mais voici la transaction "verify_signatures" pour le faux dépôt de 120k ETH :

Entrée d'adresse système
Entrée d'adresse système erronée 

Ce n'est pas l'adresse système !

« En utilisant ce « faux » programme système, l'attaquant pourrait effectivement mentir sur le fait que le programme de vérification de signature a été exécuté. Les signatures n'étaient pas vérifiées du tout ! », tweete smartcontracts.

«Après ce point, la partie était terminée. L'attaquant a fait croire que les gardiens avaient signé un dépôt de 120 80 $ dans Wormhole sur Solana, même s'ils ne l'avaient pas fait. Tout ce que l'attaquant devait faire maintenant était de rendre son argent « fictif » réel en le retirant à Ethereum. Et un retrait de 10k ETH + XNUMXk ETH plus tard (tout dans le pont sur Ethereum), tout était parti.

Everdome

Newsletter CryptoSlate

Présentant un résumé des histoires quotidiennes les plus importantes dans le monde de la crypto, DeFi, NFT et plus encore.

Munissez-vous d'un bord sur le marché des crypto-actifs

Accédez à plus d'informations cryptographiques et de contexte dans chaque article en tant que membre payant de Bord CryptoSlate.

Analyse en chaîne

Instantanés de prix

Plus de contexte

Inscrivez-vous maintenant pour 19 $ / mois Découvrez tous les avantages

Source : https://cryptoslate.com/breakdown-how-the-hacker-stole-80k-eth-from-the-solana-wormhole-bridge/

Horodatage:

Plus de CryptoSlate