20万ドルのUniLendハック:何が間違っていたのか、そしてDeFiはどのように改善できるのか

UniLendは脆弱性のために悪用され、約200Kドル(TVLの4%)が盗まれました。攻撃者はフラッシュローンを使用して6,000万USDCを入金し、担保計算を操作し、ヘルスチェックプロセスの契約バグを悪用して担保価値を水増しし、60stETHを引き出しました。この欠陥は、userBalanceOfToken 関数の実装の誤りに起因します。UniLendはその後、問題を修正し、V2預金を一時停止し、資金を回収するための報奨金を提供しました。この事件は、DeFiプラットフォームのセキュリティの重要性と、徹底的なスマートコントラクト監査の必要性を浮き彫りにしています。

UniLendの紹介

@UniLend_Financeは、スマートコントラクトを通じて貸借サービスを提供する許可されていない分散型マネーマーケットプロトコルです。

UniLendは、担保としてオーバーコラテラル化された暗号通貨を質入れすることで、ユーザーが自分の暗号通貨を利用できるようにします。これにより、貸し手がブロックごとに支払われる年間複利率(APY)を受け取りながら、借り手が借りた暗号通貨に対して利息を支払う安全な貸出環境が作成されます。

UniLendの運営方法

UniLendプロトコルV2は、3つの主要な技術コンポーネントを介して機能します:

1.デュアルアセットプールモデル

UniLendは、各ERC20/ERC20互換ペアに対して分離されたデュアルアセットプールを利用しています。この設計により、1つのアセットのパフォーマンスやボラティリティが他のものに影響を与えないようにし、セキュリティと安定性を向上させています。このアーキテクチャにより、どのユーザーでも複数のブロックチェーン上のさまざまなアセットに対するレンディングや借入れプールを作成および管理できます。

2.供給と借入

  • 供給: ユーザーは指定されたプールにERC20トークンを預け入れ、自分のユニークな流動性ポジションを表す非代替可能トークン(NFT)を受け取ります。これらのNFTは供給された資産の詳細を保存し、必要に応じて転送または償還することができます。供給された資産は、プールの利用率と市場の需要に基づいて可変利子を獲得します。
  • 借り入れ:ユーザーはオーバーコラテラル化された暗号通貨を提供する必要があります。プロトコルは担保比率を強制し、ガバナンスを通じて調整可能です。借り入れた金額はブロックごとに利息が発生し、プールの利用率によって決定されます。これにより、ローンは適切に保証されたままになります。

3.利率モデル

UniLendは、プールの利用率(U)に基づいた動的な金利モデルを採用しています。計算方法は次のとおりです:

Ux=BorrowxBorrowx+Cashx

借入利率:

借入金利x = 10% + (Ux×30%)

需要と供給を調整するために、利用率が高くなると料金が上昇します。

  • 供給利率:

供給利子率x=借入利子率x×Ux×(1−S)

これにより、プロトコルが利益を上げ続ける一方で、サプライヤーが持続可能なリターンを得ることが保証されます。

これらのコンポーネントは、セキュアで効率的でスケーラブルな分散型マネーマーケットを作成するために連携しています。

攻撃分析

2025年1月12日、UniLendプロトコルのセキュリティ脆弱性が悪用され、UniLendプールから約20万ドルの損失が発生しました。攻撃者は担保計算を操作し、ユーザーの健全性ファクターを誤って評価しました。この欠陥により、攻撃者は適切な担保に裏付けられていない60 stETHトークンを引き出すことができました。

盗まれた資産には、プロトコルのユーザートークン残高の計算ミスを利用した60個のstETHトークンが含まれていました。

攻撃の詳細な分析

1. 利用の初期化

攻撃者はフラッシュローンを利用して大量のUSDCをUniLendプールに預けることにより、攻撃を開始しました。具体的には、彼らは6000万USDCを預け、プール内の担保を著しく膨らませました。

フラッシュローンを利用すると、担保を提供せずに大量の資産を借りることができます。借りた金額を同じ取引内で返済する必要があります。

攻撃者はこのメカニズムを利用して、前払い資本なしで必要なUSDCを入手し、それによってプール内で人工的に膨らんだポジションを作成しました。

2. 担保計算の操作

USDCを預入した後、攻撃者はstETHトークンを借りました。プロトコルは、プール内のトークン残高に基づいてユーザーの担保価値を計算します。しかし、実装上の欠陥により、ヘルスファクターチェック中に実際に転送された金額ではなく、プール契約内の現在のトークン残高を使用して残高が計算されました。この不一致により、プールの流動性が高い場合を特に除き、ユーザーのトークン残高が実際よりもかなり高く見えました。

この操作のルートは、userBalanceOfToken 関数にあります。プールにかなりの流動性があるシナリオでは、この関数は、貸し出しシェアがわずかに残っている場合でも、高いlendBalanceを返すことができます。このようにユーザーの残高を過大評価することで、攻撃者は実際に所有しているよりも多くの担保を持っているという錯覚に陥りました。その結果、攻撃者は実際の担保に基づいて、正当な権利を超えてstETHトークンを借りることができます。

3. ベースアセットの償還

インフレーションした担保価値で、攻撃者はUSDCとstETHを引き出しました。redeemUnderlying関数が呼び出され、ユーザーの預金に関連するLPトークンが焼却されました。しかし、トークンの転送の前に行われる欠陥のヘルスファクターチェックのため、システムはユーザーが必要な以上に引き出すための十分な担保を持っていると信じていました。この欠陥により、攻撃者は必要な担保を維持せずに60 stETHトークンを引き出し、これらのトークンを無料で獲得することができました。

攻撃はどのようにして防ぐことができたのか

攻撃を防ぐために、UniLendはredeemUnderlying関数内の操作を再配置する必要があります。ユーザーにトークンを転送した後にヘルスファクターチェックを実行することで、プロトコルはユーザーの実際のトークン残高が担保状況を正確に反映することを保証します。

ブロックチェーンのセキュリティはオプションではありません。Three Sigmaは、ブロックチェーン監査、スマートコントラクトの脆弱性評価、およびWeb3セキュリティにおける信頼できるセキュリティパートナーであり、スマートコントラクトとDeFiプロトコルを保護します。

クリックしてください今日あなたのスマートコントラクトの監査を受けましょう.

結果

UniLendの脆弱性が、UniLendプールから約$200,000の大きな財務損失をもたらしました。この重大な損失は、プラットフォームの準備金に直接影響を与え、他のユーザー向けの利用可能な流動性を減少させ、進行中の貸出しや借入れ活動に影響を与える可能性があります。

UniLendプロトコルの応答

UniLendは、攻撃の後、すぐに脆弱性に対処し、ユーザーベースに安心感を与えるための措置を取りました。

資金の安全な返却を行った責任者に対して、20%の報酬が発表されました。

アドレス

攻撃トランザクション:

Exploiter Address:

UnilendV2Coreアドレス:

免責事項:

  1. この記事は[から転載されました。X]. すべての著作権は元の著者に帰属します [@threesigmaxyz]. この転載に異議がある場合は、お問い合わせください。ゲートラーンチームはそれを迅速に処理します。
  2. 免責事項:本記事に表明されている見解や意見は著者個人のものであり、投資助言を提供するものではありません。
  3. Gate Learnチームは、記事の翻訳を他の言語に行っています。特に言及がない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。

20万ドルのUniLendハック:何が間違っていたのか、そしてDeFiはどのように改善できるのか

中級1/22/2025, 4:23:33 PM
UniLendは脆弱性のために悪用され、約200Kドル(TVLの4%)が盗まれました。攻撃者はフラッシュローンを使用して6,000万USDCを入金し、担保計算を操作し、ヘルスチェックプロセスの契約バグを悪用して担保価値を水増しし、60stETHを引き出しました。この欠陥は、userBalanceOfToken 関数の実装の誤りに起因します。UniLendはその後、問題を修正し、V2預金を一時停止し、資金を回収するための報奨金を提供しました。この事件は、DeFiプラットフォームのセキュリティの重要性と、徹底的なスマートコントラクト監査の必要性を浮き彫りにしています。

UniLendの紹介

@UniLend_Financeは、スマートコントラクトを通じて貸借サービスを提供する許可されていない分散型マネーマーケットプロトコルです。

UniLendは、担保としてオーバーコラテラル化された暗号通貨を質入れすることで、ユーザーが自分の暗号通貨を利用できるようにします。これにより、貸し手がブロックごとに支払われる年間複利率(APY)を受け取りながら、借り手が借りた暗号通貨に対して利息を支払う安全な貸出環境が作成されます。

UniLendの運営方法

UniLendプロトコルV2は、3つの主要な技術コンポーネントを介して機能します:

1.デュアルアセットプールモデル

UniLendは、各ERC20/ERC20互換ペアに対して分離されたデュアルアセットプールを利用しています。この設計により、1つのアセットのパフォーマンスやボラティリティが他のものに影響を与えないようにし、セキュリティと安定性を向上させています。このアーキテクチャにより、どのユーザーでも複数のブロックチェーン上のさまざまなアセットに対するレンディングや借入れプールを作成および管理できます。

2.供給と借入

  • 供給: ユーザーは指定されたプールにERC20トークンを預け入れ、自分のユニークな流動性ポジションを表す非代替可能トークン(NFT)を受け取ります。これらのNFTは供給された資産の詳細を保存し、必要に応じて転送または償還することができます。供給された資産は、プールの利用率と市場の需要に基づいて可変利子を獲得します。
  • 借り入れ:ユーザーはオーバーコラテラル化された暗号通貨を提供する必要があります。プロトコルは担保比率を強制し、ガバナンスを通じて調整可能です。借り入れた金額はブロックごとに利息が発生し、プールの利用率によって決定されます。これにより、ローンは適切に保証されたままになります。

3.利率モデル

UniLendは、プールの利用率(U)に基づいた動的な金利モデルを採用しています。計算方法は次のとおりです:

Ux=BorrowxBorrowx+Cashx

借入利率:

借入金利x = 10% + (Ux×30%)

需要と供給を調整するために、利用率が高くなると料金が上昇します。

  • 供給利率:

供給利子率x=借入利子率x×Ux×(1−S)

これにより、プロトコルが利益を上げ続ける一方で、サプライヤーが持続可能なリターンを得ることが保証されます。

これらのコンポーネントは、セキュアで効率的でスケーラブルな分散型マネーマーケットを作成するために連携しています。

攻撃分析

2025年1月12日、UniLendプロトコルのセキュリティ脆弱性が悪用され、UniLendプールから約20万ドルの損失が発生しました。攻撃者は担保計算を操作し、ユーザーの健全性ファクターを誤って評価しました。この欠陥により、攻撃者は適切な担保に裏付けられていない60 stETHトークンを引き出すことができました。

盗まれた資産には、プロトコルのユーザートークン残高の計算ミスを利用した60個のstETHトークンが含まれていました。

攻撃の詳細な分析

1. 利用の初期化

攻撃者はフラッシュローンを利用して大量のUSDCをUniLendプールに預けることにより、攻撃を開始しました。具体的には、彼らは6000万USDCを預け、プール内の担保を著しく膨らませました。

フラッシュローンを利用すると、担保を提供せずに大量の資産を借りることができます。借りた金額を同じ取引内で返済する必要があります。

攻撃者はこのメカニズムを利用して、前払い資本なしで必要なUSDCを入手し、それによってプール内で人工的に膨らんだポジションを作成しました。

2. 担保計算の操作

USDCを預入した後、攻撃者はstETHトークンを借りました。プロトコルは、プール内のトークン残高に基づいてユーザーの担保価値を計算します。しかし、実装上の欠陥により、ヘルスファクターチェック中に実際に転送された金額ではなく、プール契約内の現在のトークン残高を使用して残高が計算されました。この不一致により、プールの流動性が高い場合を特に除き、ユーザーのトークン残高が実際よりもかなり高く見えました。

この操作のルートは、userBalanceOfToken 関数にあります。プールにかなりの流動性があるシナリオでは、この関数は、貸し出しシェアがわずかに残っている場合でも、高いlendBalanceを返すことができます。このようにユーザーの残高を過大評価することで、攻撃者は実際に所有しているよりも多くの担保を持っているという錯覚に陥りました。その結果、攻撃者は実際の担保に基づいて、正当な権利を超えてstETHトークンを借りることができます。

3. ベースアセットの償還

インフレーションした担保価値で、攻撃者はUSDCとstETHを引き出しました。redeemUnderlying関数が呼び出され、ユーザーの預金に関連するLPトークンが焼却されました。しかし、トークンの転送の前に行われる欠陥のヘルスファクターチェックのため、システムはユーザーが必要な以上に引き出すための十分な担保を持っていると信じていました。この欠陥により、攻撃者は必要な担保を維持せずに60 stETHトークンを引き出し、これらのトークンを無料で獲得することができました。

攻撃はどのようにして防ぐことができたのか

攻撃を防ぐために、UniLendはredeemUnderlying関数内の操作を再配置する必要があります。ユーザーにトークンを転送した後にヘルスファクターチェックを実行することで、プロトコルはユーザーの実際のトークン残高が担保状況を正確に反映することを保証します。

ブロックチェーンのセキュリティはオプションではありません。Three Sigmaは、ブロックチェーン監査、スマートコントラクトの脆弱性評価、およびWeb3セキュリティにおける信頼できるセキュリティパートナーであり、スマートコントラクトとDeFiプロトコルを保護します。

クリックしてください今日あなたのスマートコントラクトの監査を受けましょう.

結果

UniLendの脆弱性が、UniLendプールから約$200,000の大きな財務損失をもたらしました。この重大な損失は、プラットフォームの準備金に直接影響を与え、他のユーザー向けの利用可能な流動性を減少させ、進行中の貸出しや借入れ活動に影響を与える可能性があります。

UniLendプロトコルの応答

UniLendは、攻撃の後、すぐに脆弱性に対処し、ユーザーベースに安心感を与えるための措置を取りました。

資金の安全な返却を行った責任者に対して、20%の報酬が発表されました。

アドレス

攻撃トランザクション:

Exploiter Address:

UnilendV2Coreアドレス:

免責事項:

  1. この記事は[から転載されました。X]. すべての著作権は元の著者に帰属します [@threesigmaxyz]. この転載に異議がある場合は、お問い合わせください。ゲートラーンチームはそれを迅速に処理します。
  2. 免責事項:本記事に表明されている見解や意見は著者個人のものであり、投資助言を提供するものではありません。
  3. Gate Learnチームは、記事の翻訳を他の言語に行っています。特に言及がない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!