1,900 ETH以上が盗まれ、Radiant Capitalがどのようにハッキングされて450万ドルが盗まれたのか

ForesightNews

2024 年 1 月 3 日、Radiant Capital プロジェクトは攻撃者によるフラッシュ ローン攻撃を受けました。攻撃者は 3 回の取引を通じて 1,900 ETH 以上、450 万米ドル以上相当を盗みました。盗まれた資金は現在も攻撃者の住所に保管されています。

作者: Beosin

Beosin の EagleEye セキュリティ リスク監視、早期警告、ブロック プラットフォームによる監視によると、2024 年 1 月 3 日、**Radiant Capital プロジェクトは攻撃者によるフラッシュ ローン攻撃を受けました。攻撃者は 3 回の取引で 1,900 ETH 以上、総額 450 万米ドル以上を盗みました。盗まれた資金は今も攻撃者の住所に保管されています。**Beosin セキュリティ チームはこの事件を直ちに分析しました。

脆弱性分析

このインシデントの根本原因は、Radiant Capital プロジェクトがトークンの数を計算するプロセスで精度の拡大と丸めを使用していたことにあり、これにより攻撃者は精度を制御し、丸めと組み合わせることで利益を拡大することができました。 **

上記のコードを観察すると、rayDiv 関数は 2 つの uint256 データ a と b を渡します。プロセス全体は (a*RAY+b/2)/b と省略できます。ここで、RAY は精度拡張データ (10^27) です。 a*RAY/b+0.5 では、丸め関数が実装されており、この計算方法の誤差は主に b から生じます。b が a に比べて非常に小さい場合、誤差は無視できます。ただし、 b が a と同じ桁の大きさである場合、誤差は a 自体に達する可能性があります。

たとえば、a*RAY=10000、b=3 の場合、計算結果は 3333 となり、実際の値より 1/10000 小さくなります。a*RAY=10000、b=3000 の場合、計算結果は次のようになります。 3、実際の値より 1/10 小さい。

このインシデントでは、攻撃者は b の値と a の値が同じ桁になるように b の値を操作し、計算が 3/2.0001=1 と同等になり、計算された値は 1/3 より小さくなります。実際の値。

攻撃プロセス

ハッカーの攻撃プロセスを見てみましょう。

  1. 攻撃者は最初に AAVE フラッシュ ローンを通じて 300 万 USDC を借り、これが攻撃の資金として使用されました。

  1. 攻撃者は、Radiant 契約に 200 万 USDC を誓約し、200 万の rUSDCn 証明書トークンを取得しました。

  1. 攻撃者は、Radiant コントラクトを通じてフラッシュ ローンを実行し、200 万 USDC を借り、コールバック関数で 200 万 USDC を返し、2 番目のステップで質入れされた USDC を抽出します。最後に、フラッシュ ローン関数は次のコードで transferfrom 関数を呼び出します。攻撃者の USDC を契約に移します。 **このとき、9/10000の手数料がかかり、徴収された手数料がプールの流動性となります。 **

  1. ステップ 3 を何度も繰り返すことで、攻撃者は、liquidityIndex=271800000000999999999999998631966035920 のように、liquidityIndex が非常に大きくなるように制御します。

  1. 次に、攻撃者は新しいコントラクトを作成し、そこに 543,600 USDC を入れます。**5436 (USDC 値) はステップ 4 の 2718 (liquidityIndex 値) のちょうど 2 倍であり、四捨五入することで簡単に制御できるためです。 **

  1. 攻撃者は、543,600 USDC すべてを Radiant 契約に抵当に入れ、同額の rUSDCn を取得しました。

  1. 攻撃者は 407,700 USDC を抽出し、これにより 407,700 rUSDCn が破壊されるはずでしたが、前述のように、burn 関数は精度の拡張と丸め計算を実行しました。

40770000000000000000000000000000000000/271800000000999999999999998631966035920=1.49999999、四捨五入の結果は 1 となり、結果は 1/3 小さくなります。

下の図に示すように、407,700 USDC が破壊されるはずでしたが、271,800 が残っており、271,800 のみが破壊され、攻撃者は 407,700 USDC を引き出したことを示しています。

  1. 攻撃者はステップ 7 の脆弱性を悪用してプレッジ引き出し操作を繰り返し、引き出し額は常にプレッジ金額の 1/3 を超え、最終的にはプール内のすべての USDC を交換します。 **

資金追跡

本稿執筆時点では、盗まれた1,902 ETHはハッカーのアドレスに保管されており、移動されておらず、Beosin Traceは引き続き資金を監視していく予定である。 **

2024年に入り、すでに2件の大規模盗難事件が発生しています。 (昨日のセキュリティ インシデントのレビュー: 今年最初の事件、8,000 万ドルが盗まれた Orbit Chain 事件はどうなったのですか?) この一連の出来事は、Web3 エコシステムではセキュリティ予防措置が依然として非常に重要であることを改めて思い出させます。 **

免責事項:このページの情報は第三者から提供される場合があり、Gateの見解または意見を代表するものではありません。このページに表示される内容は参考情報のみであり、いかなる金融、投資、または法律上の助言を構成するものではありません。Gateは情報の正確性または完全性を保証せず、当該情報の利用に起因するいかなる損失についても責任を負いません。仮想資産への投資は高いリスクを伴い、大きな価格変動の影響を受けます。投資元本の全額を失う可能性があります。関連するリスクを十分に理解したうえで、ご自身の財務状況およびリスク許容度に基づき慎重に判断してください。詳細は免責事項をご参照ください。
コメント
0/400
コメントなし