Le projet Ethereum a subi une attaque de 300 000 dollars, la défaillance de stockage transitoire étant la principale cause.

robot
Création du résumé en cours

Une vulnérabilité de stockage temporaire a conduit à une attaque de 300 000 dollars sur le projet Ethereum

Le 30 mars 2025, un système de surveillance de sécurité a détecté une attaque contre un projet de trading à effet de levier sur la chaîne Ethereum, entraînant une perte de plus de 300 000 dollars d'actifs. L'équipe de sécurité a analysé cet événement et partage maintenant les résultats comme suit :

Connaissances de base

La version 0.8.24 de Solidity a introduit la fonctionnalité de stockage transitoire (transient storage), qui est un nouvel emplacement de stockage de données. Sa caractéristique principale est que les données ne sont valides que pendant l'exécution de la transaction actuelle et sont automatiquement supprimées à la fin de la transaction. L'accès et la modification sont réalisés par deux nouvelles instructions EVM, TSTORE et TLOAD.

Le stockage transitoire présente les caractéristiques suivantes :

  • Coût de gas bas : le coût de gas de TSTORE et TLOAD est fixe à 100
  • Persistance des données dans les transactions : les données restent valides pendant toute la durée de la transaction.
  • Nettoyage automatique : réinitialisation automatique à zéro après la fin de la transaction

Résidu mortel : un vol de 300 000 $ sur la chaîne provoqué par un stockage transitoire

Cause de la vulnérabilité

La cause fondamentale de cet événement est que la valeur utilisée avec tstore pour le stockage transitoire dans la fonction n'a pas été effacée après la fin de l'appel de fonction. Cela a permis à l'attaquant d'exploiter cette caractéristique pour construire des adresses malveillantes spécifiques et contourner les vérifications de droits pour transférer des jetons.

Résidu mortel : un vol en chaîne de 300 000 dollars déclenché par le stockage transitoire

Processus d'attaque

  1. L'attaquant crée deux jetons malveillants A et B, et crée des pools pour ces deux jetons sur un DEX en injectant de la liquidité, où le jeton A est le contrat d'attaque.

  2. L'attaquant appelle la fonction initialize du contrat Vault, utilisant le jeton A comme jeton de garantie et le jeton B comme jeton de dette pour créer un marché de trading à effet de levier APE-21.

  3. L'attaquant appelle la fonction mint du contrat Vault, dépose le token de dette B pour frapper le token à effet de levier APE. Dans ce processus, l'adresse de la piscine DEX et la quantité frappée sont stockées temporairement l'une après l'autre.

  4. L'attaquant crée un contrat malveillant dont l'adresse est identique à la valeur du stockage transitoire lors de la deuxième fois.

  5. L'attaquant appelle directement la fonction de rappel du contrat Vault via ce contrat malveillant pour transférer des jetons. Étant donné que les valeurs dans le stockage transitoire n'ont pas été effacées, cela entraîne un passage erroné de la vérification d'identité.

  6. Enfin, l'attaquant appelle la fonction de rappel du contrat Vault en attaquant le contrat (token A), ce qui lui permet de transférer d'autres tokens (WBTC, WETH) du contrat Vault pour réaliser un profit.

Résidu mortel : un vol de 300 000 $ sur la chaîne déclenché par le stockage transitoire

Résidu mortel : un vol de 300 000 dollars sur la chaîne provoqué par un stockage transitoire

Résidu mortel : un braquage de 300 000 dollars sur la chaîne déclenché par un stockage transitoire

Résidu mortel : un braquage de 300 000 dollars sur la chaîne provoqué par un stockage transitoire

Résidu mortel : un vol de 300 000 dollars sur la chaîne déclenché par un stockage transitoire

Résidu mortel : un vol de 300 000 dollars sur la chaîne déclenché par un stockage transitoire

Résidu mortel : un vol en chaîne de 300 000 dollars provoqué par le stockage transitoire

Résidu mortel : un braquage en chaîne de 300 000 dollars provoqué par un stockage transitoire

Résidu mortel : un braquage à 300 000 dollars sur la chaîne déclenché par un stockage transitoire

Résidu mortel : un vol de 300 000 dollars sur la chaîne provoqué par un stockage transitoire

Résidu mortel : un braquage en chaîne de 300 000 $ provoqué par un stockage transitoire

Analyse des flux de fonds

Selon l'analyse on-chain, l'attaquant a volé environ 300 000 dollars d'actifs, comprenant 17 814,8626 USDC, 1,4085 WBTC et 119,871 WETH.

  • WBTC a été échangé contre 63.5596 WETH
  • USDC a été échangé contre 9.7122 WETH
  • Un total de 193.1428 WETH a été transféré vers un service de mélange de devises.

Les fonds initiaux de l'attaquant proviennent de 0,3 ETH transférés d'un service de mélange de crypto-monnaies.

Résidu mortel : un braquage de 300 000 dollars sur la chaîne provoqué par un stockage transitoire

Résidu mortel : un vol de 300 000 dollars sur la chaîne provoqué par un stockage transitoire

Résidu mortel : un braquage en chaîne de 300 000 $ déclenché par un stockage transitoire

Résidu mortel : un braquage de 300 000 dollars sur la chaîne provoqué par le stockage transitoire

Résumé et recommandations

L'attaque repose sur l'exploitation de la caractéristique du stockage transitoire qui conserve les valeurs pendant toute la durée de la transaction, contournant ainsi la vérification des autorisations des fonctions de rappel. Il est conseillé aux équipes de projet d'utiliser immédiatement tstore(key, 0) après la fin de l'appel de fonction pour effacer les valeurs du stockage transitoire en fonction de la logique métier. De plus, il est nécessaire de renforcer l'audit du code des contrats et les tests de sécurité afin d'éviter que des situations similaires ne se reproduisent.

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 3
  • Partager
Commentaire
0/400
CommunitySlackervip
· Il y a 15h
Un autre projet devenu une machine à retirer.
Voir l'originalRépondre0
BlockchainDecodervip
· Il y a 15h
D'un point de vue technique, c'est un usage incorrect du stockage transitoire typique.
Voir l'originalRépondre0
StealthMoonvip
· Il y a 15h
Encore une vulnérabilité de stockage temporaire ? Réveillez-vous.
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)