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