# 一般的なDeFiセキュリティの脆弱性と注意事項最近、安全専門家がDeFiの安全性に関する講義を共有し、Web3業界が最近遭遇した重大なセキュリティ事件について探求し、これらの事件が発生した理由と回避方法を分析し、スマートコントラクトにおける一般的なセキュリティ脆弱性と予防策をまとめました。本記事では、フラッシュローン、価格操作、再入攻撃という3つの一般的な脆弱性タイプに重点を置いて紹介します。! [Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止](https://img-cdn.gateio.im/social/moments-cf2aa755426b31e8f21cbb05cc1fe39a)## フラッシュローンフラッシュローン自体は分散型金融の一つの革新ですが、ハッカーによって攻撃に利用されることがよくあります:- 攻撃者はフラッシュローンを通じて大量の資金を借り出し、価格を操作したりビジネスロジックを攻撃したりします。- 開発者は、契約の機能が巨額の資金によって異常になるか、または1回の取引で過剰な報酬を得るために使用されるかどうかを考慮する必要があります。- よくある質問: トークンの数量を使って報酬を計算するか、DEX取引ペアのトークン数量を使って計算に参加する過去2年間、多くの問題が発生しました。一部の分散型金融プロジェクトは高い利益を得られるように見えますが、実際には開発レベルがまちまちです。例えば、あるプロジェクトは固定された時間に保有量に応じて報酬を支給しますが、攻撃者がフラッシュローンを利用して大量のトークンを購入し、ほとんどの報酬を獲得することができます。## 価格操作価格操作はフラッシュローンと密接に関連しており、主に2つの問題があります:1. 価格を計算する際に第三者のデータを使用しますが、使用方法が不適切であるか、チェックが不足しています。2. 特定のアドレスのトークン残高を計算変数として使用し、これらの残高は一時的に増減することができます。## リエントランシー攻撃外部契約を呼び出す主なリスクは、制御フローを引き継ぎ、データを予期しない形で変更する可能性があることです。リエントランシー攻撃の典型的な例を次に示します。ソリディティマッピング (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の3つの主要なセキュリティリスク:フラッシュローン、価格操作、リエントランシー攻撃
一般的なDeFiセキュリティの脆弱性と注意事項
最近、安全専門家がDeFiの安全性に関する講義を共有し、Web3業界が最近遭遇した重大なセキュリティ事件について探求し、これらの事件が発生した理由と回避方法を分析し、スマートコントラクトにおける一般的なセキュリティ脆弱性と予防策をまとめました。本記事では、フラッシュローン、価格操作、再入攻撃という3つの一般的な脆弱性タイプに重点を置いて紹介します。
! Cobo DeFiセキュリティセクション(パートII):D eFiの一般的なセキュリティの脆弱性と防止
フラッシュローン
フラッシュローン自体は分散型金融の一つの革新ですが、ハッカーによって攻撃に利用されることがよくあります:
過去2年間、多くの問題が発生しました。一部の分散型金融プロジェクトは高い利益を得られるように見えますが、実際には開発レベルがまちまちです。例えば、あるプロジェクトは固定された時間に保有量に応じて報酬を支給しますが、攻撃者がフラッシュローンを利用して大量のトークンを購入し、ほとんどの報酬を獲得することができます。
価格操作
価格操作はフラッシュローンと密接に関連しており、主に2つの問題があります:
リエントランシー攻撃
外部契約を呼び出す主なリスクは、制御フローを引き継ぎ、データを予期しない形で変更する可能性があることです。
リエントランシー攻撃の典型的な例を次に示します。 ソリディティ マッピング (address => uint) private userBalances;
関数 withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; 成功(bool、) = msg.sender.call.value(amountToWithdraw)("" ); require(success); userBalances[msg.sender] = 0; }
ユーザーの残高は関数の最後までゼロにならないため、繰り返し呼び出すことで何度も引き出すことができます。
リエントランシーの問題を解決するには、次の点に注意する必要があります。
成熟したセキュリティプラクティスを使用し、無駄な繰り返しを避けることをお勧めします。
プロジェクトの安全に関する提案
ユーザーはどのようにスマートコントラクトの安全性を判断するか
総じて、分散型金融の分野において安全性は極めて重要です。プロジェクト側は全方位で安全システムを構築すべきであり、ユーザーも警戒を高め、慎重に参加する必要があります。