スローミスト地区の情報によると、2022年1月28日、QubitプロジェクトのQBridgeが攻撃され、約8,000万米ドルの損失が発生しました。 SlowMist セキュリティ チームは分析を実施し、それを簡単な分析の形で共有しました。
簡単に分析する
1. 攻撃者は、ETH 上の QBridge コントラクトを通じて入金操作を実行し、クロスするターゲット チェーンの destinationDomainID、クロスするクロスチェーン資産のアセット resourceID、クロスチェーンの量で構成されるデータを渡します。チェーンファンド、および入金時の受け取りアドレス。
2. 攻撃者は、受信する resourceID がクロス ETH トークンに必要な値であると指定しますが、depositETH 関数の代わりに QBridge のデポジット関数を呼び出すため、クロスチェーン資金の量と msg.value のチェックは行われません。最初はバイパスされました。デポジット関数はリソースIDに応じてマッピングからハンドラーアドレスを取り出してリチャージしますが、攻撃者は実際のクロスETHトークンに必要な値を渡すため、ハンドラーコントラクトのデポジット関数を正常に呼び出すことができます。
3. ハンドラーコントラクトのデポジット関数は、リソースIDに応じてリチャージされるトークンがホワイトリストに存在するかどうかを確認しますが、攻撃者が渡したリソースIDはETHに対応するため、マッピングではリチャージされるトークンは0となります。 ETH をリチャージしているとみなされ、ホワイトリスト チェックに合格します。ただし、デポジット関数は再度リチャージされるトークンのアドレスをチェックせず(ETH リチャージは、depositETH 関数を通じてクロスチェーンされる必要があります)、safeTransferFrom を通じてリチャージされるトークンの transferFrom 関数を直接呼び出しました。
4. リチャージ対象の Token アドレスがアドレス 0 であり、コードサイズなしで EOA アドレスを呼び出した場合の実行結果は true となり、戻り値は空となるため、transferFrom による転送操作は、safeTransferFrom のチェックをパスします。そして最後に、デポジットクロスチェーンリチャージイベントをトリガーします。
5. 受信した resourceID はクロス ETH に必要な値であるため、トリガーされた Deposit イベントは ETH の実際のリチャージ イベントと同じです。これにより、QBridge は攻撃者が ETH クロスチェーンを実行したと考え、それがキャストされます。攻撃者の BSC チェーン 大量の qXETH トークン。攻撃者はこの qXETH 資格情報を使用して、Qubit の融資プールを空にしました。
ミストトラック分析
要約する
要約する
この攻撃の主な理由は、通常のトークンとネイティブ トークンのリチャージが別々に実装されている場合、ホワイトリスト内のトークンが転送されるときに、アドレスが 0 であるかどうかを再チェックせず、その結果、経由で実行されるべきリチャージが行われてしまうことです。ネイティブのリチャージ機能ですが、通常のトークン リチャージ ロジックをスムーズに実行できます。 SlowMist セキュリティ チームは、リチャージされたトークンのホワイトリスト チェック後も、リチャージされたトークンがネイティブ トークンであるかどうかを確認する必要があると提案しています。
元のリンク
https://etherscan.io/tx/0x478d83f2ad909c64a9a3d807b3d8399bb67a997f9721fc5580ae2c51fab92acf
https://bscscan.com/tx/0x33628dcc2ca6cd89a96d241bdf17cdc8785cf4322dcaf2c79766c990579aea02