# 一般的なDeFiセキュリティの脆弱性と注意事項最近、あるセキュリティ専門家がコミュニティメンバーのために分散型金融のセキュリティ講座を共有しました。専門家は、過去1年余りのWeb3業界で発生した重大なセキュリティ事件を振り返り、これらの事件が発生した原因と回避方法を探り、一般的なスマートコントラクトのセキュリティ脆弱性と予防策をまとめ、プロジェクト側と一般ユーザーにいくつかのセキュリティアドバイスを提供しました。一般的な分散型金融の脆弱性には、フラッシュローン、価格操縦、関数の権限問題、任意の外部コール、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などがあります。以下では、フラッシュローン、価格操縦、再入攻撃の3種類について重点的に紹介します。! [Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止](https://img-cdn.gateio.im/social/moments-cf2aa755426b31e8f21cbb05cc1fe39a)## フラッシュローンフラッシュローン自体は分散型金融の一種の革新ですが、ハッカーによって利用されると無料でお金を借りてアービトラージを行うことができます。多くの分散型金融プロジェクトは高い利益を上げているように見えますが、プロジェクトチームのレベルはまちまちで、コード自体に脆弱性がなくても、論理的に問題が存在する可能性があります。例えば、あるプロジェクトでは固定の時間に保有者が持っているトークンの数量に応じて報酬を配布しますが、攻撃者はフラッシュローンを利用して大量のトークンを購入し、報酬が配布される際に大部分の報酬を得ることができます。また、トークンを使って価格を計算するプロジェクトもあり、フラッシュローンを通じて価格に影響を与えることができます。プロジェクトチームはこれらの問題に対して警戒を強めるべきです。## 価格操作価格操作の問題はフラッシュローンと密接に関係しており、主に価格計算時に特定のパラメーターがユーザーによって制御されるためです。一般的な問題のタイプは二つあります:1. 価格を計算する際に第三者のデータを使用するが、使用方法が不適切または確認が欠けているため、価格が悪意を持って操作される。2. 特定のアドレスのトークン数を計算変数として使用し、これらのアドレスのトークン残高は一時的に増減することができます。## リエントランシー攻撃外部コントラクトを呼び出す主な危険の一つは、それらが制御フローを引き継ぎ、データに対して予期しない変更を行う可能性があることです。異なるコントラクトに対して、再入の方法は多く存在し、異なる関数や複数のコントラクトの関数を組み合わせて攻撃を行うことができます。再入問題を解決するには注意が必要です:1. 単一の関数の再入問題を防ぐだけではない2. Checks-Effects-Interactionsパターンのコーディングに従います3. 時間的に検証された再入防止モディファイアを使用する最も恐れているのは、同じことを繰り返すことであり、この業界には直接利用できる多くのベストプラクティスがありますので、再度同じことを行う必要はまったくありません。自分で作り出すことは十分に検証されていないため、問題が発生する確率は、成熟した信頼できるソリューションを使用するよりも明らかに高くなります。## プロジェクト側の安全に関する提言1. コントラクト開発はベストセキュリティプラクティスに従います2. コントラクトはアップグレード可能で、一時停止できます。3. タイムロックを採用する4. セキュリティ投資を増やし、完璧なセキュリティシステムを構築する5. すべての従業員のセキュリティ意識を高める6. 内部の悪行を防ぎ、効率を向上させると同時にリスク管理を強化する7. 三者を慎重に導入し、上下流を検証する## ユーザー/LP はどのようにスマートコントラクトの安全性を判断するか1. コントラクトはオープンソースですか2. オーナーはマルチシグを採用していますか?マルチシグは分散化されていますか?3. 契約の既存の取引状況 4. 契約は代理契約ですか、アップグレード可能ですか、タイムロックはありますか5. 契約は複数の機関による監査を受けていますか?Owner権限は過大ですか?6. オラクルの選択と使用に注意する要するに、ユーザーは分散型金融プロジェクトに参加する際は特に注意を払い、プロジェクトの安全性を多角的に評価し、高い利益に目をくらまされてはいけません。プロジェクト側は複数の面から安全対策を構築し、プロジェクトの安全性を継続的に注視し改善する必要があります。
分散型金融のセキュリティ脆弱性の完全解析:フラッシュローン、価格操作および再入攻撃の防止ガイド
一般的なDeFiセキュリティの脆弱性と注意事項
最近、あるセキュリティ専門家がコミュニティメンバーのために分散型金融のセキュリティ講座を共有しました。専門家は、過去1年余りのWeb3業界で発生した重大なセキュリティ事件を振り返り、これらの事件が発生した原因と回避方法を探り、一般的なスマートコントラクトのセキュリティ脆弱性と予防策をまとめ、プロジェクト側と一般ユーザーにいくつかのセキュリティアドバイスを提供しました。
一般的な分散型金融の脆弱性には、フラッシュローン、価格操縦、関数の権限問題、任意の外部コール、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などがあります。以下では、フラッシュローン、価格操縦、再入攻撃の3種類について重点的に紹介します。
! Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止
フラッシュローン
フラッシュローン自体は分散型金融の一種の革新ですが、ハッカーによって利用されると無料でお金を借りてアービトラージを行うことができます。多くの分散型金融プロジェクトは高い利益を上げているように見えますが、プロジェクトチームのレベルはまちまちで、コード自体に脆弱性がなくても、論理的に問題が存在する可能性があります。例えば、あるプロジェクトでは固定の時間に保有者が持っているトークンの数量に応じて報酬を配布しますが、攻撃者はフラッシュローンを利用して大量のトークンを購入し、報酬が配布される際に大部分の報酬を得ることができます。また、トークンを使って価格を計算するプロジェクトもあり、フラッシュローンを通じて価格に影響を与えることができます。プロジェクトチームはこれらの問題に対して警戒を強めるべきです。
価格操作
価格操作の問題はフラッシュローンと密接に関係しており、主に価格計算時に特定のパラメーターがユーザーによって制御されるためです。一般的な問題のタイプは二つあります:
価格を計算する際に第三者のデータを使用するが、使用方法が不適切または確認が欠けているため、価格が悪意を持って操作される。
特定のアドレスのトークン数を計算変数として使用し、これらのアドレスのトークン残高は一時的に増減することができます。
リエントランシー攻撃
外部コントラクトを呼び出す主な危険の一つは、それらが制御フローを引き継ぎ、データに対して予期しない変更を行う可能性があることです。異なるコントラクトに対して、再入の方法は多く存在し、異なる関数や複数のコントラクトの関数を組み合わせて攻撃を行うことができます。再入問題を解決するには注意が必要です:
単一の関数の再入問題を防ぐだけではない
Checks-Effects-Interactionsパターンのコーディングに従います
時間的に検証された再入防止モディファイアを使用する
最も恐れているのは、同じことを繰り返すことであり、この業界には直接利用できる多くのベストプラクティスがありますので、再度同じことを行う必要はまったくありません。自分で作り出すことは十分に検証されていないため、問題が発生する確率は、成熟した信頼できるソリューションを使用するよりも明らかに高くなります。
プロジェクト側の安全に関する提言
コントラクト開発はベストセキュリティプラクティスに従います
コントラクトはアップグレード可能で、一時停止できます。
タイムロックを採用する
セキュリティ投資を増やし、完璧なセキュリティシステムを構築する
すべての従業員のセキュリティ意識を高める
内部の悪行を防ぎ、効率を向上させると同時にリスク管理を強化する
三者を慎重に導入し、上下流を検証する
ユーザー/LP はどのようにスマートコントラクトの安全性を判断するか
コントラクトはオープンソースですか
オーナーはマルチシグを採用していますか?マルチシグは分散化されていますか?
契約の既存の取引状況
契約は代理契約ですか、アップグレード可能ですか、タイムロックはありますか
契約は複数の機関による監査を受けていますか?Owner権限は過大ですか?
オラクルの選択と使用に注意する
要するに、ユーザーは分散型金融プロジェクトに参加する際は特に注意を払い、プロジェクトの安全性を多角的に評価し、高い利益に目をくらまされてはいけません。プロジェクト側は複数の面から安全対策を構築し、プロジェクトの安全性を継続的に注視し改善する必要があります。