不正資金流出のケーススタディ: LI.FI攻撃
インシデントの背景
2024年7月16日、クロスチェーンブリッジおよびDEXアグリゲーターであるLi.Fiは、Li.Fi Diamondコントラクトを悪用した重大なセキュリティ侵害を受けました。約1,160万ドル相当のさまざまなステーブルコインやその他の資産がユーザーから盗まれました。攻撃者は、標的となったコントラクトに対して無制限の承認(Infinite Approval)を与えていたユーザーから資金を引き出すことに成功しました。
- 攻撃者のアドレス: 0x8b3cb6bf982798fba233bca56749e22eec42dcf3
- 脆弱性のあるコントラクト: 0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae
- 攻撃トランザクションの例: 0xd82f, 0x86fe, 0x606a
脆弱性は、GasZipFacetコントラクトの関数であるdepositToGasZipERC20()に存在していました。GasZipFacetコントラクトは、LI.FIチームがブリッジングトランザクションのガス充填を可能にするために、攻撃の5日前にデプロイしたものでした。関数depositToGasZipERC20()には、ユーザーが操作可能な引数_swapDataが含まれており、これは後にLibSwap.swap()関数呼び出しに渡されていました。残念なことに、LibSwap.swapには、攻撃者が制御する引数_swapDataで指定された呼び出し先と呼び出しデータを用いて任意の関数を実行できる低レベルの呼び出しが含まれていました。攻撃者はこの「任意呼び出しの脆弱性」を利用し、Li.Fi Diamondコントラクトに対して無制限の承認を与えていたユーザーの資産を不正に送金させました。
資金フロー分析
2024年7月16日、攻撃者は任意呼び出しの脆弱性を悪用して100件近いトランザクションを実行し、約1,100万ドル相当のステーブルコイン(USDT、USDC、DAI)を30分以内にアドレス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 Routerとやり取りを行うために使用したトランザクションは計114件にのぼります。Tornado Cashへ不正利得を移動させたトランザクションの例: 0x07de, 0xfe82, 0x6a47, 0x8ea6。eXchへ不正利得を移動させたトランザクションの例: 0xaa89, 0x7e65, 0x8572, 0x625c, 0x2dd2, 0xda71。
レイヤー2アドレス(攻撃用アドレスから2ホップ離れた0x8b3c)からレイヤー4アドレスへの資金フローの一部:

最初の大規模な送金バッチは、攻撃直後の最初の1週間(7月16日から7月22日まで)に発生しました。攻撃者はアドレス0x6a6dから約50万ドル相当の不正資産をTornado Cashへ転送しました。攻撃者の不正資金送金には明確な特徴が見られます。彼らは(リスクの高い)攻撃用アドレスから遠く離れた下流アドレスへ資金を移動させ、徐々にその一部を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



