Une vulnérabilité de stockage transitoire a conduit à une attaque de 300 000 dollars sur un projet Ethereum. L'équipe de sécurité analyse les détails clés.
Analyse de l'incident d'attaque off-chain de 300 000 dollars causé par une vulnérabilité de stockage transitoire
Le 30 mars 2025, un projet de trading à effet de levier sur la chaîne Ethereum a été attaqué, entraînant des pertes d'actifs de plus de 300 000 dollars. L'équipe de sécurité a effectué une analyse approfondie de cet incident et partage désormais 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. Ses principales caractéristiques incluent :
Coût de gas bas : le coût de gas des opérations TSTORE et TLOAD est fixé à 100.
Persistance des transactions : les données restent valides pendant toute la durée de la transaction.
Suppression automatique : après la fin de la transaction, le stockage transitoire est automatiquement réinitialisé à zéro.
Raison de l'attaque
La cause fondamentale de cet incident est que les valeurs utilisées dans la fonction pour le stockage transitoire avec tstore n'ont pas été effacées après la fin de l'appel de la fonction. L'attaquant a exploité cette caractéristique pour créer une adresse malveillante spécifique, contournant ainsi le contrôle d'autorisation et permettant le transfert de jetons.
Étapes de l'attaque
L'attaquant crée deux tokens malveillants A et B, et crée des pools pour ces deux tokens sur un certain DEX en injectant de la liquidité.
L'attaquant appelle la fonction initialize du contrat Vault, en 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.
L'attaquant appelle la fonction mint du contrat Vault, dépose le jeton de dette B pour frapper un jeton de levier. Dans ce processus, l'adresse de la piscine DEX est stockée de manière transitoire pour la première fois.
Lorsque le pool DEX effectue une opération d'échange, il appellera la fonction uniswapV3SwapCallback du contrat Vault. Cette fonction utilise tload pour récupérer des valeurs du stockage transitoire afin de vérifier l'identité de l'appelant, et stocke la quantité mintée dans un second stockage transitoire.
L'attaquant crée un contrat malveillant dont l'adresse est identique à la valeur du second stockage transitoire.
L'attaquant appelle directement la fonction uniswapV3SwapCallback du contrat Vault via ce contrat malveillant pour retirer des jetons. Étant donné que les valeurs dans le stockage transitoire n'ont pas été effacées, cela entraîne un passage incorrect de l'authentification.
Enfin, l'attaquant appelle la fonction uniswapV3SwapCallback du contrat Vault en attaquant le contrat (token A), ce qui lui permet de transférer d'autres tokens (comme WBTC, WETH) du contrat Vault pour réaliser un profit.
Analyse des flux de fonds
Selon l'analyse des outils de lutte contre le blanchiment d'argent et de traçage off-chain, les attaquants ont volé environ 300 000 dollars d'actifs, y compris :
17,814.8626 USDC
1.4085 WBTC
119.871 WETH
Ensuite, l'attaquant a échangé WBTC et USDC contre WETH, un total de 193,1428 WETH a été transféré dans un outil de mélange. La source de fonds initiale de l'attaquant provenait de 0,3 ETH transféré dans cet outil de mélange.
Conseils de sécurité
Le projet doit immédiatement utiliser tstore(key, 0) pour effacer les valeurs dans le stockage transitoire à la fin de l'appel de fonction en fonction de la logique commerciale.
Renforcer l'audit du code de contrat et les tests de sécurité pour éviter des vulnérabilités similaires.
Faites preuve de prudence lors de l'utilisation des nouvelles fonctionnalités introduites et comprenez bien leurs risques potentiels.
Établir un mécanisme de validation multiple, ne pas se fier uniquement à une méthode d'authentification.
Effectuer régulièrement des évaluations de sécurité et des analyses de vulnérabilité, et corriger rapidement les problèmes identifiés.
Cet incident d'attaque souligne à nouveau la nécessité pour les projets de blockchain d'être particulièrement prudents lors de l'utilisation des nouvelles caractéristiques technologiques, tout en mettant en évidence l'importance d'audits de sécurité continus. Les développeurs doivent toujours être attentifs aux meilleures pratiques de sécurité les plus récentes et suivre strictement ces pratiques dans la mise en œuvre de leur code.
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.
14 J'aime
Récompense
14
7
Partager
Commentaire
0/400
DegenWhisperer
· Il y a 19h
Se faire prendre pour des cons une fois de plus.
Voir l'originalRépondre0
PensionDestroyer
· Il y a 19h
30w a encore été lubrifié
Voir l'originalRépondre0
AirDropMissed
· Il y a 20h
Encore pris les gens pour des idiots une fois.
Voir l'originalRépondre0
ruggedNotShrugged
· Il y a 20h
La perspective est trop étroite. Maintenant, cette petite attaque n'est pas un problème.
Voir l'originalRépondre0
SillyWhale
· Il y a 20h
Encore un petit projet qui s'est fait prendre pour des cons.
Voir l'originalRépondre0
RugPullAlarm
· Il y a 20h
Encore un contrat dont le nettoyage a été mal fait et qui a été exposé.
Voir l'originalRépondre0
SwingingLittleLeek
· Il y a 20h
Récemment, l'Ethereum évolue au-dessus de 3000 ! À l'avenir, il continuera au-dessus de 3000.
Une vulnérabilité de stockage transitoire a conduit à une attaque de 300 000 dollars sur un projet Ethereum. L'équipe de sécurité analyse les détails clés.
Analyse de l'incident d'attaque off-chain de 300 000 dollars causé par une vulnérabilité de stockage transitoire
Le 30 mars 2025, un projet de trading à effet de levier sur la chaîne Ethereum a été attaqué, entraînant des pertes d'actifs de plus de 300 000 dollars. L'équipe de sécurité a effectué une analyse approfondie de cet incident et partage désormais 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. Ses principales caractéristiques incluent :
Raison de l'attaque
La cause fondamentale de cet incident est que les valeurs utilisées dans la fonction pour le stockage transitoire avec tstore n'ont pas été effacées après la fin de l'appel de la fonction. L'attaquant a exploité cette caractéristique pour créer une adresse malveillante spécifique, contournant ainsi le contrôle d'autorisation et permettant le transfert de jetons.
Étapes de l'attaque
L'attaquant crée deux tokens malveillants A et B, et crée des pools pour ces deux tokens sur un certain DEX en injectant de la liquidité.
L'attaquant appelle la fonction initialize du contrat Vault, en 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.
L'attaquant appelle la fonction mint du contrat Vault, dépose le jeton de dette B pour frapper un jeton de levier. Dans ce processus, l'adresse de la piscine DEX est stockée de manière transitoire pour la première fois.
Lorsque le pool DEX effectue une opération d'échange, il appellera la fonction uniswapV3SwapCallback du contrat Vault. Cette fonction utilise tload pour récupérer des valeurs du stockage transitoire afin de vérifier l'identité de l'appelant, et stocke la quantité mintée dans un second stockage transitoire.
L'attaquant crée un contrat malveillant dont l'adresse est identique à la valeur du second stockage transitoire.
L'attaquant appelle directement la fonction uniswapV3SwapCallback du contrat Vault via ce contrat malveillant pour retirer des jetons. Étant donné que les valeurs dans le stockage transitoire n'ont pas été effacées, cela entraîne un passage incorrect de l'authentification.
Enfin, l'attaquant appelle la fonction uniswapV3SwapCallback du contrat Vault en attaquant le contrat (token A), ce qui lui permet de transférer d'autres tokens (comme WBTC, WETH) du contrat Vault pour réaliser un profit.
Analyse des flux de fonds
Selon l'analyse des outils de lutte contre le blanchiment d'argent et de traçage off-chain, les attaquants ont volé environ 300 000 dollars d'actifs, y compris :
Ensuite, l'attaquant a échangé WBTC et USDC contre WETH, un total de 193,1428 WETH a été transféré dans un outil de mélange. La source de fonds initiale de l'attaquant provenait de 0,3 ETH transféré dans cet outil de mélange.
Conseils de sécurité
Le projet doit immédiatement utiliser tstore(key, 0) pour effacer les valeurs dans le stockage transitoire à la fin de l'appel de fonction en fonction de la logique commerciale.
Renforcer l'audit du code de contrat et les tests de sécurité pour éviter des vulnérabilités similaires.
Faites preuve de prudence lors de l'utilisation des nouvelles fonctionnalités introduites et comprenez bien leurs risques potentiels.
Établir un mécanisme de validation multiple, ne pas se fier uniquement à une méthode d'authentification.
Effectuer régulièrement des évaluations de sécurité et des analyses de vulnérabilité, et corriger rapidement les problèmes identifiés.
Cet incident d'attaque souligne à nouveau la nécessité pour les projets de blockchain d'être particulièrement prudents lors de l'utilisation des nouvelles caractéristiques technologiques, tout en mettant en évidence l'importance d'audits de sécurité continus. Les développeurs doivent toujours être attentifs aux meilleures pratiques de sécurité les plus récentes et suivre strictement ces pratiques dans la mise en œuvre de leur code.