Un braquage on-chain déclenché par le stockage transitoire : derrière une perte de 300 000 dollars
Le 30 mars 2025, un projet de trading à effet de levier sur Ethereum nommé SIR.trading a été attaqué, entraînant une perte d'actifs de plus de 300 000 dollars. L'équipe de sécurité a mené une analyse approfondie de cet incident, révélant les détails et les raisons de l'attaque.
Contexte de l'événement
Les attaquants ont profité de la fonctionnalité de stockage transitoire introduite dans la version 0.8.24 de Solidity. Ce nouvel emplacement de stockage de données est conçu pour fournir une méthode de stockage temporaire efficace et à faible coût pendant les transactions. Les principales caractéristiques du stockage transitoire incluent :
Coût de gas faible : les frais d'opération sont fixes à 100 gas.
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 est automatiquement réinitialisé à zéro.
Source de l'attaque
La cause fondamentale de l'attaque réside dans le fait que les valeurs stockées temporairement avec tstore dans la fonction ne sont pas effacées à la fin de l'appel de la fonction. Cela permet à l'attaquant de construire des adresses malveillantes spécifiques, contournant ainsi les vérifications de permission et transférant des jetons.
Processus d'attaque
L'attaquant crée deux jetons malveillants A et B, et crée des pools pour ces deux jetons sur un DEX tout en injectant de la liquidité.
L'attaquant appelle la fonction initialize du contrat Vault pour créer un marché de trading à effet de levier avec le jeton A comme garantie et le jeton B comme jeton de dette.
L'attaquant appelle la fonction mint du contrat Vault, dépose le token de dette B pour frapper des tokens de levier. Dans ce processus, l'adresse de la piscine DEX et la quantité frappée sont stockées de manière transitoire.
L'attaquant crée un contrat malveillant dont l'adresse est la même que le nombre de minting stocké temporairement précédemment.
L'attaquant appelle la fonction de rappel du contrat Vault via un contrat malveillant, réussissant à contourner la vérification des autorisations car la valeur dans le stockage transitoire n'a pas été effacée.
Enfin, l'attaquant appelle directement la fonction de rappel du contrat Vault en attaquant le contrat, pour transférer d'autres jetons (comme WBTC, WETH) et réaliser un profit.
Analyse des flux de fonds
Selon les données de l'outil d'analyse off-chain, les attaquants ont volé environ 300 000 dollars d'actifs, y compris :
17,814.8626 USDC
1.4085 WBTC
119.871 WETH
Ces actifs ont ensuite été convertis en WETH et finalement transférés dans un outil d'anonymisation. La source de fonds initiale de l'attaquant provenait de 0,3 ETH transféré depuis cet outil.
Conseils de sécurité
Pour prévenir des attaques similaires, l'équipe du projet devrait :
Après la fin de l'appel de fonction, utilisez immédiatement tstore(key, 0) pour effacer les valeurs dans le stockage transitoire.
Renforcer l'audit du code des contrats et les tests de sécurité.
Utilisez avec prudence les nouvelles caractéristiques linguistiques introduites, en comprenant bien leurs risques potentiels.
Cet incident souligne à nouveau l'importance de maintenir un équilibre entre la sécurité et l'application de nouvelles technologies dans le développement de projets de blockchain. Avec l'évolution continue de la technologie, les développeurs et les experts en sécurité doivent rester vigilants et identifier et répondre rapidement aux nouveaux défis de sécurité.
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.
9 J'aime
Récompense
9
7
Partager
Commentaire
0/400
MemeTokenGenius
· Il y a 3h
On dirait que c'est mignon, vous lancez sans même tester ?
Voir l'originalRépondre0
quiet_lurker
· Il y a 3h
Un autre projet est écrasé au sol.
Voir l'originalRépondre0
PumpBeforeRug
· Il y a 3h
J'ai entendu dire que cette fois, il s'en va en tournant la tête~smart contracts petite vulnérabilité
Voir l'originalRépondre0
MEVHunter
· Il y a 3h
Ces 300 000 sont vraiment trop bon marché, même les Prêts Flash n'en valent pas la peine.
Voir l'originalRépondre0
ContractSurrender
· Il y a 3h
Ancien projet All in nouvelles caractéristiques Ça chauffe...
Voir l'originalRépondre0
MissedAirdropAgain
· Il y a 3h
Eh, ce n'est qu'une petite bagarre de 30k.
Voir l'originalRépondre0
NeverPresent
· Il y a 3h
Un tel bug de bas niveau peut-il vraiment frapper ?
Une vulnérabilité de stockage transitoire a conduit à une attaque de 300 000 dollars par un Hacker sur un projet Ethereum.
Un braquage on-chain déclenché par le stockage transitoire : derrière une perte de 300 000 dollars
Le 30 mars 2025, un projet de trading à effet de levier sur Ethereum nommé SIR.trading a été attaqué, entraînant une perte d'actifs de plus de 300 000 dollars. L'équipe de sécurité a mené une analyse approfondie de cet incident, révélant les détails et les raisons de l'attaque.
Contexte de l'événement
Les attaquants ont profité de la fonctionnalité de stockage transitoire introduite dans la version 0.8.24 de Solidity. Ce nouvel emplacement de stockage de données est conçu pour fournir une méthode de stockage temporaire efficace et à faible coût pendant les transactions. Les principales caractéristiques du stockage transitoire incluent :
Source de l'attaque
La cause fondamentale de l'attaque réside dans le fait que les valeurs stockées temporairement avec tstore dans la fonction ne sont pas effacées à la fin de l'appel de la fonction. Cela permet à l'attaquant de construire des adresses malveillantes spécifiques, contournant ainsi les vérifications de permission et transférant des jetons.
Processus d'attaque
L'attaquant crée deux jetons malveillants A et B, et crée des pools pour ces deux jetons sur un DEX tout en injectant de la liquidité.
L'attaquant appelle la fonction initialize du contrat Vault pour créer un marché de trading à effet de levier avec le jeton A comme garantie et le jeton B comme jeton de dette.
L'attaquant appelle la fonction mint du contrat Vault, dépose le token de dette B pour frapper des tokens de levier. Dans ce processus, l'adresse de la piscine DEX et la quantité frappée sont stockées de manière transitoire.
L'attaquant crée un contrat malveillant dont l'adresse est la même que le nombre de minting stocké temporairement précédemment.
L'attaquant appelle la fonction de rappel du contrat Vault via un contrat malveillant, réussissant à contourner la vérification des autorisations car la valeur dans le stockage transitoire n'a pas été effacée.
Enfin, l'attaquant appelle directement la fonction de rappel du contrat Vault en attaquant le contrat, pour transférer d'autres jetons (comme WBTC, WETH) et réaliser un profit.
Analyse des flux de fonds
Selon les données de l'outil d'analyse off-chain, les attaquants ont volé environ 300 000 dollars d'actifs, y compris :
Ces actifs ont ensuite été convertis en WETH et finalement transférés dans un outil d'anonymisation. La source de fonds initiale de l'attaquant provenait de 0,3 ETH transféré depuis cet outil.
Conseils de sécurité
Pour prévenir des attaques similaires, l'équipe du projet devrait :
Cet incident souligne à nouveau l'importance de maintenir un équilibre entre la sécurité et l'application de nouvelles technologies dans le développement de projets de blockchain. Avec l'évolution continue de la technologie, les développeurs et les experts en sécurité doivent rester vigilants et identifier et répondre rapidement aux nouveaux défis de sécurité.