2024年1月16日、Socket Techは攻撃を受け、約330万ドルの損失を被った。 攻撃者は、Socketの契約の1つのデータ検証の脆弱性を悪用し、悪意のあるデータ入力によって承認された契約からユーザー資金を盗んだ。 この攻撃により、230のアドレスに損失が発生し、最大の単一アドレスでは約656,000ドルの損失が発生しました。
Socketは、チェーン間でデータや資産を安全かつ効率的に転送するための相互運用プロトコルです。 Socket Gatewayコントラクトは、すべてのアセットブリッジとDEXが単一のユニークなメタブリッジに収束し、コスト、待ち時間、またはセキュリティなどのユーザーの好みに基づいて最適なトランザクションルーティングが選択される、Socketモビリティレイヤーとのすべての相互作用のためのアクセスポイントです。
ハッキングの3日前、ソケット契約管理者はシステムに新しいルートを追加するためにaddRouteコマンドを実行しました。 ルートを追加する目的は、Socket Gatewayの機能を拡張することでしたが、不注意にも致命的な脆弱性を導入してしまいました。
1. 1月16日15:03GMTに、攻撃者のウォレットが攻撃に使用された資金を送金しており、時間的分析によると、その資金は0xe620からのもので、トルネードキャッシュから引き出された10BNBに関連していることが示唆されています。2. これらの資金は、ソケットの脆弱性を悪用する2つの契約を作成し、実行するために使用されました。 最初の契約は、SocketGatewayを認可したアドレスのUSDCをターゲットにしたもので(以下のスクリーンショット)、127人の被害者が約250万ドルをだまし取られました。
3. 次に、2つ目の契約は、WETH、USDT、WBTC、DAI対WETH内の被害者のアドレスをターゲットにしています。他の104人の被害者は以下の資産を失いました:
- 42.47526105 WETH
- 347,005.65USDT
- 2.88962154 WBTC
- 13,821.01 DAI
- 165,356.99 MATIC
4. The attacker converted USDC & USDT into ETH.
脆弱性の原因
攻撃者に悪用される脆弱性は、新しく追加されたルートアドレスrouteAddress内のformAction関数に存在します。
routeAddress内のformAction関数の本来の機能は、WrappingおよびUnwrapping関数を支援することでした。 しかし、この関数には致命的な脆弱性があります。.call()内でswapExtraDataを介して外部データを認証なしで呼び出すことができるため、攻撃者は任意の悪意のある関数を実行することができます。
このインシデントでは、攻撃者はtransferFrom関数をトリガーする悪意のあるswapExtraData入力を細工しました。 この悪意のある呼び出しは、ユーザーがSocketGatewayコントラクトを承認していることを悪用し、ユーザーから資金を盗みます。
コントラクトは、fromToken.call()呼び出し後に残高チェックを行うことで、ユーザーの残高が正しく変化することを保証しますが、この関数は、攻撃者が金額をゼロに設定した場合を考慮していません。
攻撃の流れを減らす
1. 攻撃契約を使用する。
1.
2. fallback()は、脆弱なルーティングアドレス契約(routerAddress)を呼び出します。
3. 下のスクリーンショットでは、攻撃者が使用した偽の入力を見ることができます。p style="text-align:center">
4. 次のステップでは、WrappedTokenSwapperImpl.performAction()を呼び出します。スワップを実行する
5. 何の検証もなく、偽のSwapExtraDataがfromToken (WETH)が受け入れられ、実行された。
6. 攻撃者は被害者の資産が尽きるまで上記のプロセスを繰り返します。 悪意のあるトランザクションが現れた後、Socketは素早くdisableRouteを呼び出し、以前の脆弱なルートをブロックし、より広範囲の攻撃を防ぎます。
7. 1月23日、Socketは1032ETHを回収したと発表し、25日にはすべての損失を完全に補償すると発表しました。この事件は解決した。
インシデントの概要
ユーザー権限の数が無制限のルーティング契約の場合、悪意のあるcalldata攻撃は発生しませんでした。 2023年2月17日、分散型取引所Dexibleが攻撃され、150万ドル以上の損失が発生した。 攻撃者は悪意のあるcalldataをDexibleのfill()関数に送り込み、ユーザーの資産を盗んだ。 2023年6月2日、Hectorネットワークのプロトコルが攻撃された。攻撃者は偽のUSDC契約を展開し、悪意のあるcalldataを介して被害者の契約から652,000USDCを送金しました。
ブロックチェーン集約プラットフォームは通常、一連のブリッジおよびルーティング契約をカプセル化することで、流動性を高め、減少を抑えます。しかし、このような複雑なカプセル化は、セキュリティに新たな課題をもたらす可能性があります。CertiKは、あらゆる種類のアグリゲーションリスクを低減し、コミュニティの信頼と業界全体のセキュリティレベルを向上させるため、プラットフォームに対するあらゆる種類の監査とテストを提供する努力を続けていきます。