# 瞬態ストレージの脆弱性が引き起こした30万ドルのオンチェーン攻撃事件分析2025年3月30日、あるイーサリアムオンチェーンのレバレッジ取引プロジェクトが攻撃を受け、30万ドル以上の資産損失が発生しました。セキュリティチームはこの事件について詳細な分析を行い、以下の結果を共有します。## 背景Solidity 0.8.24バージョンは、瞬态存储(transient storage)機能を導入しました。これは新しいデータストレージ位置です。その主な特徴には以下が含まれます:1. 低gasコスト:TSTOREとTLOAD操作のgasコストは固定で100です。2. 取引中の永続性:データは、取引の全期間にわたって有効なままです。3. 自動クリア:取引終了後、一時ストレージは自動的にゼロにリセットされます。! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-3e4b0d4747de5f167298db78f28251e2)## 攻撃の理由今回の事件の根本的な原因は、関数内でtstoreを使用して一時的に保存された値が関数呼び出し終了後にクリアされなかったことです。攻撃者はこの特性を利用して特定の悪意のあるアドレスを構築し、権限チェックを回避してトークンを転送しました。! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-17317f8c1ab5c8cafd379315695be34c)## 攻撃ステップ1. 攻撃者は2つの悪意のあるトークンAとBを作成し、あるDEXでこれらのトークンのプールを作成して流動性を注入します。2. 攻撃者はVaultコントラクトのinitialize関数を呼び出し、Aトークンを担保トークン、Bトークンを債務トークンとしてレバレッジ取引市場を作成します。3. 攻撃者はVaultコントラクトのmint関数を呼び出し、債務トークンBを預け入れてレバレッジトークンを鋳造します。この過程で、DEXプールのアドレスが初めて一時的に保存されます。4. DEXプールが交換操作を行うと、VaultコントラクトのuniswapV3SwapCallback関数がコールバックされます。この関数はtloadを使用して一時ストレージから値を取得し、呼び出し元の身元を検証し、鋳造された数量を二度目の一時ストレージに保存します。5. 攻撃者は、2回目の一時的ストレージの値と同じアドレスを持つ悪意のあるコントラクトを作成します。6. 攻撃者はこの悪意のあるコントラクトを通じてVaultコントラクトのuniswapV3SwapCallback関数を直接呼び出してトークンを引き出します。瞬時ストレージ内の値がクリアされていないため、認証が誤って通過してしまいます。7. 最後に、攻撃者はコントラクト(Aトークン)を攻撃してVaultコントラクトのuniswapV3SwapCallback関数を呼び出し、Vaultコントラクト内の他のトークン(WBTCやWETHなど)を転送して利益を得ます。! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-fde2d0d89b221f239b5ad5d0fd586d42)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-30320e0697136205e69772f53122d5be)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-e977f8452ae48dea208426db15adab36)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-0ef4c8b460905daddd99060876917199)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-193da5915e9140a4cf26cc1a04c39260)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-c12acde84f6df58e57eb10d68c487d6b)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-653adef89663df141d377b583f5566bfc)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-2b2f646b8ee78e58f3df2076ed62be99)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-b342e46fb86369b5bd082591bbe741fa)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-e7fed078646f6800505eb85ae09e65bf)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-7317876b8e2a3a592abcaf1e21b62f46)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-8197999b1965f36c7584c2aba320257b)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-636a5fb9c992ef97cbe75e22fac0d331)## 資金の流れの分析オンチェーンのマネーロンダリングおよび追跡ツールの分析によると、攻撃者は約30万ドルの資産を盗みました。これには、- 17,814.8626ドルc- 1.4085 WBTCの- 119.871 ウェスその後、攻撃者はWBTCとUSDCをWETHに交換し、合計193.1428 WETHがある混合ツールに転送されました。攻撃者の初期資金は、その混合ツールから転送された0.3 ETHに由来します。! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-904133c007422770dd55372438c3d2570192837465674839201! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗])https://img-cdn.gateio.im/social/moments-c2206fe20197a3835ddb92319314e4eb(## セキュリティアドバイス1. プロジェクトチームはビジネスロジックに基づいて、関数呼び出し終了後に直ちにtstore)key、0(を使用して一時ストレージ内の値をクリアする必要があります。2. コントラクトコードの監査とセキュリティテストを強化し、同様の脆弱性を回避する。3. 新しく導入された機能を慎重に使用し、その潜在的なリスクを十分に理解してください。4. 複数の認証メカニズムを構築し、単一の認証方法にのみ依存しないようにしてください。5. 定期的にセキュリティ評価と脆弱性スキャンを実施し、発見された問題を迅速に修正します。今回の攻撃事件は、ブロックチェーンプロジェクトが新しい技術の特性を使用する際に特に慎重である必要があることを再度強調するとともに、継続的なセキュリティ監査の重要性を浮き彫りにしました。開発者は常に最新のセキュリティベストプラクティスに注目し、コードの実装において厳格に遵守すべきです。
瞬態ストレージの脆弱性がイーサリアムプロジェクトに30万ドルの攻撃をもたらす。セキュリティチームが重要な詳細を解析。
瞬態ストレージの脆弱性が引き起こした30万ドルのオンチェーン攻撃事件分析
2025年3月30日、あるイーサリアムオンチェーンのレバレッジ取引プロジェクトが攻撃を受け、30万ドル以上の資産損失が発生しました。セキュリティチームはこの事件について詳細な分析を行い、以下の結果を共有します。
背景
Solidity 0.8.24バージョンは、瞬态存储(transient storage)機能を導入しました。これは新しいデータストレージ位置です。その主な特徴には以下が含まれます:
! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗
攻撃の理由
今回の事件の根本的な原因は、関数内でtstoreを使用して一時的に保存された値が関数呼び出し終了後にクリアされなかったことです。攻撃者はこの特性を利用して特定の悪意のあるアドレスを構築し、権限チェックを回避してトークンを転送しました。
! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗
攻撃ステップ
攻撃者は2つの悪意のあるトークンAとBを作成し、あるDEXでこれらのトークンのプールを作成して流動性を注入します。
攻撃者はVaultコントラクトのinitialize関数を呼び出し、Aトークンを担保トークン、Bトークンを債務トークンとしてレバレッジ取引市場を作成します。
攻撃者はVaultコントラクトのmint関数を呼び出し、債務トークンBを預け入れてレバレッジトークンを鋳造します。この過程で、DEXプールのアドレスが初めて一時的に保存されます。
DEXプールが交換操作を行うと、VaultコントラクトのuniswapV3SwapCallback関数がコールバックされます。この関数はtloadを使用して一時ストレージから値を取得し、呼び出し元の身元を検証し、鋳造された数量を二度目の一時ストレージに保存します。
攻撃者は、2回目の一時的ストレージの値と同じアドレスを持つ悪意のあるコントラクトを作成します。
攻撃者はこの悪意のあるコントラクトを通じてVaultコントラクトのuniswapV3SwapCallback関数を直接呼び出してトークンを引き出します。瞬時ストレージ内の値がクリアされていないため、認証が誤って通過してしまいます。
最後に、攻撃者はコントラクト(Aトークン)を攻撃してVaultコントラクトのuniswapV3SwapCallback関数を呼び出し、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ドルのオンチェーン強盗
資金の流れの分析
オンチェーンのマネーロンダリングおよび追跡ツールの分析によると、攻撃者は約30万ドルの資産を盗みました。これには、
その後、攻撃者はWBTCとUSDCをWETHに交換し、合計193.1428 WETHがある混合ツールに転送されました。攻撃者の初期資金は、その混合ツールから転送された0.3 ETHに由来します。
! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/webp-social/moments-904133c007422770dd55372438c3d257.webp0192837465674839201
! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗])https://img-cdn.gateio.im/webp-social/moments-c2206fe20197a3835ddb92319314e4eb.webp(
セキュリティアドバイス
プロジェクトチームはビジネスロジックに基づいて、関数呼び出し終了後に直ちにtstore)key、0(を使用して一時ストレージ内の値をクリアする必要があります。
コントラクトコードの監査とセキュリティテストを強化し、同様の脆弱性を回避する。
新しく導入された機能を慎重に使用し、その潜在的なリスクを十分に理解してください。
複数の認証メカニズムを構築し、単一の認証方法にのみ依存しないようにしてください。
定期的にセキュリティ評価と脆弱性スキャンを実施し、発見された問題を迅速に修正します。
今回の攻撃事件は、ブロックチェーンプロジェクトが新しい技術の特性を使用する際に特に慎重である必要があることを再度強調するとともに、継続的なセキュリティ監査の重要性を浮き彫りにしました。開発者は常に最新のセキュリティベストプラクティスに注目し、コードの実装において厳格に遵守すべきです。