# 致命残留:一場瞬時記憶から始まる30万ドルのオンチェーン攻撃事件2025年3月30日、あるセキュリティ監視システムがEthereumオンチェーンのレバレッジ取引プロジェクトへの攻撃を検出し、30万ドル以上の資産が損失しました。セキュリティチームはこの事件を深く分析し、その結果を以下のように共有します:## 背景Solidity 0.8.24バージョン(2024年1月リリース)では、EIP-1153に基づく瞬時ストレージ機能が導入されました。これは、開発者に低コストでトランザクション中に有効な一時的なストレージ方法を提供することを目的とした新しいデータストレージ位置です。瞬時ストレージの主な特徴は次のとおりです。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でこれらのトークンのプールを作成して流動性を注入します。このうち、トークンAは攻撃契約です。2. 攻撃者はVaultコントラクトのinitialize関数を呼び出し、Aトークンを担保トークン、Bトークンを債務トークンとしてレバレッジ取引市場APE-21を作成します。3. 攻撃者はVaultコントラクトのmint関数を呼び出し、債務トークンBを預けてレバレッジトークンAPEを発行します。このプロセスでは、2回の瞬時ストレージ操作が関与します。最初にあるDEXプールのアドレスを保存し、次に発行されたトークンの数量を保存します。! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-fde2d0d89b221f239b5ad5d0fd586d42)4. 攻撃者は特殊な方法で悪意のある契約を作成し、そのアドレスは二回目の一時的ストレージの値と同じです。5. 攻撃者はこの悪意のあるコントラクトを通じて、Vaultコントラクトのコールバック関数を直接呼び出してトークンを引き出します。一時的なストレージ内の値がクリアされていないため、呼び出し元の身分確認が誤って通過してしまいます。6. 最後に、攻撃者は攻撃契約(Aトークン)を介してVault契約のコールバック関数を呼び出し、Vault契約内の他のトークン(例えば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)! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗](https://img-cdn.gateio.im/social/moments-904133c007422770dd55372438c3d2570192837465674839201! [致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗])https://img-cdn.gateio.im/social/moments-c2206fe20197a3835ddb92319314e4eb(## 資金の流れの分析オンチェーン分析ツールの分析によると、攻撃者は約30万ドルの資産を盗み、その中には17,814.8626 USDC、1.4085 WBTC、119.871 WETHが含まれています。これらの資産はその後統合され、WETHに変換され、最終的にはあるプライバシー取引プロトコルに転送されました。攻撃者の初期資金は、このプライバシー取引プロトコルから移入された0.3 ETHに由来します。## まとめと提案今回の攻撃の核心は、攻撃者が瞬時のストレージを利用して、取引期間中に値を不変に保つ特性を利用し、コールバック関数の権限検証を回避して利益を得たことです。同様の事態が発生しないように、プロジェクト側に推奨されるのは:1. ビジネスロジックに基づいて、関数呼び出しが終了した後に即座にtstore)key、0(を使用して、一時ストレージ内の値をクリアします。2. コントラクトコードの監査とセキュリティテストを強化する。3. 新しく導入された機能を慎重に使用し、その潜在的なリスクを十分に理解してください。
30万ドルのオンチェーン攻撃事件:トランジェントストレージの脆弱性が信用取引プロジェクトに影響を及ぼす
致命残留:一場瞬時記憶から始まる30万ドルのオンチェーン攻撃事件
2025年3月30日、あるセキュリティ監視システムがEthereumオンチェーンのレバレッジ取引プロジェクトへの攻撃を検出し、30万ドル以上の資産が損失しました。セキュリティチームはこの事件を深く分析し、その結果を以下のように共有します:
背景
Solidity 0.8.24バージョン(2024年1月リリース)では、EIP-1153に基づく瞬時ストレージ機能が導入されました。これは、開発者に低コストでトランザクション中に有効な一時的なストレージ方法を提供することを目的とした新しいデータストレージ位置です。
瞬時ストレージの主な特徴は次のとおりです。
! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗
攻撃の根本原因
今回の事件の根本的な原因は、関数内でtstoreを使用して一時的に保存された値が関数の呼び出し終了後にクリアされなかったことです。これにより、攻撃者はこの特性を利用して特定の悪意のあるアドレスを構築し、権限チェックを回避してトークンを転出することができました。
! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗
攻撃プロセス
攻撃者は2つの悪意のあるトークンAとBを作成し、あるDEXでこれらのトークンのプールを作成して流動性を注入します。このうち、トークンAは攻撃契約です。
攻撃者はVaultコントラクトのinitialize関数を呼び出し、Aトークンを担保トークン、Bトークンを債務トークンとしてレバレッジ取引市場APE-21を作成します。
攻撃者はVaultコントラクトのmint関数を呼び出し、債務トークンBを預けてレバレッジトークンAPEを発行します。このプロセスでは、2回の瞬時ストレージ操作が関与します。最初にあるDEXプールのアドレスを保存し、次に発行されたトークンの数量を保存します。
! 致命的な残留物:一時的なストレージによって引き起こされた300,000ドルのオンチェーン強盗
攻撃者は特殊な方法で悪意のある契約を作成し、そのアドレスは二回目の一時的ストレージの値と同じです。
攻撃者はこの悪意のあるコントラクトを通じて、Vaultコントラクトのコールバック関数を直接呼び出してトークンを引き出します。一時的なストレージ内の値がクリアされていないため、呼び出し元の身分確認が誤って通過してしまいます。
最後に、攻撃者は攻撃契約(Aトークン)を介してVault契約のコールバック関数を呼び出し、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ドルのオンチェーン強盗](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が含まれています。これらの資産はその後統合され、WETHに変換され、最終的にはあるプライバシー取引プロトコルに転送されました。
攻撃者の初期資金は、このプライバシー取引プロトコルから移入された0.3 ETHに由来します。
まとめと提案
今回の攻撃の核心は、攻撃者が瞬時のストレージを利用して、取引期間中に値を不変に保つ特性を利用し、コールバック関数の権限検証を回避して利益を得たことです。同様の事態が発生しないように、プロジェクト側に推奨されるのは: