This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
分散型金融のセキュリティ脆弱性解析 フラッシュローンの価格操作再入攻撃防止策の詳細解説
DeFiセキュリティレッスン:一般的な脆弱性と注意事項
最近、あるセキュリティ専門家がコミュニティメンバーのために分散型金融のセキュリティコースを共有し、過去一年以上のWeb3業界で発生した重大なセキュリティ事件を振り返り、これらの事件が発生した理由や回避方法を探り、一般的なスマートコントラクトのセキュリティ脆弱性と予防策をまとめ、プロジェクト側と一般ユーザーにいくつかのセキュリティ提案を行いました。
一般的な分散型金融の脆弱性のタイプには、フラッシュローン、価格操作、関数権限の問題、任意の外部呼び出し、フォールバック関数の問題、ビジネスロジックの脆弱性、秘密鍵の漏洩、再入攻撃などがあります。以下では、フラッシュローン、価格操作、および再入攻撃の3つのタイプについて重点的に紹介します。
! Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止
フラッシュローン
フラッシュローンはDeFiの一種の革新ですが、ハッカーが利用すると、彼らは費用をかけずに大量の資金を借り、アービトラージを実行して返済することができ、わずかなガス料金を支払うだけで巨額の利益を得ることができます。
過去2年間、フラッシュローンは多くのセキュリティ問題を引き起こしました。一部の分散型金融プロジェクトは高い利益を得られるように見えますが、プロジェクトチームのレベルはまちまちです。たとえコード自体に脆弱性がなくても、論理的に問題が存在する可能性があります。例えば、特定の時間に保有量に基づいて報酬を配布するプロジェクトがあり、攻撃者がフラッシュローンを利用して大量のトークンを購入し、報酬が配布される際に大部分の報酬を得ることがあります。また、トークンで価格を計算するプロジェクトもあり、フラッシュローンを通じて価格に影響を与えることができます。プロジェクトチームはこれらの問題に対して警戒を強めるべきです。
価格操作
価格操作の問題はフラッシュローンと密接に関連しており、主に価格計算時に特定のパラメータがユーザーによって制御可能であるためです。一般的な問題のタイプは二つあります:
価格を計算する際に第三者のデータを使用するが、使用方法が不適切またはチェックが不足しているため、価格が悪意を持って操作される。
特定のアドレスのトークン残高を計算変数として使用し、これらのアドレスのトークン数は一時的に増減することができます。
リエントランシー攻撃
外部コントラクトを呼び出す主なリスクの一つは、それらが制御フローを引き継ぎ、データに想定外の変更を加える可能性があることです。
異なる契約に対して、再入攻撃の方法は多様であり、複数の関数や契約が関与する可能性があります。再入問題を解決する際には注意が必要です:
単一の関数の再入問題を防ぐだけではない
Checks-Effects-Interactionsパターンのコーディングに従います
3.実績のあるアンチリエントランシーモディファイアを使用する
成熟したセキュリティプラクティスを使用する方が、輪を再発明するよりも良い。自社開発の新しいソリューションは十分に検証されておらず、問題が発生する確率は十分に検証された成熟したソリューションを使用するよりもはるかに高い。
セキュリティの提案
プロジェクトチームの安全に関する提案
コントラクト開発は最良のセキュリティプラクティスに従います。
コントラクトはアップグレード可能で、一時停止可能です: 攻撃による損失を迅速に発見し、軽減するのに役立ちます。
タイムロックを採用: 監視と対応のための時間のウィンドウを提供する。
セキュリティへの投資を増やし、完璧なセキュリティシステムを構築する: セキュリティは体系的な作業であり、契約監査にのみ依存することはできません。
すべての従業員の安全意識を高める: より多く考え、より注意を払うことで多くのリスクを回避できます。
内部の悪行を防ぎ、効率を向上させると同時にリスク管理を強化する: 例えば、マルチシグや権限の制限などを採用する。
第三者を慎重に導入する: 上流と下流を検証し、オープンソースでない契約は引用しない。
ユーザーが契約の安全性を判断する方法
契約がオープンソースであることを確認する
Ownerが分散型のマルチシグを採用しているか確認する
契約の既存の取引を確認する
契約がアップグレード可能か、タイムロックがあるかを確認する
契約が複数の機関によって監査されたか、オーナーの権限が過剰でないかに注意してください
オラクルの信頼性に注意する
つまり、DeFi分散型金融領域において参加者は安全意識を高めるべきであり、プロジェクト側は安全システムを整備し、ユーザーはプロジェクトの安全性を慎重に評価する必要があります。各方面が共同で努力することで、より安全なDeFiエコシステムを構築できるのです。