瞬時ストレージの脆弱性により、イーサリアム信用取引プロジェクトが30万ドルの損失を被った

瞬時ストレージの脆弱性により30万ドル相当の資産が盗まれた

2025年3月30日、イーサリアムチェーン上のレバレッジ取引プロジェクトが攻撃を受け、30万ドル以上の資産が失われました。セキュリティチームはこの事件を詳しく分析し、結果を以下の通り共有します:

背景

Solidity 0.8.24バージョンでは、EIP-1153に基づく瞬時ストレージ機能が導入されました。これは、開発者に低コストで、取引中に有効な一時的なストレージ方法を提供するための新しいデータストレージ位置です。瞬時ストレージは、TSTOREおよびTLOADという2つの新しいEVM命令を通じて実現され、低ガスコスト、取引内持続性、自動クリアなどの特徴があります。

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

攻撃の理由

今回の事件の根本原因は、関数内でtstoreを使用して一時的に保存された値が関数呼び出しの終了後にクリアされなかったことです。攻撃者はこの特性を利用して特定の悪意のあるアドレスを構築し、権限チェックを回避してトークンを転送しました。

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

攻撃ステップ

  1. 攻撃者は2つの悪意のあるトークンAとBを作成し、あるDEX上でこれら2つのトークンのプールを作成し流動性を注入します。

  2. 攻撃者はVault契約のinitialize関数を呼び出し、Aトークンを担保トークンとして、Bトークンを債務トークンとしてレバレッジ取引市場を作成します。

  3. 攻撃者はVaultコントラクトのmint関数を呼び出し、債務トークンBを預けてレバレッジトークンを発行します。このプロセスでは、DEXプールアドレスと発行数量が一時的に保存されます。

  4. 攻撃者は、2回目の一時ストレージの値と同じアドレスを持つ悪意のあるコントラクトを作成します。

  5. 攻撃者は悪意のあるコントラクトを介してVaultコントラクトのコールバック関数を呼び出し、トークンを引き出します。瞬時ストレージの値がクリアされていないため、身元確認が誤って通過します。

  6. 最後に、攻撃者は攻撃契約(Aトークン)を通じてVault契約のコールバック関数を呼び出し、他のトークン(例えばWBTC、WETH)を転送して利益を得る。

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗

! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/webp-social/moments-904133c007422770dd55372438c3d257.webp0192837465674839201

! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗])https://img-cdn.gateio.im/webp-social/moments-c2206fe20197a3835ddb92319314e4eb.webp(

資金の流れの分析

攻撃者は約30万ドルの資産を盗みました。これには、17,814.8626 USDC、1.4085 WBTC、119.871 WETHが含まれます。WBTCは63.5596 WETHに交換され、USDCは9.7122 WETHに交換されました。その後、合計193.1428 WETHがある匿名プラットフォームに転送されました。攻撃者の初期資金は、そのプラットフォームから転送された0.3 ETHでした。

サマリー

今回の攻撃の核心は、攻撃者がトランザクションの全期間中に不変である瞬時ストレージの特性を利用し、コールバック関数の権限検証を回避したことです。プロジェクトチームは、ビジネスロジックに従って、関数呼び出しの終了後に直ちにtstore)key, 0(を使用して瞬時ストレージ内の値をクリアすることをお勧めします。同時に、同様の事態が発生しないように、契約コードの監査とセキュリティテストを強化する必要があります。

ETH4.74%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 7
  • 共有
コメント
0/400
VitaliksTwinvip
· 6時間前
この波の要約はまだガスを浪費しています。
原文表示返信0
CountdownToBrokevip
· 6時間前
30wまた寄哥が来た
原文表示返信0
0xLuckboxvip
· 6時間前
また三十万が盗まれた~スマートコントラクトが安全を守るよハ
原文表示返信0
OnchainGossipervip
· 6時間前
またバグを引き起こしている。バカじゃないの。
原文表示返信0
GateUser-0717ab66vip
· 6時間前
30万も恥ずかしげもなく言う
原文表示返信0
VibesOverChartsvip
· 6時間前
30w?それは一日の取引手数料です
原文表示返信0
DefiPlaybookvip
· 6時間前
データサンプリングに基づくと、この種のストレージ脆弱性は損失率が86.3%に達する可能性があるため、警戒が必要です!
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)