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