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

攻撃から2時間以内に、盗まれた資産はすべて攻撃者が管理する下流アドレスに転送され、元の攻撃アドレスには何も残っていませんでした。元の攻撃アドレスから直接(つまり、1ホップ以内)接続されている下流アドレスは合計32個あります。これらのうち、15のアドレスは攻撃者アドレスから0.1 ETHのみを受け取りました。2024年10月22日現在、これらの15のアドレスが保有するETHは転送されていません。残りのアドレスは、不正な資金の残りの大部分を処理しました。
被害者アドレスから攻撃者が管理する下流アドレスへの資金フローの一部:

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

最初の大規模な資金移動バッチは、攻撃の最初の週、7月16日から7月22日の間に行われました。攻撃者は、アドレス0x6a6dからTornado Cashに約50万ドルの不正資産を転送しました。攻撃者の不正資金の移動は、明確な特徴を示していました。資金を攻撃者アドレスから離れた下流アドレス(高リスクアドレス)に移動させ、徐々に一部をTornado Cashに流していました。最初のバッチでは、最長の転送パスは20ホップに達しました。攻撃者は、不正な資金フローを不明瞭にするために、非常に深いマネーロンダリングパスを使用しました。8月から10月にかけて、残りの不正資金は、同じ特徴を持つ転送バッチで徐々にTornado Cashに転送されました。
アドレス0x8e85(0x8b3cから1ホップ)からTornado Cash Routerへの資金移動バッチの例:

図が示すように、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



