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 より小さくなります。実際の値。
ハッカーの攻撃プロセスを見てみましょう。






40770000000000000000000000000000000000/271800000000999999999999998631966035920=1.49999999、四捨五入の結果は 1 となり、結果は 1/3 小さくなります。
下の図に示すように、407,700 USDC が破壊されるはずでしたが、271,800 が残っており、271,800 のみが破壊され、攻撃者は 407,700 USDC を引き出したことを示しています。


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

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