# 瞬态ストレージの脆弱性による30万ドルのオンチェーン攻撃事件分析2025年3月30日、あるオンチェーンレバレッジ取引プロジェクトが攻撃を受け、30万ドル以上の資産損失を引き起こしました。セキュリティチームはこの事件について詳細な分析を行い、結果を以下の通り共有します:## 背景攻撃はEthereumネットワーク上で発生し、ターゲットはレバレッジ取引プロジェクトです。攻撃者はそのプロジェクトの契約における一時的ストレージに関連する脆弱性を悪用しました。! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-3e4b0d4747de5f167298db78f28251e2)## 予備知識Solidity 0.8.24バージョンでは瞬态存储(transient storage)機能が導入され、これは新しいデータストレージ位置です。その主な特徴は以下の通りです:- 低ガスコスト:TSTOREとTLOAD操作は固定で100ガスを消費します。- 取引内の持続性:データは取引期間中ずっと有効です- 自動クリア:取引終了後に自動的にゼロにリセットされます! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-17317f8c1ab5c8cafd379315695be34c)## 脆弱性の原因今回の攻撃の根本的な原因は、コントラクト内でtstoreを使用して瞬時に保存された値が関数呼び出しの終了後にクリアされなかったことです。これにより、攻撃者はこの特性を利用して特定のアドレスを構築し、権限チェックを回避してトークンを転送することができました。! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-fde2d0d89b221f239b5ad5d0fd586d42)## 攻撃プロセス1. 攻撃者は二つの悪意のあるトークンAとBを作成し、あるDEX上にそれらの流動性プールを作成します。2. ターゲットコントラクトのinitialize関数を呼び出し、Aトークンを担保として、Bトークンを債務トークンとしてレバレッジ取引市場を作成します。3. mint関数を呼び出してBトークンを預け入れ、レバレッジトークンを発行します。このプロセスでは、2回の一時ストレージ操作が行われました。4. 2回目の瞬時ストレージ値と同じアドレスを持つ悪意のあるコントラクトを作成します。5. その悪意のあるコントラクトを介してターゲットコントラクトのコールバック関数を呼び出し、権限チェックを回避してトークンを転送する。6. 最後に攻撃契約(Aトークン)を介してコールバック関数を再度呼び出し、他のトークン(例えばWBTC、WETH)を転送して利益を得ます。! [致命的な残留物:一時的なストレージによって引き起こされた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. 新しく導入された言語機能の使用には慎重を期し、その潜在的なリスクを十分に理解してください。
瞬時ストレージ脆弱性によりオンチェーンプロジェクトが30万ドルの攻撃を受ける 専門家が防止策を解析
瞬态ストレージの脆弱性による30万ドルのオンチェーン攻撃事件分析
2025年3月30日、あるオンチェーンレバレッジ取引プロジェクトが攻撃を受け、30万ドル以上の資産損失を引き起こしました。セキュリティチームはこの事件について詳細な分析を行い、結果を以下の通り共有します:
背景
攻撃はEthereumネットワーク上で発生し、ターゲットはレバレッジ取引プロジェクトです。攻撃者はそのプロジェクトの契約における一時的ストレージに関連する脆弱性を悪用しました。
! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗
予備知識
Solidity 0.8.24バージョンでは瞬态存储(transient storage)機能が導入され、これは新しいデータストレージ位置です。その主な特徴は以下の通りです:
! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗
脆弱性の原因
今回の攻撃の根本的な原因は、コントラクト内でtstoreを使用して瞬時に保存された値が関数呼び出しの終了後にクリアされなかったことです。これにより、攻撃者はこの特性を利用して特定のアドレスを構築し、権限チェックを回避してトークンを転送することができました。
! 致命的な残留物:一時的なストレージによって引き起こされた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(
まとめと提案
今回の攻撃の核心は、瞬時のストレージの特性を利用して、取引全体の期間中に値を不変に保つことにより、契約の権限検証を回避したことです。類似の攻撃を防ぐために、プロジェクトチームに提案します: