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

  • 中国製造業の機会と動向

    Fictiv の中国ゼネラル マネージャーのキャメロン ムーアと CEO のデイブ エバンスが、世界の製造地域に関する一連の記事で、中国の製造業を形成する現在の機会とトレンドについての洞察を共有します。関税の上昇や貿易摩擦の懸念にもかかわらず、中国は依然として製造業の長い歴史を持つ「世界の工場」であり、ハイテクを含むますます多くの世界の主要産業をカバーしている。中国は世界の製造業生産高の30%を占め、世界最大の製造国であり、世界最大の商品輸出国でもあり、その生産能力は主にエレクトロニクス、繊維、機械、鉄鋼などの産業によって支えられている。スマート製造、インダストリー 4.0 テクノロジー、オートメーションの導入により、中国の工場は変革され、生産性と精度が向上しています。中国の人件費は上昇しており、製造業の平均賃金は過去10年間で2倍以上に増加している。エネルギー効率と持続可能性が重要な焦点となっており、製造業者はグリーン慣行や省エネ技術をますます採用しています。政府は戦略的政策、財政的インセンティブ、インフラ投資を通じて製造業の発展を支援しています。

  • 米国の消費者信頼感は11月に再び改善し、2年ぶりの高水準に達した

    コンファレンス・ボードの首席エコノミスト、ダナ・M・ピーターソン氏は、「11月の米国の消費者信頼感は引き続き改善し、過去2年間で最高水準に達した。11月の上昇は主に消費者の現状評価によるものである。前向き、特に労働市場では、将来の雇用機会に対する消費者の楽観的な見方も10月に比べて大幅に高まり、約3年ぶりの高水準に達している一方、将来の景気に対する楽観的な見方は変わっていない。将来の収益はわずかに減少しました。」以前のニュースによると、米国コンファレンス・ボードの消費者信頼感指数は11月に111.7を記録し、2023年7月以来の最高値を記録した。

  • Starknet: STRK ステーキングの第 1 フェーズがメインネットで正式に開始されました

    Starknet は、STRK ステーキングの第 1 段階がメインネットで正式に開始されたと投稿しました。

  • CZ: ミームの流行を終わらせようとしているのではなく、より多くの構築者を奨励するだけです

    CZはミームコインの支持者でもあるが、この流行を終わらせるのは非常に難しいというメッセージを投稿し、これに対してCZは次のように返信した。 。」

  • モロッコ、2017年の仮想通貨禁止を正式に解除し再合法化へ

    モロッコは2017年以来国内での仮想通貨取引の全面禁止に続き、仮想通貨の再合法化を計画している。

  • Talus Network が 1 億 5,000 万米ドルの評価額で 600 万米ドルの戦略的資金調達ラウンドを完了

    分散型 AI プロトコルの Talus Network は、Polychain Capital が主導する戦略的資金調達ラウンドで 1 億 5,000 万ドルの評価額で 600 万ドルを調達しました。この資金は、プロトチェーン、Nexus フレームワーク、「AI デート エクスペリエンス」アプリケーションを含む Talus エコシステムのさらなる開発に役立ちます。

  • AXIOS:トランプ大統領、AI長官の任命を検討

    AXIOSの報道によると、トランプ大統領は連邦政策と政府による新興技術の利用を調整するために人工知能長官を任命することを検討しているという。

  • Schuman Financial、RockawayX主導で736万米ドルのシードラウンド資金調達を完了

    Schuman Financialは、Lightspeed Faction、Kraken Ventures、Nexo Ventures、Gnosis VC、Delta Blockchain Fund、Bankless Venturesの参加を得て、RockawayXが主導する736万ドルのシードラウンドを終了した。さらに、Schuman Financial は、MiCA 準拠のユーロ ステーブルコインである EURØP を開始しました。フランスでステーブルコイン発行ライセンスを取得した最初の欧州企業となったシューマン・フィナンシャルは、SEPAの統合、銀行チャネル、ソシエテ・ジェネラルなどのティア1グローバル銀行との保管パートナーシップを含むEUROPを中心としたエコシステムを構築している。

  • QCP:BTCの10万ドルレベルへの道は行き詰まり、ETHのインプライド・ボラティリティはプットに転じる

    QCPキャピタルは分析を発表し、最近のビットコイン価格の下落により4億3,000万ドル以上の長期清算が発生し、この下落は4億3,800万ドルの流出を記録したスポットETFへの5日連続の純流入が終了したのと一致したと指摘した。一方、MicroStrategyはさらに4.4%下落した。米国の祝日が近づくにつれ、BTCの10万ドルレベルへの道は行き詰まっており、価格を押し上げる即時のきっかけは存在しない。さらに、ETHのインプライド・ボラティリティはコールではなくプットにシフトしており、特に連邦準備制度理事会のFOMC議事録とPCEデータの今後の発表を控えて、下値リスクに対する市場の懸念が強まる可能性があります。しかし、長期的には、この市場下落は過度の調整ではありません。ビットコインは先週初めの水準まで戻っただけだ。トランプ大統領の勝利以来、市場は極端に買われすぎ、レバレッジが過剰になり、一時停止は避けられない状況となっている。

  • バイナンス、GFT、IRIS、KEY、OAX、RENを上場廃止へ

    バイナンスは、GFT/USDT、IRIS/BTC、IRIS/USDT、KEY/USDT、OAX/BTC、OAX/USDT、REN/BTC、REN/USDT取引ペアを2024年12月10日に上場廃止します。 さらに、Binance Futures はすべてのポジションをクローズし、2024 年 12 月 3 日 09:00 (UTC) に KEYUSDT および REUSDT USDⓈ-M 無期限契約を自動的に決済します。決済完了後、契約は上場廃止となります。