# 分散型金融常見のセキュリティ脆弱性と予防策最近、あるセキュリティ専門家がコミュニティメンバーに対して分散型金融のセキュリティ講座を共有し、過去1年以上にわたってWeb3業界が直面した重大なセキュリティ事件を振り返り、これらの事件が発生した理由や回避方法について議論しました。また、一般的なスマートコントラクトのセキュリティ脆弱性や予防策をまとめ、プロジェクト側とユーザーにいくつかのセキュリティアドバイスを提供しました。一般的な分散型金融の脆弱性のタイプには、フラッシュローン、価格操作、関数権限の問題、任意の外部呼び出し、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などがあります。以下では、フラッシュローン、価格操作、そして再入攻撃の3つのタイプについて重点的に説明します。## フラッシュローンフラッシュローンは分散型金融の一種の革新ですが、ハッカーに利用されることもよくあります:- 攻撃者はフラッシュローンを通じて大量の資金を借り出し、価格を操作したりビジネスロジックを攻撃したりします。- 開発者は、契約機能が巨額の資金によって異常を引き起こすか、または不当な報酬を得るために悪用されるかどうかを考慮する必要があります。- 一部のプロジェクトは機能設計の際にフラッシュローンの影響を考慮しておらず、資金が盗まれました。過去2年間、多くの分散型金融プロジェクトはフラッシュローンの影響で問題が発生しました。例えば、一部のプロジェクトは保有量に基づいて報酬を配布しますが、攻撃者がフラッシュローンを利用して大量のトークンを購入し、大部分の報酬を獲得することがありました。また、トークンで価格を計算するプロジェクトは、フラッシュローンによって価格が影響を受ける可能性があります。プロジェクト側はこれに対して警戒を強めるべきです。## 価格操作価格操作問題はフラッシュローンと密接に関連しており、主に2種類があります:1. 価格を計算する際に第三者のデータを使用するが、使用方法が不適切またはチェックが不足しているため、価格が悪意を持って操作される。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セキュリティ脆弱性分析:フラッシュローン、価格操作、リエントランシー攻撃を防ぐためのガイド
分散型金融常見のセキュリティ脆弱性と予防策
最近、あるセキュリティ専門家がコミュニティメンバーに対して分散型金融のセキュリティ講座を共有し、過去1年以上にわたってWeb3業界が直面した重大なセキュリティ事件を振り返り、これらの事件が発生した理由や回避方法について議論しました。また、一般的なスマートコントラクトのセキュリティ脆弱性や予防策をまとめ、プロジェクト側とユーザーにいくつかのセキュリティアドバイスを提供しました。
一般的な分散型金融の脆弱性のタイプには、フラッシュローン、価格操作、関数権限の問題、任意の外部呼び出し、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などがあります。以下では、フラッシュローン、価格操作、そして再入攻撃の3つのタイプについて重点的に説明します。
フラッシュローン
フラッシュローンは分散型金融の一種の革新ですが、ハッカーに利用されることもよくあります:
過去2年間、多くの分散型金融プロジェクトはフラッシュローンの影響で問題が発生しました。例えば、一部のプロジェクトは保有量に基づいて報酬を配布しますが、攻撃者がフラッシュローンを利用して大量のトークンを購入し、大部分の報酬を獲得することがありました。また、トークンで価格を計算するプロジェクトは、フラッシュローンによって価格が影響を受ける可能性があります。プロジェクト側はこれに対して警戒を強めるべきです。
価格操作
価格操作問題はフラッシュローンと密接に関連しており、主に2種類があります:
リエントランシー攻撃
外部コントラクトを呼び出す主なリスクは、それらが制御フローを引き継ぎ、データに予期しない変更を加える可能性があることです。
例えば、引き出し関数では、ユーザーの残高が関数の最後でゼロになる場合、攻撃者は資金が転送された後に再びその関数を呼び出し、繰り返し引き出しを行うことができます。
再入攻撃の形式は多様で、複数の関数やコントラクトが関与する可能性があります。再入を防ぐためには注意が必要です:
セキュリティ専門家は、既存のベストプラクティスを使用すべきであり、独自に新しいものを作るべきではないと提案しています。なぜなら、自分で構築した新しいソリューションは十分な検証がなされておらず、問題が発生する確率は成熟したソリューションよりもはるかに高いためです。
プロジェクトチームの安全に関する提案
ユーザーはどのようにスマートコントラクトの安全性を判断するか
つまり、分散型金融の分野では、プロジェクトの関係者とユーザーは常に高い警戒を保ち、複数のセキュリティ対策を講じる必要があり、リスクを効果的に低減することができる。
! Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止