# 一般的なDeFiセキュリティの脆弱性と注意事項最近、あるセキュリティ専門家がコミュニティメンバーに向けて分散型金融のセキュリティ講座を共有しました。彼は過去1年以上のWeb3業界での重大なセキュリティ事件を振り返り、これらの事件が発生した理由や回避方法を探求し、一般的なスマートコントラクトのセキュリティ脆弱性や予防策をまとめ、プロジェクトチームや一般ユーザーに対していくつかのセキュリティ提案を行いました。一般的な分散型金融の脆弱性の種類には、フラッシュローン、価格操作、関数権限の問題、任意の外部呼び出し、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などがあります。以下では、フラッシュローン、価格操作、再入攻撃の3つのタイプを重点的に紹介します。! [Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止](https://img-cdn.gateio.im/social/moments-cf2aa755426b31e8f21cbb05cc1fe39a)## フラッシュローンフラッシュローン自体は分散型金融の一つの革新ですが、ハッカーに利用されると大きな損失を引き起こす可能性があります:- 攻撃者はフラッシュローンを通じて大量の資金を借り出し、価格を操作し、ビジネスロジックに攻撃を仕掛けます。- 開発者は契約機能が巨額の資金によって異常を引き起こすか、または不当な利益を得るために利用される可能性について考慮する必要があります。- 一部のプロジェクトは機能設計の際にフラッシュローンの影響を考慮しておらず、資金が盗まれました。過去2年間、多くのフラッシュローンに関連する問題が発生しました。一部のプロジェクトは高い利益を得られるように見えますが、実際には論理的な欠陥が存在します。例えば:- 固定された時間にポジション量に基づいて報酬を分配し、フラッシュローンを利用して大量の報酬を得ることができる。- トークンで価格を計算するプロジェクトは、フラッシュローンによって価格に影響を受ける可能性があります。プロジェクトチームはこれらの問題に対して警戒を強めるべきです。## 価格操作価格操作の問題はフラッシュローンと密接に関連しており、主に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. 複数の機関による監査を受け入れているか、Owner権限が過大ではないかを確認する。6. オラクルの信頼性に注意してくださいつまり、DeFi分散型金融の分野では、プロジェクト関係者も一般ユーザーも、安全意識を高め、必要な安全対策を講じてリスクを低減し、資産の安全を守る必要があります。
分散型金融常見のセキュリティ脆弱性の解析:フラッシュローン、価格操作と再入攻撃の防止
一般的なDeFiセキュリティの脆弱性と注意事項
最近、あるセキュリティ専門家がコミュニティメンバーに向けて分散型金融のセキュリティ講座を共有しました。彼は過去1年以上のWeb3業界での重大なセキュリティ事件を振り返り、これらの事件が発生した理由や回避方法を探求し、一般的なスマートコントラクトのセキュリティ脆弱性や予防策をまとめ、プロジェクトチームや一般ユーザーに対していくつかのセキュリティ提案を行いました。
一般的な分散型金融の脆弱性の種類には、フラッシュローン、価格操作、関数権限の問題、任意の外部呼び出し、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などがあります。以下では、フラッシュローン、価格操作、再入攻撃の3つのタイプを重点的に紹介します。
! Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止
フラッシュローン
フラッシュローン自体は分散型金融の一つの革新ですが、ハッカーに利用されると大きな損失を引き起こす可能性があります:
過去2年間、多くのフラッシュローンに関連する問題が発生しました。一部のプロジェクトは高い利益を得られるように見えますが、実際には論理的な欠陥が存在します。例えば:
プロジェクトチームはこれらの問題に対して警戒を強めるべきです。
価格操作
価格操作の問題はフラッシュローンと密接に関連しており、主に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に設定されないため、繰り返し呼び出すことで残高を何度も引き出すことができます。
リエントランシーの問題を解決するには、次の点に注意する必要があります。
成熟した最良のセキュリティプラクティスを使用し、無駄な努力を避けることをお勧めします。
セキュリティ提案
プロジェクトチームへの提案:
ユーザーはどのようにスマートコントラクトの安全性を判断するか:
つまり、DeFi分散型金融の分野では、プロジェクト関係者も一般ユーザーも、安全意識を高め、必要な安全対策を講じてリスクを低減し、資産の安全を守る必要があります。