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