見出し画像

Qubit Financeに起きたQBridgeハッキングとは?

Qubit Financeとは?

Qubit Finance は、Binance スマートチェーン(BSC)をベースとする、ブロックチェーンのスピード、自動化、安全性を活用し、貸し手と借り手を効率的かつ安全につなぐ分散型マネーマーケット・プラットフォームです。Qubit Finance の利用者は、貸し手および借り手として参加することができます。

  • 貸し手:
    流動性供給者として、貸し手は資産を預けて他の人に貸すことができます。流動性供給者は預けた資産に対して利息を得ることができます。

  • 借り手:
    資産を担保として預け、その見返りとして資産を借りることができます。

X-Collateral

X-Collateral は、ユーザがあるチェーンから別のチェーンに資産を移動することなく、他のネットワークに資産を担保することを可能にするクロスチェーン機能です。Ethereum 上の ETH を持っているユーザでも、BSC ネットワークのスピードと低いガス料金という二重の効率を利用することができます。

最終的には、BSC のスピードと低い手数料を利用しながら、様々なネットワーク上のトークンを担保として利用することができます。Ethereum は X-Collateral でサポートされる最初のネットワークです。

Qubit Finance の使用例

例えば、あるユーザが 1ETH を Ethereum ネットワーク上で担保に入れたいとします。まず、ユーザは 1ETH を Ethereum 上の Qubit スマートコントラクトに送金します。トランザクションが成功した場合、1ETH はスマートコントラクトによって安全に保護され、焼却したり Ethereum から移動したりする必要はありません。最後に、Qubit プロトコルは BSC ネットワーク上で 1 xETH を発行し、ユーザに転送します。その際に発生するガス代は Qubit が負担します。新しく発行されたトークン(1 xETH)は、BSC ネットワーク上のプロトコルとのやりとりに使用することができます。ユーザーは 1xETH を担保に借り入れを行うことができます。

ハッキングの概要

ハッカーは Qubit Finance にアクセスし、Qubit の QBridge プロトコルから206,809 枚の Binance Coin(BNB)、当時の価値で 8000 万ドル以上を盗み出しました。

Qubit のスマートコントラクトを分析した PeckShield によると、QBridge はハッキングされて「大量の xETH 担保」を作成し、その後 QBridge に保管されていた BNB 全量を引き出すために使用されたとのことです。

セキュリティ企業 CertiK のレポートでは、攻撃者は QBridge コントラクトの入金オプションを利用して、Qubit 経由でブリッジされた Ether を表す資産である 77,162 qXETH を不正に生成していたという。

CertiK によると、ハッカーはこうした行為を複数回行い、結果的にすべての資産を Binance Coin に変換したとのことです。

詳細

攻撃者は、入金関数 QBridgeHandler を呼び出す Ethereum ネットワーク上の QBridge 入金関数を呼び出しました。QBridgeHandler は元の tokenAddress である WETH トークンを受け取るはずですが、トランザクションを実行した人が WETH トークンを持っていない場合、送金は発生しないはずです。

tokenAddress.safeTransferFrom(depositer, address(this), amount)

上記のコードでは、tokenAddress は 0 なので、safeTransferFrom は失敗せず、金額の値に関係なく、入金関数は正常に終了します。さらに、tokenAddress は depositETH が追加される前は WETH のアドレスでしたが、depositETH が追加されると、ETH の tokenAddress である 0 アドレスに置き換わります。

つまり、depositETH が新規開発された後、deposit 関数は使ってはいけない機能であったが、コントラクトに残ってしまったということです。

参考文献

この記事が気に入ったらサポートをしてみませんか?