2021年5月20日、BUNNYの価格が暴落しました。
理由はフラッシュローン攻撃を受けたということのようです。
今回の攻撃についてBunnyの公式が分析結果を発表しました。
この記事では公式が発表した内容の日本語訳を載せておきます。
なお、Bunnyの公式アナウンス(英語)はこちらにあります。
正確な情報については上記原文を参照ください。
注意
この記事はBunny公式が出したレポートを日本語に翻訳したものです。
原文はこちら。
Bunny攻撃のまとめ
- 悪用者(exploiter)はPancakeSwapを使って攻撃しました
- PancakeSwapの価格差を利用して、ハッカーはUSDT / BNB と BUNNY / BNB の価格を意図的に操作し、フラッシュローンを使って大量のBUNNYを取得しました
- 悪用者はすべてのBUNNYをマーケット(イーサリアム)に投げ売りました
- 悪用者はPancakeSwapで残りのBNBを返済して攻撃を終了しました
これは悪用者が実施した攻撃の簡単なレポートとタイムラインの記録です。
悪用者のウォレットアドレス:
0xa0ACC61547f6bd066f7c9663C17A312b6Ad7E187
悪用したトランザクション:
https://bscscan.com/tx/0x897c2de73dd55d7701e1b69ffb3a17b0f4801ced88b0c75fe1551c5fcce6a979
攻撃のタイムライン
攻撃開始
5月19日 22:31:25 UTC(日本時間 5月20日05:31:25)
攻撃するために1BNB 相当の USDT / BNB を USDT / BNB フリップボードにデポジット。
期待されたとおりLP 9.275 が悪用者のコントラクトに預けられる。
5月19日 22:34:28 UTC(日本時間 5月20日05:34:28)
攻撃実行(詳細は以下)
5月19日 22:36:00 UTC(日本時間 5月20日05:36:00)
BUNNY価格の異常な上昇が検出される。
(運用チームによる報告)
5月19日 22:45:10 UTC(日本時間 5月20日05:45:10)
悪用者によって引き出されたWBNBを隠すため、114,631 BNB が次のアドレスに送金される。
0x158c244b62058330f2c328c720b072d8db2c612f
5月19日 23:18:10 UTC(日本時間 5月20日06:18:10)
フラッシュローン攻撃が正式に確認される。
これ以上の攻撃を防ぐためにVaultへのすべての入金と出金を一時停止。
5月19日 23:59:55 UTC(日本時間 5月20日06:59:55)
上記のアドレスから488,071.8989395982 BUNNY が 9,161.3295578776 BNB に交換され、その一部(327.2930347138 BNB)が1inchコントラクト(0x11111112542d85b3ef69ae05771c2dccff4faa26)を介してPancakeSwapで約43.2463201179 ETH に交換された。
攻撃終了
5月21日 06:30:00 UTC(日本時間 5月21日15:30:00)
Vaultに対する入金 / 出金 を再開
攻撃の詳細
22:34:28 UTC における攻撃のトランザクションの詳細は次の通り。
- 悪用者はPancake Swapの資金を確保した後、フラッシュローン攻撃を実施(すべてのシーケンスは同一のトランザクション内で実施された。)
- 1,051,687 WBNB を PancakeSwap CAKE/BNB に送る。
- 522,524 WBNB を PancakeSwap BUSD/BNB に送る。
- 210,158 WBNB を PancakeSwap ETH/BNB に送る。
- 133,504 WBNB を PancakeSwap BTCB/BNB に送る。
- 241,021 WBNB を PancakeSwap SAFEMOON/BNB に送る。
- 98,189 WBNB を PancakeSwap BELT/BNB に送る。
- 66,290 WBNB を PancakeSwap DOT/BNB に送る。
- 2,961,750 USDT を ForTubeに送る。 - 悪用者はPancakeSwap V2 USDT / BNBプール(ペアコントラクトを使用して直接生成)で 7,744 BNB と 2,961,750 USDT(前のステージのForTube)をペアリングすることにより 144,445 LP を生成
- PancakeSwap V1 USDT / BNBプールで2,315,631 WBNB を 3,826,047 USDT に交換(これにより、PancakeSwap USDT / BNBのバージョン1の価格設定を利用)。
- getRewardを使って生成されたBunnyを呼び戻す。ここで、②で生成された144,445 LP がBunnyMinterに送られる。
- すべての 144,445 LP トークンに removeLiquidity を使うことによって、悪用者は2,961,750 USDT + 7,744 WBNB を生成し、PancakeSwap BUNNY/BNB の③の価格と V1 における交換の過程で、10,836 BUNNY と 1,156,330 WBNB を用いて105,257 BUNNY /BNB トークンを発行。
- ⑤で新しく生成されたBUNNY/BNBと、BNBの価格は2,324,152 BNB と計算され、6,972,455 BUNNY を発行。
- 6,972,455 BUNNYを発行した後、以下のことが発生
- PancakeSwap V1 BUNNY/BNBプールで4,880,718 BUNNY が 2,384,754 BNB に交換される。
- PancakeSwap V2 BUNNY/BNB プールで 1,394,491 BUNNY が 56,270 BNB に交換される。 - フラッシュローンを使って実施されたすべての支払いが再び戻される
- ForTubeで2,964,119 USDT を返済
- PancakeSwap の DOT/BNB で66,463 WBNB を返済
- PancakeSwap の BELT/BNB で98,445 WBNB を返済
- PancakeSwap の SAFEMOON/BNB で241,528 WBNB を返済
- PancakeSwap の BTCB/BNB で133,852 WBNB を返済
- PancakeSwap の ETH/BNB で210,706 WBNB を返済
- PancakeSwap の BUSD/BNB で523,886 WBNB を返済
- PancakeSwap の CAKE/BNB で1,054,429 WBNB を返済
- 114,631 WBNB の残りを悪用者のアドレスに送金(これにより悪用者の悪意ある利益が生じる)
関連情報を提供し、支援してくれたすべての個人とプロジェクトに感謝します。
トークンの転送やその他のアクションについて、BinanceおよびEtherscanと連絡を取り合って引き続き調査しています。
率直に、我々はこれまでクロスチェーンや他の新しいサービスの展開に熱心に取り組んできました。
そして我々はプロジェクトとして進化することを約束しています。
この事件と重大さとコミュニティへの影響を考慮して、我々はさらなる脆弱性を閉じることに焦点を当てることを再確認します。
さらに、我々はコミュニティによって失われた価値を回復し、プロジェクトへの信頼を回復できる解決策を提供することに取り組んでいきます。