مؤخراً، شارك أحد خبراء الأمن دورة تدريبية حول أمان التمويل اللامركزي مع المجتمع. استعرض هذا الخبير الأحداث الأمنية الكبيرة التي تعرضت لها صناعة Web3 في السنة الماضية، واستكشف أسباب هذه الأحداث وكيفية تجنبها، وخلص إلى الثغرات الأمنية الشائعة في العقود الذكية والتدابير الوقائية، وقدم بعض النصائح الأمنية للمشاريع والمستخدمين.
تشمل أنواع الثغرات الشائعة في التمويل اللامركزي القروض الفورية، وتلاعب الأسعار، ومشاكل صلاحيات الدوال، والاستدعاءات الخارجية العشوائية، ومشاكل دالة الاسترجاع، وثغرات منطق الأعمال، وتسرب المفاتيح الخاصة، وهجمات إعادة الإدخال، وغيرها. تركز هذه المقالة على ثلاثة أنواع: القروض الفورية، وتلاعب الأسعار، وهجمات إعادة الإدخال.
القروض الفورية هي ابتكار في التمويل اللامركزي لكن تم استغلالها أيضًا من قبل القراصنة للهجوم. يقوم المهاجمون بإقراض مبالغ ضخمة من الأموال عبر القروض الفورية، للتلاعب بالأسعار أو هجوم على منطق العمل. يحتاج المطورون إلى النظر في ما إذا كانت وظائف العقد ستؤدي إلى استثناءات بسبب كميات ضخمة من الأموال، أو يتم استغلالها للحصول على مكافآت غير مستحقة.
الكثير من مشاريع التمويل اللامركزي تتعرض لهجمات القروض الفورية بسبب مشاكل في الشفرة أو المنطق. على سبيل المثال، بعض المشاريع تمنح المكافآت بناءً على الحيازة في وقت معين، لكن المهاجمين يستغلون القروض الفورية لشراء كميات كبيرة من الرموز للحصول على معظم المكافآت. وبعض المشاريع الأخرى قد تتأثر أيضاً بالقروض الفورية من خلال حساب الأسعار عبر الرموز. يجب على فرق المشاريع أن تظل يقظة تجاه هذه المشكلات.
التحكم في الأسعار
تتعلق مشكلة التلاعب في الأسعار ارتباطًا وثيقًا بالقروض الفورية، وهناك حالتان رئيسيتان:
استخدام بيانات الطرف الثالث عند حساب الأسعار، لكن الطريقة المستخدمة غير صحيحة أو فحصها مفقود، مما أدى إلى التلاعب بالأسعار بشكل خبيث.
استخدام عدد Tokens من بعض العناوين كمتغيرات حسابية، بينما يمكن زيادة أو تقليل رصيد Tokens لتلك العناوين مؤقتًا.
هجوم إعادة الدخول
إن الخطر الرئيسي من استدعاء العقود الخارجية هو أنها قد تستولي على تدفق التحكم، مما يؤدي إلى تغييرات غير مقصودة في البيانات. على سبيل المثال:
صلابة
تعيين (العنوان => 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، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 7
أعجبني
7
7
مشاركة
تعليق
0/400
RugResistant
· 07-19 00:21
لقد دخل شخص آخر باسم الحماية ليُستغل بغباء.
شاهد النسخة الأصليةرد0
ChainDoctor
· 07-19 00:20
又是背锅的 القروض السريعة 啧啧
شاهد النسخة الأصليةرد0
PessimisticOracle
· 07-19 00:17
المغريات الكبيرة وراء الثغرات.
شاهد النسخة الأصليةرد0
ParallelChainMaxi
· 07-19 00:14
هناك الكثير من الثغرات، فليحرص الجميع.
شاهد النسخة الأصليةرد0
TokenGuru
· 07-19 00:04
لقد رأيت الثغرات القديمة خلال فترة التعدين ، لا تكن مهملا.
شاهد النسخة الأصليةرد0
Anon4461
· 07-19 00:03
لا تتفاخر، يبدو أن لدى الجميع ثغرات.
شاهد النسخة الأصليةرد0
RektCoaster
· 07-18 23:59
لن تخسر أبداً أمام mei و wei حتى لو ماتت السمكة وتمزق الشبكة.
تحليل ثلاث مخاطر أمنية في التمويل اللامركزي: القروض السريعة، التحكم في الأسعار وهجمات إعادة الدخول
التمويل اللامركزي أمن الثغرات والتدابير الوقائية
مؤخراً، شارك أحد خبراء الأمن دورة تدريبية حول أمان التمويل اللامركزي مع المجتمع. استعرض هذا الخبير الأحداث الأمنية الكبيرة التي تعرضت لها صناعة Web3 في السنة الماضية، واستكشف أسباب هذه الأحداث وكيفية تجنبها، وخلص إلى الثغرات الأمنية الشائعة في العقود الذكية والتدابير الوقائية، وقدم بعض النصائح الأمنية للمشاريع والمستخدمين.
تشمل أنواع الثغرات الشائعة في التمويل اللامركزي القروض الفورية، وتلاعب الأسعار، ومشاكل صلاحيات الدوال، والاستدعاءات الخارجية العشوائية، ومشاكل دالة الاسترجاع، وثغرات منطق الأعمال، وتسرب المفاتيح الخاصة، وهجمات إعادة الإدخال، وغيرها. تركز هذه المقالة على ثلاثة أنواع: القروض الفورية، وتلاعب الأسعار، وهجمات إعادة الإدخال.
! قسم أمان Cobo DeFi (الجزء الثاني) :D الثغرات الأمنية الشائعة والوقاية من eFi
قرض الفلاش
القروض الفورية هي ابتكار في التمويل اللامركزي لكن تم استغلالها أيضًا من قبل القراصنة للهجوم. يقوم المهاجمون بإقراض مبالغ ضخمة من الأموال عبر القروض الفورية، للتلاعب بالأسعار أو هجوم على منطق العمل. يحتاج المطورون إلى النظر في ما إذا كانت وظائف العقد ستؤدي إلى استثناءات بسبب كميات ضخمة من الأموال، أو يتم استغلالها للحصول على مكافآت غير مستحقة.
الكثير من مشاريع التمويل اللامركزي تتعرض لهجمات القروض الفورية بسبب مشاكل في الشفرة أو المنطق. على سبيل المثال، بعض المشاريع تمنح المكافآت بناءً على الحيازة في وقت معين، لكن المهاجمين يستغلون القروض الفورية لشراء كميات كبيرة من الرموز للحصول على معظم المكافآت. وبعض المشاريع الأخرى قد تتأثر أيضاً بالقروض الفورية من خلال حساب الأسعار عبر الرموز. يجب على فرق المشاريع أن تظل يقظة تجاه هذه المشكلات.
التحكم في الأسعار
تتعلق مشكلة التلاعب في الأسعار ارتباطًا وثيقًا بالقروض الفورية، وهناك حالتان رئيسيتان:
استخدام بيانات الطرف الثالث عند حساب الأسعار، لكن الطريقة المستخدمة غير صحيحة أو فحصها مفقود، مما أدى إلى التلاعب بالأسعار بشكل خبيث.
استخدام عدد Tokens من بعض العناوين كمتغيرات حسابية، بينما يمكن زيادة أو تقليل رصيد Tokens لتلك العناوين مؤقتًا.
هجوم إعادة الدخول
إن الخطر الرئيسي من استدعاء العقود الخارجية هو أنها قد تستولي على تدفق التحكم، مما يؤدي إلى تغييرات غير مقصودة في البيانات. على سبيل المثال:
صلابة تعيين (العنوان => uint) الخاص userBalances;
وظيفة withdrawBalance() عامة { uint amountToWithdraw = userBalances[msg.sender]; (bool النجاح ، ) = msg.sender.call.value(amountToWithdraw)( "" ); require(success). أرصدة المستخدم[msg.sender] = 0; }
نظرًا لأن رصيد المستخدم يتم تعيينه إلى 0 فقط في نهاية الدالة، ستظل المكالمات المتكررة ناجحة، ويمكن سحب الرصيد عدة مرات.
تأتي أشكال هجوم إعادة الإدخال متنوعة، وقد تشمل وظائف مختلفة لعقد واحد أو وظائف لعقود متعددة. عند معالجة مشكلة إعادة الإدخال، يجب الانتباه إلى:
ينصح باستخدام ممارسات الأمان الناضجة لتجنب إعادة اختراع العجلة. الحلول الجديدة التي يتم تطويرها ذاتيًا تفتقر إلى التحقق الكافي، مما يزيد من احتمال حدوث مشكلات.
نصائح أمان
نصائح أمان المشروع
كيف يمكن للمستخدمين تحديد أمان العقود الذكية
بصفة عامة، يجب على فرق المشروع والمستخدمين تعزيز الوعي بالأمان واتخاذ التدابير اللازمة لتقليل مخاطر أمان التمويل اللامركزي.