不正資金流出のケーススタディ:LI.FIへの攻撃
ケースの背景
2024年7月16日、クロスチェーンブリッジおよびDEXアグリゲーターであるLi.Fiは、Li.Fi Diamondコントラクトを悪用した重大なセキュリティ侵害を受けました。約1,160万ドル相当の様々なステーブルトークンやその他の資産がユーザーから盗まれました。攻撃者は、標的となったコントラクトに対して無限承認(Infinite Approval)を与えていたユーザーから資金を引き出すことに成功しました。
- 攻撃者のアドレス: 0x8b3cb6bf982798fba233bca56749e22eec42dcf3
- 脆弱なコントラクト: 0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae
- 攻撃トランザクションの例: 0xd82f, 0x86fe, 0x606a
脆弱性はGasZipFacetコントラクトのdepositToGasZipERC20()関数に存在していました。GasZipFacetコントラクトは、ブリッジングトランザクションのためのガス給油(gas refueling)を可能にする目的で、攻撃の5日前にLI.FIチームによってデプロイされたものでした。depositToGasZipERC20()関数にはユーザーが制御可能な_swapDataという引数が含まれており、これが後にLibSwap.swap()関数の呼び出しに渡されていました。残念なことに、LibSwap.swapには、攻撃者が制御する引数_swapDataによって指定された呼び出しターゲット(Call Target)と呼び出しデータ(Call Data)を使用して任意の関数を実行できる低レベルの呼び出しが含まれていました。攻撃者はこの「任意呼び出しの脆弱性」を利用し、Li.Fi Diamondコントラクトに対して無限承認を与えていたユーザーの資産を不正に送金させました。
資金流出の分析
2024年7月16日、攻撃者は任意呼び出しの脆弱性を悪用して100件近くのトランザクションを開始し、約30分以内に約1,100万ドル相当のステーブルトークン(USDT、USDC、DAI)を0x8b3cのアドレスへ送金しました。流出したステーブルトークンのほぼすべてが、その後直ちにイーサリアムのネイティブトークンであるETHにスワップされました。攻撃者が利用したDEXには、UniswapやMetamask Swapなどが含まれています。スワップトランザクションの例:0xdf9b, 0x11d, 0xb4a4。
スワップトランザクション0x8e27がMetamask Swap Spenderとやり取りする際の資金の流れの例です。攻撃者は、不正に入手した333,258 USDTを97.16 ETHにスワップしました。すべてのプールとプロキシは、MetaSleuthを使用して明確に表示されています。

攻撃から2時間以内に、盗まれた資産はすべて攻撃者が制御する下流アドレスへ送金され、最初の攻撃アドレスには何も残っていませんでした。アドレス0x8b3cに直接接続されている下流アドレス(つまり、攻撃アドレスから1ホップ先)は合計32存在します。このうち15のアドレスは、攻撃アドレスから0.1 ETHのみを受け取っていました。2024年10月22日の時点で、これら15のアドレスが保有するETHは送出されていません。残りのアドレスは、その他の多額の不正資金を処理しました。
被害者アドレスから攻撃者が制御する下流アドレスへの資金流の一部:

不正資金をアドレス0x8b3cから1ホップ先の下流アドレスへ送金した後、攻撃者はバッチ単位でさらに資金を移動させ始めました。この移転(マネーロンダリング)プロセスは3ヶ月近く続きました。不正資金のほぼすべてが最終的にTornado Cashへ移動され(99.9%)、一部が直接換金のために取引所eXchへ送られました。攻撃者がTornado Cashルーターとやり取りを行うために使用したトランザクションは合計114件にのぼります。不正取得した資金をTornado Cashへ移動させるトランザクションの例:0x07de, 0xfe82, 0x6a47, 0x8ea6。不正取得した資金をeXchへ移動させるトランザクションの例:0xaa89, 0x7e65, 0x8572, 0x625c, 0x2dd2, 0xda71。
レイヤー2アドレス(攻撃アドレス0x8b3cから2ホップ先)からレイヤー4アドレスへの資金流の一部:

最初の大規模な送金バッチは、攻撃直後の最初の1週間(7月16日から7月22日まで)に発生しました。攻撃者は、アドレス0x6a6dから約50万ドル相当の不正資産をTornado Cashへ送金しました。攻撃者の不正資金送金には明確な特徴がありました。彼らは不正資金を攻撃アドレスから遠く離れた(リスクの高いアドレスとは異なる)下流アドレスへ移動させ、徐々に資金の一部をTornado Cashへ集約していました。最初のバッチでは、最長の送金経路は20ホップに達しました。攻撃者は非常に複雑なロンダリング経路を利用して、不正な資金の流れを隠蔽しました。8月から10月にかけて、残りの不正資金も同様の特徴を持つ送金バッチにより、少しずつTornado Cashへ送金されました。
アドレス0x8e85(0x8b3cから1ホップ先)からTornado Cashルーターへ資金を移動させる送金バッチの例:

図が示すように、攻撃者は2024年8月13日から8月16日にかけて、12ホップの経路をたどって合計206 ETHをTornado Cashへ徐々に送金しました。アドレス0xe9f7において、攻撃者は204 ETHを2つのトランザクションに分割しました。100 ETHがTornado Cashへ送られ、残りの104 ETHはさらに別のロンダリング用アドレスへ転送されました。この分割パターンは、一連の送金プロセスを通じて一貫していました。つまり、攻撃者はTornado Cashとやり取りするたびに、新しく、より深層のアドレスを使用していたのです。
対応状況
攻撃の2日後、LI.FIは公式のインシデントレポートを発表し、すべてのチェーンにおいて脆弱なコントラクトファセットを無効化し、それ以上の不正アクセスを阻止したと表明しました。LI.FIは補償計画を開始し、影響を受けたユーザーに対して全額を補償しました。流出した資産の回収については、法的機関および業界のセキュリティチームを含む関連第三者と連携を継続し、流出した資金の追跡と回収を試みると述べました。2024年10月22日の時点で、不正資金のほぼすべてがTornado Cashへ送金されており、Li.Fiは追跡レポートをまだ公開していません。
関連するアドレスとトランザクション
| アドレス | トランザクション | 不正資金の流れ |
|---|---|---|
| 0x8e85eace2fa757c1d97c5ebfb8b0622e5f23c5a1 | 0xe237, 0x0d23 | 206.49 ETH |
| 0xcb7c341dc6172b642dcf4a14015be70a27e5b31e | 0x050c, 0x37d4 | 873,568 USDT + 36.48 ETH |
| 0x7b93fa16c04cdcf91949d4f5f893f740992ae57e | 0x57ea, 0x52ac | 332.02 ETH |
| 0x3462d2523cded523ad47c14111aa1dcbe7773675 | 0xc66d, 0xc0ff | 120.55 ETH |
| 0xd0be9c4c84068a9964c3781f540f703c300db268 | 0x0c3b, 0x1670 | 275.38 ETH |
資金の流れの概要:

MetaSleuthでの詳細情報: https://metasleuth.io/result/eth/0x14c1597cc833783ed8ac08ecc9b704b0a398201d?source=c8cd3609-0402-45eb-bb9e-2f710bd66554



