تحليل الثغرات الأمنية الشائعة في التمويل اللامركزي والإجراءات الوقائية
مؤخراً، شارك أحد خبراء الأمن أفكاره حول أمان التمويل اللامركزي مع أعضاء المجتمع. استعرض الأحداث الأمنية الكبيرة التي واجهتها صناعة Web3 على مدار العام الماضي، وتناول أسباب حدوث هذه الأحداث وكيفية تجنبها، وخلص إلى الثغرات الأمنية الشائعة في العقود الذكية ووسائل الوقاية، وقدم بعض النصائح الأمنية للجهات المعنية والمستخدمين.
تشمل أنواع الثغرات الشائعة في مجال التمويل اللامركزي القروض الفورية، والتلاعب في الأسعار، ومشاكل صلاحيات الدوال، والاستدعاءات الخارجية العشوائية، ومشاكل دالة fallback، وثغرات منطق الأعمال، وتسرب المفاتيح الخاصة، وهجمات إعادة الإدخال. ستركز هذه المقالة على القروض الفورية، والتلاعب في الأسعار، وهجمات إعادة الإدخال.
قرض الفلاش
القروض الفورية هي ابتكار في التمويل اللامركزي، ولكن غالبًا ما يتم استغلالها من قبل المتسللين. يقوم المهاجمون بإقراض كميات كبيرة من الأموال من خلال القروض الفورية، للتلاعب بالأسعار أو مهاجمة منطق العمل. يحتاج المطورون إلى مراعاة ما إذا كانت وظائف العقد ستؤدي إلى استثنائيات بسبب الأموال الضخمة، أو إذا تم استغلالها للتفاعل مع عدة وظائف في صفقة واحدة للحصول على أرباح غير مشروعة.
على مدى العامين الماضيين، أثارت القروض الفورية العديد من المشكلات. بعض مشاريع التمويل اللامركزي التي تبدو ذات عوائد مرتفعة، في الواقع تحتوي على العديد من المخاطر الأمنية. على سبيل المثال، هناك مشاريع تمنح المكافآت بناءً على حجم الحيازة في وقت محدد، وقد استغلها المهاجمون باستخدام القروض الفورية لشراء كميات كبيرة من الرموز للحصول على معظم المكافآت. وهناك أيضًا بعض المشاريع التي تحسب الأسعار بناءً على الرموز، مما يجعلها عرضة لتأثير القروض الفورية على الأسعار.
التحكم في الأسعار
تتعلق مشكلة التلاعب بالأسعار ارتباطًا وثيقًا بالقروض الفورية، وهناك حالتان رئيسيتان:
استخدام بيانات طرف ثالث عند حساب الأسعار، ولكن استخدام الطريقة غير صحيحة أو تفتقر إلى الفحص، مما يؤدي إلى التلاعب بالأسعار بشكل خبيث.
استخدام رصيد الرموز في بعض العناوين كمتغيرات حسابية، حيث يمكن زيادة أو تقليل هذه الأرصدة مؤقتًا.
هجوم إعادة الإدخال
الخطر الرئيسي من استدعاء العقود الخارجية هو أنها قد تستولي على تدفق التحكم وتغير البيانات بشكل غير متوقع. مثال نموذجي لهجوم إعادة الإدخال كما يلي:
صلابة
تعيين (العنوان => uint) الخاص userBalances;
وظيفة withdrawBalance() عامة {
uint amountToWithdraw = userBalances[msg.sender];
(bool النجاح ، ) = msg.sender.call.value(amountToWithdraw)( "" );
require(success).
أرصدة المستخدم[msg.sender] = 0;
}
في هذا المثال، نظرًا لأن رصيد المستخدم يتم تعيينه إلى 0 فقط في نهاية الدالة، يمكن للمهاجم استدعاء دالة السحب عدة مرات في المنتصف، مما يؤدي إلى سحب متكرر.
لحل مشكلة إعادة الدخول، يجب الانتباه إلى النقاط التالية:
لا يمنع فقط إعادة الدخول لوظيفة واحدة، بل يجب أيضًا مراعاة إعادة الدخول عبر الوظائف والعقود.
اتبع نمط Checks-Effects-Interactions في الترميز.
استخدام modifier مضاد لإعادة الدخول تم التحقق منه.
من المهم تجنب إعادة اختراع العجلة، ويجب اعتماد أفضل الممارسات الأمنية المثبتة في الصناعة.
نصائح الأمان لفريق المشروع
اتباع أفضل ممارسات الأمان في تطوير العقود الذكية.
تنفيذ وظائف ترقية العقد وإيقافه.
استخدام آلية قفل الوقت.
زيادة الاستثمار في الأمن، وإنشاء نظام أمني متكامل.
رفع مستوى الوعي الأمني لجميع الموظفين.
منع الأعمال الداخلية الخبيثة، مع تعزيز التحكم في المخاطر أثناء تحسين الكفاءة.
كن حذراً عند إدخال طرف ثالث، واتبع مبدأ "الافتراض أن كل من أعلى وأسفل السلسلة غير آمن".
كيف يمكن للمستخدم تقييم أمان العقود الذكية
تأكد من أن العقد مفتوح المصدر.
تحقق مما إذا كان المالك يستخدم آلية توقيع متعددة لامركزية.
الاطلاع على حالة التداول الحالية للعقد.
معرفة ما إذا كان العقد هو عقد وكيل، وما إذا كان قابلاً للتطوير، وما إذا كان هناك قفل زمني.
تأكد مما إذا كانت العقد قد خضعت لتدقيق من قبل عدة مؤسسات، وقيم ما إذا كانت صلاحيات المالك كبيرة جدًا.
انتبه لنوع الأوراكل المستخدم في المشروع وأمانه.
بشكل عام، في مجال التمويل اللامركزي، تعتبر الأمان دائمًا من أولويات الاعتبار. يجب على المشاريع تعزيز الوعي الأمني والإجراءات بشكل شامل، بينما يحتاج المستخدمون إلى البقاء متيقظين وتقييم أمان المشروع بعناية قبل اتخاذ القرار.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 12
أعجبني
12
3
إعادة النشر
مشاركة
تعليق
0/400
DefiPlaybook
· 08-10 18:09
تشير البيانات الإحصائية إلى أن القروض السريعة لا تزال أكبر مصدر للمخاطر، حيث تصل نسبتها إلى 47.8%
ألم أمان التمويل اللامركزي: تحليل الثغرات الشائعة واستراتيجيات الوقاية
تحليل الثغرات الأمنية الشائعة في التمويل اللامركزي والإجراءات الوقائية
مؤخراً، شارك أحد خبراء الأمن أفكاره حول أمان التمويل اللامركزي مع أعضاء المجتمع. استعرض الأحداث الأمنية الكبيرة التي واجهتها صناعة Web3 على مدار العام الماضي، وتناول أسباب حدوث هذه الأحداث وكيفية تجنبها، وخلص إلى الثغرات الأمنية الشائعة في العقود الذكية ووسائل الوقاية، وقدم بعض النصائح الأمنية للجهات المعنية والمستخدمين.
تشمل أنواع الثغرات الشائعة في مجال التمويل اللامركزي القروض الفورية، والتلاعب في الأسعار، ومشاكل صلاحيات الدوال، والاستدعاءات الخارجية العشوائية، ومشاكل دالة fallback، وثغرات منطق الأعمال، وتسرب المفاتيح الخاصة، وهجمات إعادة الإدخال. ستركز هذه المقالة على القروض الفورية، والتلاعب في الأسعار، وهجمات إعادة الإدخال.
قرض الفلاش
القروض الفورية هي ابتكار في التمويل اللامركزي، ولكن غالبًا ما يتم استغلالها من قبل المتسللين. يقوم المهاجمون بإقراض كميات كبيرة من الأموال من خلال القروض الفورية، للتلاعب بالأسعار أو مهاجمة منطق العمل. يحتاج المطورون إلى مراعاة ما إذا كانت وظائف العقد ستؤدي إلى استثنائيات بسبب الأموال الضخمة، أو إذا تم استغلالها للتفاعل مع عدة وظائف في صفقة واحدة للحصول على أرباح غير مشروعة.
على مدى العامين الماضيين، أثارت القروض الفورية العديد من المشكلات. بعض مشاريع التمويل اللامركزي التي تبدو ذات عوائد مرتفعة، في الواقع تحتوي على العديد من المخاطر الأمنية. على سبيل المثال، هناك مشاريع تمنح المكافآت بناءً على حجم الحيازة في وقت محدد، وقد استغلها المهاجمون باستخدام القروض الفورية لشراء كميات كبيرة من الرموز للحصول على معظم المكافآت. وهناك أيضًا بعض المشاريع التي تحسب الأسعار بناءً على الرموز، مما يجعلها عرضة لتأثير القروض الفورية على الأسعار.
التحكم في الأسعار
تتعلق مشكلة التلاعب بالأسعار ارتباطًا وثيقًا بالقروض الفورية، وهناك حالتان رئيسيتان:
هجوم إعادة الإدخال
الخطر الرئيسي من استدعاء العقود الخارجية هو أنها قد تستولي على تدفق التحكم وتغير البيانات بشكل غير متوقع. مثال نموذجي لهجوم إعادة الإدخال كما يلي:
صلابة تعيين (العنوان => uint) الخاص userBalances;
وظيفة withdrawBalance() عامة { uint amountToWithdraw = userBalances[msg.sender]; (bool النجاح ، ) = msg.sender.call.value(amountToWithdraw)( "" ); require(success). أرصدة المستخدم[msg.sender] = 0; }
في هذا المثال، نظرًا لأن رصيد المستخدم يتم تعيينه إلى 0 فقط في نهاية الدالة، يمكن للمهاجم استدعاء دالة السحب عدة مرات في المنتصف، مما يؤدي إلى سحب متكرر.
لحل مشكلة إعادة الدخول، يجب الانتباه إلى النقاط التالية:
من المهم تجنب إعادة اختراع العجلة، ويجب اعتماد أفضل الممارسات الأمنية المثبتة في الصناعة.
نصائح الأمان لفريق المشروع
كيف يمكن للمستخدم تقييم أمان العقود الذكية
بشكل عام، في مجال التمويل اللامركزي، تعتبر الأمان دائمًا من أولويات الاعتبار. يجب على المشاريع تعزيز الوعي الأمني والإجراءات بشكل شامل، بينما يحتاج المستخدمون إلى البقاء متيقظين وتقييم أمان المشروع بعناية قبل اتخاذ القرار.
! قسم أمان Cobo DeFi (الجزء الثاني) :D الثغرات الأمنية الشائعة والوقاية من eFi