2日間で2回の攻撃に遭遇、DeFiプロトコルFEGには本当に耐えられない
创宇区块链安全实验室
2022-05-18 08:44
本文约2083字,阅读全文需要约8分钟
マルチチェーン DeFi プロトコル FEG は 2 日間で 2 件の攻撃を受け、累積損失は 300 万米ドルを超えました。

序文

序文Chuangyu ブロックチェーン セキュリティ ラボを知る2022 年 5 月 16 日 (北京時間)、

5月17日、マルチチェーンDeFiプロトコルFEGが再び攻撃され、攻撃者は291ETHと4343BNBを盗み、約190万ドル(うちBSCが130万ドル、イーサリアムチェーンが60万ドル)を失いました。

分析する

このプロトコルは BSC とイーサの両方で攻撃されており、以下の図は 2 つのチェーン上の攻撃イベントのトランザクション ハッシュです。この攻撃の主な理由は、swapToSwap() 関数内のパス アドレスが攻撃者によって制御される可能性があることです。

基本情報

副題

基本情報

攻撃契約: 0x9a843bb125a3c03f496cb44653741f2cef82f445

BSC: 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7

Ether: 0xf2bda964ec2d2fcb1610c886ed4831bf58f64948

脆弱性契約アドレス:

BSC:0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063

Ether:0x1e769a59a5a9dabec0cb7f21a3e346f55ae1972bb18ae5eeacdaa0bc3424abd2

攻撃プロセス

攻撃送信:

攻撃プロセス

1. 攻撃者 0x73b3 は、事前に作成された攻撃コントラクト 0x9a84 を呼び出して、DVM から 915.842 WBNB を借用し、116.81 WBNB を 115.65 fBNB に変換します。

2. 攻撃者 0x73b3 は、後でこの脆弱性を悪用するためにコントラクト 0x9a84 を攻撃し、10 個のコントラクトを作成しました。

3. 攻撃者0x73b3は、関数depositInternal()を通じて、最初のステップで交換したfBNBをFEGexPROコントラクト0x818eに抵当に入れます。

4. 攻撃者 0x73b3 は、depositInternal() および swapToSwap() 関数を呼び出して、FEGexPRO コントラクト 0x818e に、2 番目のステップで作成されたコントラクトに対する fBNB を承認させ、作成された 10 個のコントラクトに対して承認された fBNB を繰り返し呼び出します。

5. 攻撃者 0x73b3 によって作成された 10 個のコントラクトが前のステップで承認されているため、攻撃者はこれらの承認されたコントラクトを使用して transferFrom() 関数を呼び出し、毎回 113.452 fBNB を FEGexPRO コントラクト 0x818e から転送します。

6. 攻撃者 0x73b3 は、PancakePair の LP トランザクション ペア 0x2aa7 から 31217683882286.007 FEG と 423 WBNB を借用し、上記の手順 3、4、5 を繰り返して最終的に取得します。

7. 最後に、フラッシュ ローンを返し、上記の攻撃で得たすべての WBNB を攻撃コントラクト 0x9a84 に転送します。

詳細

swapToSwap() 関数を呼び出して悪意のあるパス アドレス パラメーターを渡すことにより、現在のコントラクト トークンの残高は影響を受けません (IERC20(address(Main)).approve(address(path), amt); 現在のコントラクト fBNB の承認。

フォローアップ

攻撃者は、depositInternal() と swapToSwap() を繰り返し呼び出すことで、FEGexPRO コントラクトに、攻撃者が渡した悪意のあるコントラクト パス アドレスへの fBNB を繰り返し許可させることができます。他のアドレスから転送されるトークンの量は、攻撃者が初めて誓約したトークンの量から手数料の量を差し引いたものとなります。デバッガー内の情報を確認すると、渡されたパス アドレス パラメーターはすべて、攻撃プロセスで作成されたコントラクト アドレスであることがわかります。

フォローアップ

16日の攻撃後、攻撃者は翌日にも攻撃を行ったが、攻撃アドレスを変更した。

攻撃契約: 0xf02b075f514c34df0c3d5cb7ebadf50d74a6fb17

攻撃者のアドレス: 0xf99e5f80486426e7d3e3921269ffee9c2da258e2

BSC:0xe956da324e16cb84acec1a43445fc2adbcdeb0e5635af6e40234179857858f82

Ether:0c0031514e222bf2f9f1a57a4af652494f08ec6e401b6ae5b4761d3b41e266a59

攻撃送信:

要約する

R0X 脆弱性コントラクト 0xa3d5 はオープンソースではないため、デバッガーから分析を試みたところ、最初の攻撃プロセスと似ているものの、補助入金には BUY() 関数、補助抽出には SELL() 関数が使用されていることがわかりました。 。

创宇区块链安全实验室
作者文库