Cointime

Download App
iOS & Android

分散型融資プラットフォーム HopeLend に対する融資攻撃の分析

Validated Project

北京時間の2023年10月18日19時48分59秒、Hope.moneyの融資プールはフラッシュローンの実施に基づいて攻撃されました。

Hope.money は、HopeLend 融資プラットフォーム、HopeSwap 分散型取引所、安定通貨 $HOPE、ガバナンス トークン $LT を構築し、ユーザーにフルスタックの分散型金融サービスを提供しています。

この攻撃に関与したプロトコルは、ユーザーがプロトコルに流動性を提供したり、過剰担保ローンから収入を得たりできる分散型融資プラットフォームである HopeLend です。

一部始終

HopeLend のコード実装には、融資プールに悪用可能な脆弱性が存在し、預金証明書を破棄する際に、整数の除算が正しく行われない問題が発生し、小数点部分が切り捨てられ、結果として破棄される証明書の数が以前よりも少なくなってしまいました。取得および期待される一貫した値のトークン。

攻撃者はこの欠陥を悪用して、Hope.money に資金が存在していたさまざまな融資プールを枯渇させました。

その中で、hEthWbtc 融資プールは 73 日前に展開されましたが、そこに資金がなかったため、ハッカーは融資プールに大量の資金を注入して割引率を大幅に引き上げ、それによって融資プール内の他のすべての融資をすぐに空にしました。ブロックトランザクション、プール資金。

さらに驚くべきことは、この脆弱性を悪用したハッカーは、その脆弱性を悪用するための資金を取得していなかったということです。彼の攻撃取引は、最有力候補によって発見されました。最有力候補は、彼の攻撃行動を模倣し、攻撃収益をすべて盗むことに成功しました (527最終的に、攻撃収益の 50 % (263 ETH) は、ブロック (ペイロード) をパッケージ化したマイナーに賄賂を渡すために、有力者によって使用されました。

脆弱性を発見した最初のハッカーは、ブロック 18377039 で攻撃コントラクトを作成し、ブロック 18377042 で攻撃コントラクトを呼び出しました。このとき、フロントランナーはメモリ プール内のトランザクションを監視し、フロントランナーとして攻撃コントラクトをシミュレートしました。実行中のコントラクトへの入力は同じブロック 18377042 で悪用され、ブロック 18377042 の最初のハッカーのトランザクションは、フロントランナーの後ろに順序付けされていたために実行に失敗しました。

資金の行き先

最有力候補が利益を受け取ってから 1 時間後、資金を 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A に移動しました。

資金の行き先

最有力候補が利益を受け取ってから 1 時間後、資金を 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A に移動しました。

10月20日13時30分23秒、公式チームと思われる人物がそのアドレスに連絡し、優勝者に報酬として26ETH(利益の10%)を残すことを許可し、優勝者から返信を受け取りました。

1 時間の通信の後、最終的な資金は GnosisSafe のマルチ署名保管庫に転送されました。

以下に、実際の脆弱性と、ハッカーがそれを悪用した方法の詳細を示します。

事前情報

*HopeLend の融資プロトコル実装は Aave からフォークされているため、脆弱性に関連するコア ビジネス ロジックは Aave のホワイト ペーパーに記載されています。

0x00 預金とローン

Aave は純粋な DeFi であり、融資ビジネスは流動性プールを通じて実行され、ユーザーが Aave に流動性を預けると、融資による収益を受け取ることが期待されます。

融資収益は全額が利用者に分配されるわけではなく、利息収入の一部がリスク準備金に含まれますが、その割合は小さく、融資収益の大部分は流動性を提供する利用者に分配されます。

Aave で預金を貸付する場合、Aave は割引を使用して、さまざまな時点での預金数を流動性プールの初期時点での預金数に換算するため、それぞれの原資産に対応する元利金の合計が株式数は直接計算できます。金額(株式数)*指数(割引率)を使用して計算されます。これにより、計算と理解が大幅に容易になります。

ファンドの購入と同様のプロセスとして理解できます。ファンドの初期の純価値は 1 です。ユーザーは 100 元を投資して 100 株を取得します。一定期間後に純価値は 1.03 になったとします。このとき、ユーザーは 100 元を投資します。 、ユーザーは再度 100 元を投資し、100 株を取得します。は 97、ユーザーの合計シェアは 197 です。

これは実際には、インデックス (正味価値) に従って資産を割り引いています。これが行われる理由は、残高を使用して、ユーザーの実際の元本と利息の合計に現在のインデックスが乗算されるためです。 2回目入金時のユーザーの正しい元利合計は100 * 1.03 + 100 = 203となります。割引処理が行われない場合、2回目の入金後の元利合計は(100)となります。 +100) * 1.03 = 206 ですが、これは間違いです。割引を行うと、元利金の合計は (100 + 100 / 1.03) * 1.03 = 103 + 100 = 203 になります。203 の結果は正しいです。

攻撃プロセス

0x25126....403907(hETHWBTCプール)

攻撃プロセス

0x25126....403907(hETHWBTCプール)

0x5a63e....844e74 (攻撃契約の現金化)

アタッカー:

1. 初回フラッシュローン資金を融資し、担保に入れます

攻撃者はまず Aave Flash Loan から 2300WBTC を借り、HopeLend に 2000 WBTC を誓約し、資金は HopeLend の hEthWbtc コントラクト (0x251...907) に転送され、対応する 2000 hETHWBTC が取得されます。

2. 空のローンプールを使用して初期割引率 (liquidityIndex) を操作します。

HopeLend からフラッシュ ローンを通じて 2,000 WBTC を借ります。

現在の値は 1 hETHWBTC = 1 WBTC です。

WBTCと交換するためにETHWBTCを入出金する通常の操作によれば、交換比率は影響を受けません(交換比率は利息が得られる場合にのみ影響を受け、1 hETHWBTCはより多くのWBTCを取得します)。

この時点で、ハッカーは一連の複雑な操作を通じて割引率を操作し始めます。

• ハッカーは取得した 2,000 WBTC を直接送金により HopeLend の hEthWbtc コントラクト (0x251…907) に送金しましたが、このステップはローンの返済ではありません。

• その後、ハッカーはステップ 1 で約束した WBTC (1999.999…) のほとんどを引き出したため、前のステップではプール内の資産を補充するために WBTC を返送する必要がありました。

• 最終的にハッカーは hEthWbtc の最小単位 (1e-8) だけを保持しますが、少し残す必要があるためここでは完全には言及できませんが、割引率 (liquidityIndex) を計算する際には、既存のものと新しいものを加えたものです。クリアすると、割引率 (liquidityIndex) が 0 になり、プール内の割合がアンバランスになることはありません。

• 前のステップで hEthWbtc の大部分を破棄するために交換された wBTC と、前のフラッシュ ローンからの残りの wBTC を使用し、貸与されたフラッシュ ローンを HopeLend プールに返し、合計 2001.8 WBTC (1.8 wBTC の利息を含む) を支払います。

• 上記のプロセスにより、hEthWbtc の大部分が破壊され、ハッカーアカウントに hEthWbtc の最小単位 (1e-8) が 1 つだけ残るため、hETHWBTC の総量は減少しますが、融資プールには 2001.8 wBTC が存在します。レート (流動性インデックス) は驚くべき 1 億 2,600 万に達します。

これには、預金利用者の利益は基本的にプール内の流動性の増加によってもたらされるという知識が含まれており、貸出プールは預金金利と利用率に基づいて借入金利と預金金利を動的に調整します。

ここで、プールがフラッシュ ローンの金利 (1.8WBTC) から追加の流動性を受け取ると、70 パーセント (126,000,000) が流動性インデックス (liquidityIndex) に含まれます。これは、預金単位あたりの割引価値 (hEthWbt) を計算するために使用されます。

ハッカーの操作前にはプールが空だったので、返済後の流動性の合計は 1 のみで、金額は 126000000、初期の流動性インデックスは 1 で、結果は 126000001 になります。

3. 割引率の拡大を継続

ハッカーはフラッシュ ローンを通じて HopeLend から 2,000 WBTC を借り続け、毎回追加で 1.8 WBTC を返し、流動性インデックスが毎回 1 億 2,600 万 WBTC 蓄積することを可能にしました。

ハッカーはこのプロセスを 60 回繰り返し、最終的に流動性インデックスは 7,560,000,001 に達し、攻撃者が保有する hEthWBTC の最小単位の割引価値は 75.6WBTC (約 214 万ドル) に達する可能性があります。

これにより、ハッカーが hEthWBTC を制御し、その値を歪めることも可能になります。

4. 他の既存資金の融資プールを空にして収入を生み出す

その後、攻撃者は hEthWBTC の最小単位 1 を担保として使用し、HopeLend の他の 5 つのトークン プールから大量の資産を貸し出しました。

含む:

  • 175.4 - ウェス
  • 145,522.220985 - USDT
  • 123,406.134999 - USDC
  • 844,282.284002229528476039 - 希望
  • 220,617.821736563540747967 - stHOPE

これらのトークンは収益として Uniswap を通じて WBTC と WETH に変換され、さまざまな手数料を差し引いた後のハッカーの最終利益は約 263 WETH でした (賄賂ペイロードの 263.9 WETH を除く)。

ハッカーが他のプールから多額の資金を借りることができる理由:

お金を借りたり、預金を引き出したりするときは、融資契約によりユーザーの住宅ローンの資産状況がチェックされ、ローンが住宅ローンを超えていないことが保証されます。

割引率は以前にハッカーによって操作されており、割引率はnormalizedIncome乗数を使用して住宅ローン価値の計算に含まれるため、彼の手にあるhEthWBTCの1ユニットの住宅ローン価値は75.6WBTCにもなります。

ハッカーは他のプールからお金を借りるたびに、担保資産の検証を簡単に通過しました。

この時点で、攻撃者は、liquidityIndex を操作するために合計 2000+1.8*60 WBTC を HopeLend に投資し、hEtthWBTC の 1 ユニットのみを残しました。

5. 主要な脆弱性ポイント (整数の除算エラー) を悪用してキャッシュアウトする

以前に投資した wBTC を引き出すために、攻撃者は別の攻撃コントラクト 0x5a63e....844e74 を展開し、その中でdrawAllBtc() メソッドを呼び出しました。

脆弱性のプロセスは次のとおりです。

① 初回入金額 151.20000002 wBTC 現在の流動性インデックス (1 最小単位 hEthWBTC=75.6wBTC) に従って、攻撃者は最小 2 単位の hEthWBTC を取得します。

② 113.4 wBTC を出金し、対応する hEthWBTC シェアを逆算し、hEthWBTC に対して書き込み操作を実行します。

③ 113.4 wBTC では最小単位 1.9999999998 個の hEthWBTC を破壊する必要がありますが、div 関数の精度により hEthWBTC 最小単位 1 個しか破壊されず、悪用可能な脆弱性となり、ハッカーは最小単位 1 個の hEthWBTC を保持することができます。

重大な脆弱性

hEthWBTC の burn メソッドは高精度分割 rayDiv を呼び出します。

ここ:

a=11340000000 (WBTCは引き出し予定)

b=7560000001000000000000000009655610336 (割引率)

(a*1e27+b/2)/b = 1.9999999998 ですが、solidity 独自の div メソッドは切り捨てて 1 を返します。これは 11340000000 / 7560000001 に相当します。小数点以下の桁は除算後に切り捨てられます。

(a*1e27+b/2)/b = 1.9999999998 ですが、solidity 独自の div メソッドは切り捨てて 1 を返します。これは 11340000000 / 7560000001 に相当します。小数点以下の桁は除算後に切り捨てられます。

0x5a63 (攻撃コントラクト - キャッシュアウト) は 75.60000001WBTC の入金を継続し、hEthWBTC の最小単位を正確に 1 取得し、hEthWBTC の最小単位を 2 つ保持し続けました。

113.40000000wBTC を引き出し、75.60000001wBTC を入金するこのサイクルで、攻撃者は毎回 37.8 wBTC を何もないところから入手できます。

58 サイクル後、攻撃者は初期段階で投資したすべての wBTC を引き出し、Aave のフラッシュ ローンを無事に返済しました。

結論は

hEthWBTCの融資プールは初期化されていないため、攻撃者は簡単にliquidityIndexを操作して最大値まで増やすことができ、整数の除算の切り捨て誤差により引き出し率が除数として大幅に増幅された後、引き出しが容易になります。ワンブロックに先行投資です。

適切に機能している融資プールでは、融資プールにはすでに流動性があるため、融資利子のわずかな増加によって割引率が大幅に上昇することは容易ではありません。

コメント

全てのコメント

Recommended for you

  • ヴィタリク氏:仮想通貨ユーティリティの最低点は過ぎた

    ヴィタリック・ブテリン氏は、仮想通貨ユーティリティの最低点は過ぎたとツイートした。テクノロジーの観点から見ると、過去 5 年間の最大の発展は主に、ブロックチェーンのスケーラビリティ問題が差し迫った解決を迎えたことです。 Vitalik氏は特に予測市場Polymarketに言及し、今春のインタビュー後、同社がイーサリアム上に存在することに非常に満足していると述べた。

  • FBI:仮想通貨取引所の従業員になりすまして資金を違法に盗む詐欺師に注意してください

    FBIは8月1日、詐欺師が仮想通貨取引所の従業員になりすまして、一方的なメッセージや電話を通じて資金を盗んでいると警告を発し、アカウントに問題があると主張して被害者にログインメッセージを提供させた。リンクをクリックするか、識別情報を共有します。

  • 7月の安定通貨発行額は1,443億米ドルに増加し、USDTの市場シェアは78.9%に達した

    TheBlockProのデータによると、7月のチェーン上のステーブルコインの調整後の取引量は18.8%増加して9,974億米ドルに達し、ステーブルコインの供給量は1.2%増加して1,443億米ドルに達し、そのうちUSDTとUSDCが市場シェアを占めていた。それぞれ78.9%と17.1%。さらに、ビットコインとイーサリアムの調整後のオンチェーン取引量は全体で31.8%増加し、4,450億米ドルに達しました。このうち、ビットコインの調整後のオンチェーン取引量は34.7%増加し、イーサリアムの調整後オンチェーン取引量は4,450億米ドルに増加しました。 27.7%。

  • アラブ首長国連邦のドバイ商業銀行が仮想資産サービスプロバイダーの専用口座を開設

    アラブ首長国連邦(UAE)のドバイ商業銀行(CBD)は、顧客の資金を管理し、規制上の健全性要件を満たすために、仮想資産サービスプロバイダー(VASP)の専用口座を開始しました。CBDは中央銀行に準拠するための専用口座を開始しました。 UAE およびドバイ仮想資産規制庁 (VARA) の規制。 CEOのベルント・ファン・リンダー氏は、この動きはドバイ商業銀行の中核的な銀行サービスと一致しており、デジタル経済の発展を促進する同銀行の計画を支援すると述べた。

  • ブロックチェーン融資プロトコルMorphoがRibbit Capital主導で5,000万米ドルの資金調達を完了

    DeFi企業モルフォは、CEOのポール・フランボットがまだ大学3年生だったときに1,800万ドルの資金を調達した。今回、モルフォはプライベートトークンセールを通じて5000万ドルを調達したが、評価額は明らかにしなかった。この戦略的資金調達ラウンドは、Robinhood、Revolut、Coinbaseなどの金融テクノロジー企業への初期投資家であるRibbit Capitalが主導しました。

  • 北京:預金保管と家賃監督におけるデジタル人民元の使用を奨励

    「北京市住宅賃貸保証金保管及び家賃監督暫定措置」が発布された。本措置は、本市内で他人の住宅を借りて転貸事業を行う住宅賃貸事業者が賃借人から徴収する敷金及び家賃の保管、監督、管理にも適用されるとしている。この市は、預金の保管と家賃の監督にデジタル人民元の使用を奨励しています。

  • アクティブな融資額は2022年初頭以来の最高水準に戻り、これはDeFiが再び回復していることを示している可能性がある

    ゴールデン・ファイナンスは、仮想通貨市場分析プラットフォームのトークンターミナルが7月31日の記事で「DeFiは再び回復しつつある」と述べたと報じた。データによると、アクティブ融資量やTVLなどの主要指標は最近の最低水準である2023年から上昇しており、その中にはアクティブ融資額も含まれている。融資額は約133億ドルと2022年初め以来の高水準に戻っており、これは「強気市場の先行指標」であるレバレッジが上昇していることを意味する可能性がある。

  • 7月末のグレースケール位置データ更新:GBTCは約241,000BTCに下落、ETHEは約207万ETHを保有

    Grayscale は、7 月 31 日の時点でビットコインとイーサリアムのファンド データを次のように公式に更新しました。

  • 7月のビットコインチェーンのNFT売上高は約7,730万ドルで、2023年11月以来の最低記録となった

    Cryptoslamのデータによると、7月のビットコインチェーンにおけるNFT売上高は77,311,729.1ドルで、2023年11月以来の最低記録を樹立した。さらに、7月のビットコインチェーン上のNFT取引数は12万件未満で、これも2023年11月以来の最低水準となった。その中には、約35,477人の独立した売り手と約49,348人の独立した買い手がいた。

  • Upbit、Bithumb、Coinoneが規制手数料の支払いを開始、総額3億ウォンに上る見込み

    仮想資産ユーザー保護法の施行に伴い、Upbit、Bithumb、Coinone などの仮想資産サービスプロバイダーも規制手数料の支払いを開始します。規制手数料は営業利益に応じて徴収され、総額は3億ウォン(22万ドル)になる見通しだ。 暗号資産サービスプロバイダーの規制上の負担額は、前営業年度の営業利益と負担率に基づいて計算されます。 2024年の株価に基づくと、Upbitの手数料は約2億7,200万ウォン(19万9,000ドル)、Bithumbの手数料は約3,650万ウォンとなる。 CoinoneとGopaxはそれぞれ603万ウォンと83万ウォンである。昨年の営業収益が約17億ウォンだったコルビットは、規制負担金の支払い対象外となっている。規制上の拠出金の実際の徴収は来年開始される。 「監督手数料」とは、金融監督局の検査を受ける金融会社などの金融機関が、監督やサービスの対価として金融監督局に支払う準税金だという。この税は営業利益が30億ウォン(220万ドル)以上の規制対象企業に課される。