出典:Beosin
2024年1月17日、BeosinのEagleEye Security Risk Monitoring, Alerting and Blocking Platformのモニタリングによると、Socket protocolが攻撃者によるコールインジェクション攻撃を受け、多数の認証ユーザーの資金が盗まれました。攻撃者は現在、盗まれた資金を攻撃者のアドレスに保管されているETHと交換しています。
攻撃後、Socketは攻撃されたことを公式に確認し、影響を受けた契約を初めて停止しました。
一方、MetaMaskはXプラットフォームに投稿し、MetaMask BridgeのユーザーはSocketの影響を受けていない。MetaMaskは、このような攻撃から保護するために設計された独自のアーキテクチャでクロスチェーンブリッジ契約を設計したと述べています。
この攻撃に関して、Beosinのセキュリティチームは脆弱性を分析しました。
脆弱性の分析
このインシデントの主な原因は、ソケット契約のformAction関数への安全でない呼び出しです。下図に示すように、この関数の基本的な機能は、ユーザーのETHとWETHを変換することです。 呼び出し元がfromTokenをETHとして選択した場合、コントラクトのtoToken(WETH)残高が照会され、その後にtoTokenが呼び出しを介して呼び出されます(通常のロジックでは、WETH入金関数がここで呼び出されなければなりません)。次に、コントラクトの toToken(WETH)の新しい残高を照会し、それがユーザの指定した ETH に転送された ETH 量と等しければ、toToken を呼び出し元が指定したアドレスに渡して転送する。呼び出し元が fromToken を ETH 以外を選択した場合は、上記と同様に、呼び出し元の WETH を ETH に変換し(通常、呼び出しは WETH の withdraw 関数の呼び出しでなければならない)、ユーザーの指定したアドレスに送信する。
この関数は、WETHアドレスを渡す以外は、fromTokenとtoTokenにチェックの制限を設けていませんが、他のERC20アドレスはバランスチェックに失敗するため、これら2つのパラメータを偽造することは不可能であり、間接的にトークン・アドレスをWETHに制限しています。
トークン・アドレスに制限がある一方で、関数にも問題があります。つまり、AMOUNTには制限がなく、呼び出し元から渡されたAMOUNTが0であれば、関数のチェック条件は永遠にパスし、呼び出す必要はありません。WETH の預け入れ関数と引き出し関数を呼び出す必要はない。この時点で、攻撃の目的を達成するために、呼び出しに異常なデータを注入することが可能です。
攻撃の流れ
関数の問題を理解したら、攻撃者がどのように攻撃を実行できるかを見てみましょう。
1.攻撃者はまず攻撃契約を作成します。
2. その後、攻撃者は異なるアドレスのWETH残高を数回問い合わせ、そのアドレスがSocket: Gateway契約に対して持っている認証の数を問い合わせ、最後にSocket: Gateway契約を呼び出します。ゲートウェイ契約。
3. ここでformAction関数が呼び出されると、渡されたswapExtraDataパラメータが0x23b872ddであることがわかります。...このデータはtransferfrom関数のシグネチャであり、トークンのtransferfrom関数がここで直接呼び出されることを意味する。
4.攻撃者はfromTokenをWETHとして渡し、AMOUNTはまさに上で述べた0であることがわかります。callの呼び出しで、攻撃者は16 WETHを転送した攻撃者にユーザーアドレスを指定します。
5. 攻撃者は、大量の操作によって無数のユーザーから自分自身にWETHを転送します。
6. 攻撃者は同じ方法で、契約に認可されたUSDTを自分自身に送金します。
7. WBTC、DAI、MATICトークンも含まれます。
報道時点では、約330万ドルの盗まれた資金が、攻撃者によって部分的にETHに交換され、ハッカーのアドレスに存在していますが、移動されていません。
現在、相互運用プロトコルであるSocketは、Xプラットフォーム上でセキュリティインシデントのアップデートをリリースしました!.Bungeeとそのパートナーのほとんどのフロントエンドのブリッジングは復旧しました。詳細なインシデント分析と次のステップは近日中に発表される予定です。
Socke氏は次のように警告しています:「フィッシングを試みる返信の偽Socketアカウントに注意してください。何か行動を起こす前に、必ずアカウントを再確認してください。"
この事件はまた、セキュリティは軽視してはいけないということを思い出させるものでもあります。