
上場直後に乗っ取り発生、Radiant Protocolがハッキングで450万ドルを損失
TechFlow厳選深潮セレクト

上場直後に乗っ取り発生、Radiant Protocolがハッキングで450万ドルを損失
理由は、新しいUSDC市場において、「burn」関数内の数学的な丸め誤差が拡大・悪用され、ハッカーが追加のUSDCを引き出すことができたためである。
執筆:Daniel Tan
2024年1月3日、北京時間、Arbitrum上のRadiantプロトコルがフラッシュローン攻撃を受けました。ハッカーは#Radiantプロトコルに対して3回の攻撃を実行し、合計で1902枚のETH(約450万ドル相当)が失われました。根本的な原因は、新設された$USDCマーケットにおいて、「burn」関数内の数学的丸め問題が拡大・悪用され、ハッカーが追加の$USDCを引き出すことを可能にしたことです。
MetaTrust Labsは今回の攻撃について詳細な調査と分析を行い、ハッカーが脆弱性をどのように利用して攻撃を仕掛けたかを明らかにしました。
レンディングプロトコル Radiant Protocol
Radiantは、Arbitrum、BNBチェーン、イーサリアムなど複数のチェーン上で動作する、非カストディ型の分散型レンディングプロトコルです。

攻撃発生後も、Radiantプロトコルのロックされた総価値(TVL)は3億1300万ドルに達しています。これはプロジェクトチームが攻撃後に迅速にプロトコルを一時停止し、さらなる損失を防いだためです。

タイムライン

取引
0xc5c4bbddec70edb58efba60c1f27bce6515a45ffcab4236026a5eeb3e877fc6d
0x2af556386c023f7ebe7c662fd5d1c6cc5ed7fba4723cbd75e00faaa98cd14243
0x1ce7e9a9e3b6dd3293c9067221ac3260858ce119ecb7ca860eac28b2474c7c9b
資産被害
3件の攻撃取引により、合計で1902枚以上のETH(450万ドル以上)が失われました。原稿執筆時点では、1902枚の$ETHは依然としてハッカーのウォレット(0x826d5f4d8084980366f975e10db6c4cf1f9dde6d)に保管されています。
攻撃者
0x826d5f4d8084980366f975e10db6c4cf1f9dde6d
攻撃用コントラクト
0x39519c027b503f40867548fb0c890b11728faa8f
被害を受けたコントラクト
Radiant: Lending Pool:
0xf4b1486dd74d07706052a33d31d7c0aafd0659e1
rUSDCn:
0x3a2d44e354f2d88ef6da7a5a4646fd70182a7f55
攻撃前の状況
攻撃の15秒前、プロジェクト側がArbitrum上に新しいUSDCマーケットを新たに作成しており、ハッカーはその新規USDCマーケットと最初に相互作用した人物でした。

攻撃の手順
初回の攻撃取引 0x1ce7e9a9e3b6dd3293c9067221ac3260858ce119ecb7ca860eac28b2474c7c9b を例に説明します。
1. AAVEからフラッシュローン機能を利用して300万ドル分のUSDCを借り入れる;
2. 200万$USDCをRadiantプールに預け入れる。このときliquidityIndexは1e27となる。

3. Radiantレンディングプール上で200万ドルのフラッシュローンを実行し、liquidityIndexを1.8e36まで膨張させる。
4. ステップ3を151回繰り返し、liquidityIndexを2.7e38まで膨張させる(初期値の2700億倍)。

5. Radiantプールから90.6 $ETH(約215,000ドル)を借入。これが今回の攻撃による利益となる;
6. 新しいコントラクト(0xd8b591)を作成;
7. 新しいコントラクトに対して無制限のUSDC許可を行い、543,000 $USDCを新コントラクトに転送し、以下の操作を新コントラクトを使って実行する;
8. 543,000 $USDCをRadiantプールに充てんし、2weiのトークンを発行する。amountScaledが2となる理由:543600000002*1e27 / 271800000000999999999999998631966035920 = 2;


9. Radiantプールから407,000 $USDCを引き出し、1weiのトークンのみをバーン(燃やす)。amountScaledが1になるのは、407700000000*1e27 / 271800000000999999999999998631966035920 = 1.5 であり、数学的丸めの問題が発生するため。なお、amountScaledはuint256型変数であり、1.5は切り捨てられて1となることに注意。


10. 271,000 $USDCをRadiantプールに預け入れ、amountScaledが1のトークンを発行。理由:271800000001*1e27 / 271800000000999999999999998631966035920 = 1
11. Radiantプールから407,000 $USDCを引き出し、amountScaledが1のトークンのみを破棄。
12. ステップ10および11を最大18回繰り返し、ハッカーが以前に新マーケットに預け入れた$USDCをすべて引き出す。
13. 2 $WETHを4.73K $USDCに交換し、3.23K $USDCを1.36 $WETHに交換。
14. 350万ドルのUSDCを元本とし、15,000ドルのUSDCを手数料として、AAVEへのフラッシュローンを返済。
15. 90ETH相当の利益を得る。
根本原因
根本的な原因は、ハッカーが新しく作成されたネイティブUSDCマーケットと最初にやり取りした人物であったこと、Radiantプロトコルのフラッシュローン機能を利用してliquidityIndexを極端に増幅させ、数学的丸めの問題を悪用して貸出プールの資産を盗み出したことにあります。
キーコード


TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News










