# DeFiセキュリティの脆弱性と注意事項最近、安全の専門家がコミュニティに分散型金融のセキュリティコースを共有しました。この専門家は、過去1年間にWeb3業界が遭遇した重大なセキュリティ事件を振り返り、これらの事件の原因や回避方法について探討し、一般的なスマートコントラクトのセキュリティ脆弱性と予防策をまとめ、プロジェクト側とユーザーにいくつかのセキュリティ提案をしました。一般的な分散型金融の脆弱性のタイプには、フラッシュローン、価格操作、関数権限の問題、任意の外部呼び出し、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などが含まれます。本記事では、フラッシュローン、価格操作、再入攻撃の3つのタイプに重点を置いています。! [Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止](https://img-cdn.gateio.im/social/moments-cf2aa755426b31e8f21cbb05cc1fe39a)## フラッシュローンフラッシュローンは分散型金融の一つの革新ですが、ハッカーによって攻撃に利用されることもあります。攻撃者はフラッシュローンを通じて大量の資金を借り出し、価格を操作したり、ビジネスロジックに攻撃を仕掛けたりします。開発者は、契約の機能が巨額の資金によって異常を引き起こすか、または不当な報酬を得るために利用されるかを考慮する必要があります。多くの分散型金融プロジェクトは、コードや論理の問題により、フラッシュローン攻撃を受けやすい。例えば、あるプロジェクトは固定時間に保有量に基づいて報酬を支給するが、攻撃者がフラッシュローンを利用して大量のトークンを購入し、大部分の報酬を獲得することがある。また、別のプロジェクトはトークンを使って価格を計算するため、フラッシュローンに影響される可能性もある。プロジェクト側はこれらの問題に対して警戒を保つべきである。## 価格操作価格操作問題はフラッシュローンと密接に関連しており、主に2つのケースがあります:1. 価格を計算する際に第三者のデータを使用しますが、使用方法が不適切またはチェックが欠けているため、価格が悪意を持って操作される可能性があります。2. 特定のアドレスのトークン数量を計算変数として使用し、これらのアドレスのトークン残高は一時的に増減可能です。## リエントランシー攻撃外部契約を呼び出す主なリスクは、それらが制御フローを引き継ぎ、データを予期せぬ変更を加える可能性があることです。例えば:ソリディティマッピング (address => uint) private userBalances;関数 withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; 成功(bool、) = msg.sender.call.value(amountToWithdraw)("" ); require(success); userBalances[msg.sender] = 0;}ユーザーの残高は関数の最後まで0に設定されないため、繰り返し呼び出しても成功し、残高を何度も引き出すことができます。再入攻撃の形式は多様で、単一のコントラクトの異なる関数や複数のコントラクトの関数が関与する可能性があります。再入問題を解決する際には注意が必要です:1. 単一の関数の再入を防ぐだけではない2. Checks-Effects-Interactionsパターンのコーディングに従います3.実績のあるアンチリエントランシーモディファイアを使用する成熟したセキュリティプラクティスを使用し、無駄な努力を避けることをお勧めします。独自に開発された新しいソリューションは十分に検証されておらず、問題が発生する確率が高くなります。## セキュリティの推奨事項### プロジェクト側の安全提案1. 最良のセキュリティ慣行に従って契約開発を行う2. コントラクトのアップグレードと一時停止機能を実現する3. タイムロック機構を採用する4. セキュリティ投資を増やし、完璧なセキュリティシステムを構築する5. すべての従業員のセキュリティ意識を高める6. 内部の悪行を防ぎ、効率を向上させると同時にリスク管理を強化する7. 第三者依存関係の導入には慎重であり、デフォルトでは上下流は安全ではない### ユーザーはどのようにスマートコントラクトの安全性を判断しますか1. コントラクトはオープンソースですか2. Ownerは分散型のマルチシグを採用していますか?3.契約の既存の取引を確認します4. コントラクトはアップグレード可能ですか?タイムロックはありますか?5. 複数の機関による監査を受け入れていますか?オーナー権限は過大ですか?6. オラクルの信頼性に注意する総じて、プロジェクト側とユーザーは安全意識を高め、分散型金融の安全リスクを低減するための必要な措置を講じるべきです。
DeFiの3つの主要なセキュリティリスク(フラッシュローン、価格操作、リエントランシー攻撃)の分析
DeFiセキュリティの脆弱性と注意事項
最近、安全の専門家がコミュニティに分散型金融のセキュリティコースを共有しました。この専門家は、過去1年間にWeb3業界が遭遇した重大なセキュリティ事件を振り返り、これらの事件の原因や回避方法について探討し、一般的なスマートコントラクトのセキュリティ脆弱性と予防策をまとめ、プロジェクト側とユーザーにいくつかのセキュリティ提案をしました。
一般的な分散型金融の脆弱性のタイプには、フラッシュローン、価格操作、関数権限の問題、任意の外部呼び出し、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などが含まれます。本記事では、フラッシュローン、価格操作、再入攻撃の3つのタイプに重点を置いています。
! Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止
フラッシュローン
フラッシュローンは分散型金融の一つの革新ですが、ハッカーによって攻撃に利用されることもあります。攻撃者はフラッシュローンを通じて大量の資金を借り出し、価格を操作したり、ビジネスロジックに攻撃を仕掛けたりします。開発者は、契約の機能が巨額の資金によって異常を引き起こすか、または不当な報酬を得るために利用されるかを考慮する必要があります。
多くの分散型金融プロジェクトは、コードや論理の問題により、フラッシュローン攻撃を受けやすい。例えば、あるプロジェクトは固定時間に保有量に基づいて報酬を支給するが、攻撃者がフラッシュローンを利用して大量のトークンを購入し、大部分の報酬を獲得することがある。また、別のプロジェクトはトークンを使って価格を計算するため、フラッシュローンに影響される可能性もある。プロジェクト側はこれらの問題に対して警戒を保つべきである。
価格操作
価格操作問題はフラッシュローンと密接に関連しており、主に2つのケースがあります:
価格を計算する際に第三者のデータを使用しますが、使用方法が不適切またはチェックが欠けているため、価格が悪意を持って操作される可能性があります。
特定のアドレスのトークン数量を計算変数として使用し、これらのアドレスのトークン残高は一時的に増減可能です。
リエントランシー攻撃
外部契約を呼び出す主なリスクは、それらが制御フローを引き継ぎ、データを予期せぬ変更を加える可能性があることです。例えば:
ソリディティ マッピング (address => uint) private userBalances;
関数 withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; 成功(bool、) = msg.sender.call.value(amountToWithdraw)("" ); require(success); userBalances[msg.sender] = 0; }
ユーザーの残高は関数の最後まで0に設定されないため、繰り返し呼び出しても成功し、残高を何度も引き出すことができます。
再入攻撃の形式は多様で、単一のコントラクトの異なる関数や複数のコントラクトの関数が関与する可能性があります。再入問題を解決する際には注意が必要です:
成熟したセキュリティプラクティスを使用し、無駄な努力を避けることをお勧めします。独自に開発された新しいソリューションは十分に検証されておらず、問題が発生する確率が高くなります。
セキュリティの推奨事項
プロジェクト側の安全提案
ユーザーはどのようにスマートコントラクトの安全性を判断しますか
総じて、プロジェクト側とユーザーは安全意識を高め、分散型金融の安全リスクを低減するための必要な措置を講じるべきです。