
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 はプラットフォームに対する包括的な監査とテストを提供し、さまざまな総合リスクを軽減し、コミュニティの信頼と業界全体のセキュリティ レベルを向上させることに今後も取り組んでいきます。 。