数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末
CertiK
2024-02-04 04:30
本文约1236字,阅读全文需要约5分钟
2024年1月16日,Socket Tech遭到攻击,损失约330万美元,本文详解攻击事件始末。

2024 年 1 月 16 日、Socket Tech が攻撃を受け、約 330 万ドルの損失が発生しました。攻撃者は、ソケット コントラクトのデータ検証リンクの脆弱性を悪用し、悪意のあるデータ入力を通じて承認されたコントラクトのユーザー資金を盗みました。この攻撃により、合計 230 のアドレスに損失が発生し、単一アドレスの最大の損失は約 656,000 ドルでした。

背景の紹介

Socket は、クロスチェーンの安全かつ効率的なデータと資産の送信を提供する相互運用性プロトコルです。ソケット ゲートウェイ コントラクトは、ソケット流動性レイヤーとのすべてのやり取りのアクセス ポイントであり、すべての資産ブリッジと DEX が単一のメタブリッジに収束し、コスト、レイテンシー、セキュリティ ルーティングなどのユーザーの好みに基づいて最適なトランザクションが選択されます。

ハッキングの 3 日前、ソケット契約管理者は addRoute コマンドを実行して新しいルートをシステムに追加しました。ルーティングを追加する目的は、ソケット ゲートウェイの機能を拡張することでしたが、誤って重大な脆弱性が生じてしまいました。

以下の図は、契約管理者を通じて追加されたルーティングの記録を示しています。

写真

イベントの概要

1. 北京時間 1 月 16 日 15:03 に、攻撃者のウォレットから攻撃に使用された資金が送金されました。時間分析によると、資金は 0x e 620 からのもので、Tornado Cash から引き出した 10 BNB に関連していたことがわかりました。

2. これらの資金は、Socket の脆弱性を悪用する 2 つの契約の作成と実行に使用されました。最初のコントラクトは、SocketGateway によって許可されたアドレスの USDC をターゲットとしています (下のスクリーンショット)。被害者127人が約250万ドルを騙し取られた。

3. 次に、2 番目の契約は、被害者の住所の WETH、USDT、WBTC、DAI、および MATIC をターゲットにします。その結果、さらに 104 人の被害者がおよそ次の資産を失いました。

-42.48 WETH

-347, 005.65 USDT

-2.89 WBTC

-13, 821.01 DAI

-165, 356.99 MATIC

4. 攻撃者はUSDCとUSDTをETHに変換しました。

脆弱性の原因

攻撃者によって悪用される脆弱性は、新しく追加されたルーティング アドレスrouteAddress内のperformAction関数に存在します。

このアドレスの PerformAction 関数の本来の機能は、Wrapping 関数と Unwrapping 関数を支援することです。

ただし、この関数には重大な脆弱性が存在します。ユーザーは検証なしで .call() の swapExtraData を通じて外部データを直接呼び出します。これは、攻撃者が任意の悪意のある関数を実行できることを意味します。

このインシデントでは、攻撃者は、transferFrom 関数をトリガーする悪意のある swapExtraData 入力を作成しました。この悪意のある呼び出しは、SocketGateway コントラクトに対するユーザーの承認を悪用し、ユーザーから資金を盗みました。

コントラクトでは、fromToken.call() が呼び出された後、残高チェックをチェックすることでユーザーの残高が正しく変更されることを保証しますが、この関数は、攻撃者が金額を 0 に設定する状況を考慮していません。

攻撃プロセスの復元

1. 攻撃者は、攻撃コントラクトを使用して、ソケット ゲートウェイ コントラクトで 0x 00000196() を呼び出しました。

2.fallback() は、16 進数の署名 196 を使用して、脆弱なルーティング アドレス コントラクト (routerAddress) を呼び出します。

3. 以下のスクリーンショットでは、攻撃者が使用した偽の入力が確認できます。スワッピング番号はすべて 0 です。

4. 次に、WrappedTokenSwapperImpl.performAction() が呼び出され、スワップが実行されます。

5. 偽の SwapExtraData は、検証なしで fromToken (WETH) によって受け入れられ、実行されます。

6. 攻撃者は、被害者の資産がなくなるまで上記のプロセスを繰り返します。悪意のあるトランザクションが出現した後、Socket はすぐに disableRoute を呼び出し、以前に脆弱だったルートをブロックし、広範囲の攻撃を阻止しました。

7. 1月23日、ソケットは1,032ETHを回収したと発表し、25日には損失を全額補償すると発表した。この事件は解決されました。

イベント概要

無制限のユーザー認証を持つルーティング コントラクトでは、悪意のあるコールデータ攻撃が珍しくありません。

これまでの同様の攻撃には、Dexible や Hector Bridge などがあります。

2023年2月17日、分散型取引所Dexibleが攻撃され、150万ドル以上の損失が発生した。悪用者は、悪意のある呼び出しデータを Dexible の fill() 関数に入力して、ユーザー資産を盗みます。

2023 年 6 月 2 日、Hector ネットワークのプロトコルが攻撃されました。攻撃者は偽の USDC 契約を展開し、悪意のある通話データを通じて被害者の契約から 652,000 の本物の USDC を転送しました。

ブロックチェーン集約プラットフォームは通常、一連のブリッジおよびルーティング契約をカプセル化することで流動性を向上させ、損失を削減します。ただし、この複雑なカプセル化により、セキュリティ上のさらなる課題が生じます。

Socket インシデントの解決は、間違いなく関係者全員の努力の結果であり、CertiK はプラットフォームに対する包括的な監査とテストを提供し、さまざまな総合リスクを軽減し、コミュニティの信頼と業界全体のセキュリティ レベルを向上させることに今後も取り組んでいきます。 。

CertiK
作者文库