Incident d'attaque off-chain de 300 000 $ : une vulnérabilité de stockage transitoire a causé des dommages aux projets de Trading sur marge.

robot
Création du résumé en cours

Résidu mortel : un événement d'attaque de 300 000 dollars off-chain provenant d'un stockage transitoire

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

Contexte

La version 0.8.24 de Solidity (publiée en janvier 2024) introduit des caractéristiques de stockage transitoire basées sur l'EIP-1153. Il s'agit d'un nouvel emplacement de stockage de données, conçu pour fournir aux développeurs une méthode de stockage temporaire efficace pendant les transactions et à faible coût.

Les principales caractéristiques du stockage transitoire comprennent :

  1. Coût de gas bas : le coût de gas des opérations TSTORE et TLOAD est fixe à 100.
  2. Persistance des transactions : les données restent valides pendant toute la durée de la transaction.
  3. Suppression automatique : après la fin de la transaction, le stockage transitoire est automatiquement réinitialisé à zéro.

Résidu mortel : un vol de 300 000 dollars déclenché par un stockage transitoire

Source de l'attaque

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

Résidu mortel : un vol de 300 000 dollars off-chain déclenché par un stockage transitoire

Processus d'attaque

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

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

  3. L'attaquant appelle la fonction mint du contrat Vault, en déposant le token de dette B pour émettre le token de levier APE. Dans ce processus, deux opérations de stockage transitoire sont impliquées : d'abord, l'adresse d'une piscine DEX est stockée, puis la quantité de tokens émis est stockée.

Résidu mortel : un vol de 300 000 dollars off-chain provoqué par un stockage transitoire

  1. L'attaquant crée un contrat malveillant par des méthodes spéciales, dont l'adresse est identique à celle de la valeur du stockage transitoire lors de la deuxième fois.

  2. L'attaquant appelle directement la fonction de rappel du contrat Vault à travers ce contrat malveillant pour retirer des jetons. Comme la valeur dans le stockage transitoire n'a pas été effacée, cela conduit à un contrôle d'identité du demandeur qui est incorrectement validé.

  3. Enfin, l'attaquant appelle la fonction de rappel du contrat Vault via l'attaque du contrat (token A) et transfère d'autres tokens du contrat Vault (comme WBTC, WETH) pour réaliser un profit.

Dépôt mortel : un braquage de 300 000 $ provoqué par un stockage transitoire

Délit mortel : un vol de 300 000 dollars off-chain provoqué par un stockage transitoire

Résidu mortel : un braquage de 300 000 dollars off-chain provoqué par un stockage transitoire

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

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

Résidu mortel : un vol de 300 000 $ hors ligne provoqué par un stockage transitoire

Résidu mortel : un vol de 300 000 $ off-chain déclenché par un stockage transitoire

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

Délit mortel : un vol de 300 000 $ causé par un stockage transitoire off-chain

Délit fatal : un braquage de 300 000 dollars déclenché par un stockage transitoire

Résidu mortel : un vol de 300 000 dollars off-chain déclenché par un stockage transitoire

Résidu mortel : un vol de 300 000 $ off-chain provoqué par un stockage transitoire

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

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

Analyse des flux de fonds

Selon l'analyse des outils d'analyse off-chain, les attaquants ont volé environ 300 000 dollars d'actifs, y compris 17 814,8626 USDC, 1,4085 WBTC et 119,871 WETH. Ces actifs ont ensuite été consolidés et convertis en WETH, avant d'être finalement transférés vers un certain protocole de trading privé.

Les fonds initiaux de l'attaquant proviennent de 0,3 ETH transférés via le protocole de transaction privée.

Résumé et recommandations

Le cœur de cette attaque réside dans le fait que l'attaquant a utilisé la caractéristique de stockage transitoire qui maintient la valeur inchangée pendant toute la durée de la transaction, contournant ainsi la vérification des autorisations de la fonction de rappel pour en tirer profit. Pour éviter que des situations similaires ne se produisent, il est conseillé aux équipes de projet :

  1. Selon la logique métier, utilisez immédiatement tstore(key, 0) pour effacer les valeurs dans le stockage temporaire à la fin de l'appel de fonction.
  2. Renforcer l'audit du code des contrats et les tests de sécurité.
  3. Utilisez avec prudence les nouvelles fonctionnalités introduites, et comprenez bien leurs risques potentiels.
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 6
  • Partager
Commentaire
0/400
LayerZeroHerovip
· 08-02 23:27
Une attaque doit avoir une porte dérobée
Voir l'originalRépondre0
Web3ProductManagervip
· 08-01 12:37
Attaque sur le point de friction classique de l'UX
Voir l'originalRépondre0
OnchainDetectivevip
· 08-01 04:23
Une seule erreur de code peut tout faire échouer.
Voir l'originalRépondre0
SchrodingersFOMOvip
· 08-01 04:18
Il est dangereux de monter avant d'avoir testé.
Voir l'originalRépondre0
ProbablyNothingvip
· 08-01 04:18
Il y aura tôt ou tard des failles.
Voir l'originalRépondre0
rug_connoisseurvip
· 08-01 04:11
Nouveau bug pour gagner de l'argent rapidement
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)