تحليل ثغرات مترجم Solidity واستراتيجيات التعامل معها
المُجمع هو أحد المكونات الأساسية في أنظمة الحاسوب الحديثة، ووظيفته هي تحويل كود المصدر للغات البرمجة عالية المستوى إلى تعليمات قابلة للتنفيذ بواسطة الحاسوب. مقارنة بأمان كود التطبيق، غالبًا ما يتم تجاهل أمان المُجمع نفسه. ومع ذلك، فإن المُجمع كبرنامج حاسوب قد يحتوي أيضًا على ثغرات أمنية، وفي حالات معينة قد يشكل مخاطر أمنية خطيرة.
دور مترجم Solidity هو تحويل كود العقد الذكي إلى كود تعليمات (EVM) الخاص بالآلة الافتراضية للإيثيريوم. على عكس ثغرات EVM نفسها، تتركز ثغرات مترجم Solidity بشكل رئيسي في المشاكل التي تحدث عند تحويل Solidity إلى كود EVM. قد يؤدي ذلك إلى عدم تطابق كود EVM الناتج مع توقعات المطور، مما يتسبب في حدوث خلل في تشغيل العقد الذكي، مما يعرض أمان أصول المستخدم للخطر.
فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم سوليديتي:
SOL-2016-9 HighOrderByteCleanStorage
توجد هذه الثغرة في إصدارات سابقة من مترجم Solidity (>=0.1.6 <0.4.4). في حالات معينة، قد يتم تعديل متغيرات التخزين بشكل غير متوقع، مما يتعارض مع السلوك المتوقع. قد تؤدي هذه الت inconsistencies إلى عواقب وخيمة، خاصةً عندما تُستخدم المتغيرات للتحقق من الأذونات أو محاسبة الأصول.
SOL-2022-4 تأثيرات الذاكرة الجانبية في التجميع الداخلي
توجد هذه الثغرة في المترجم من الإصدار 0.8.13 إلى 0.8.15. بسبب خطأ في عملية تحسين التجميع، قد يؤدي ذلك إلى إزالة عمليات الكتابة في الذاكرة بشكل خاطئ، مما ينتج سلوكًا غير متوقع للبرنامج.
تؤثر هذه الثغرة على إصدارات المترجم من 0.5.8 إلى 0.8.16. عند إجراء عملية abi.encode على مصفوفة من نوع calldata، قد يتم مسح بعض البيانات بشكل غير صحيح، مما يؤدي إلى تعديل البيانات المجاورة، مما يتسبب في عدم تطابق البيانات بعد الترميز وفك الترميز.
بخصوص ثغرات مترجم Solidity، قدم فريق أمان blockchain Cobo الاقتراحات التالية:
إلى المطورين:
استخدم إصدارًا أحدث من مجمع Solidity
تحسين حالات اختبار الوحدة
تجنب استخدام التجميع الداخلي، وترميز وفك ترميز ABI المعقدة وغيرها من العمليات
إلى موظفي الأمن:
يجب أخذ المخاطر الأمنية التي قد يقدمها المترجم في الاعتبار أثناء التدقيق
حث على ترقية إصدار المترجم في عملية SDL
تقييم التأثير الأمني الفعلي لثغرات المترجم بناءً على الظروف المحددة
الموارد العملية:
مدونة تحذيرات الأمان الرسمية لـ Solidity
قائمة الأخطاء في مستودع Solidity GitHub
نصائح الأمان لصفحة شفرة العقد في Etherscan
بشكل عام، على الرغم من أنه لا داعي للذعر المفرط، يجب على المطورين وموظفي الأمان أن يكونوا على دراية كاملة بالمخاطر المحتملة لثغرات مترجم Solidity، واتخاذ التدابير المناسبة للحد من المخاطر الأمنية المحتملة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 14
أعجبني
14
6
مشاركة
تعليق
0/400
ZkProofPudding
· منذ 22 س
مترجم آخر بارد
شاهد النسخة الأصليةرد0
TheMemefather
· منذ 23 س
هل هناك ثغرات في المترجم أيضًا؟ لقد جننت
شاهد النسخة الأصليةرد0
HodlOrRegret
· منذ 23 س
مرة أخرى، حدثت مشكلة بعد التحديث، والمستثمر التجزئة هو من يدفع الثمن دائمًا.
شاهد النسخة الأصليةرد0
wrekt_but_learning
· منذ 23 س
هذه ثغرة في الكود فعلاً مزعجة، تجعل فروة الرأس تشعر بالوخز.
شاهد النسخة الأصليةرد0
GweiTooHigh
· منذ 23 س
المترجم فيه خطأ مرة أخرى، إنه مزعج جداً
شاهد النسخة الأصليةرد0
BakedCatFanboy
· منذ 23 س
مرة أخرى ثغرة في EVM يا إلهي لا أستطيع التعامل مع ذلك
ثغرات مترجم Solidity تهدد أمان العقود الذكية يجب على المطورين توخي الحذر
تحليل ثغرات مترجم Solidity واستراتيجيات التعامل معها
المُجمع هو أحد المكونات الأساسية في أنظمة الحاسوب الحديثة، ووظيفته هي تحويل كود المصدر للغات البرمجة عالية المستوى إلى تعليمات قابلة للتنفيذ بواسطة الحاسوب. مقارنة بأمان كود التطبيق، غالبًا ما يتم تجاهل أمان المُجمع نفسه. ومع ذلك، فإن المُجمع كبرنامج حاسوب قد يحتوي أيضًا على ثغرات أمنية، وفي حالات معينة قد يشكل مخاطر أمنية خطيرة.
دور مترجم Solidity هو تحويل كود العقد الذكي إلى كود تعليمات (EVM) الخاص بالآلة الافتراضية للإيثيريوم. على عكس ثغرات EVM نفسها، تتركز ثغرات مترجم Solidity بشكل رئيسي في المشاكل التي تحدث عند تحويل Solidity إلى كود EVM. قد يؤدي ذلك إلى عدم تطابق كود EVM الناتج مع توقعات المطور، مما يتسبب في حدوث خلل في تشغيل العقد الذكي، مما يعرض أمان أصول المستخدم للخطر.
فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم سوليديتي:
توجد هذه الثغرة في إصدارات سابقة من مترجم Solidity (>=0.1.6 <0.4.4). في حالات معينة، قد يتم تعديل متغيرات التخزين بشكل غير متوقع، مما يتعارض مع السلوك المتوقع. قد تؤدي هذه الت inconsistencies إلى عواقب وخيمة، خاصةً عندما تُستخدم المتغيرات للتحقق من الأذونات أو محاسبة الأصول.
توجد هذه الثغرة في المترجم من الإصدار 0.8.13 إلى 0.8.15. بسبب خطأ في عملية تحسين التجميع، قد يؤدي ذلك إلى إزالة عمليات الكتابة في الذاكرة بشكل خاطئ، مما ينتج سلوكًا غير متوقع للبرنامج.
تؤثر هذه الثغرة على إصدارات المترجم من 0.5.8 إلى 0.8.16. عند إجراء عملية abi.encode على مصفوفة من نوع calldata، قد يتم مسح بعض البيانات بشكل غير صحيح، مما يؤدي إلى تعديل البيانات المجاورة، مما يتسبب في عدم تطابق البيانات بعد الترميز وفك الترميز.
بخصوص ثغرات مترجم Solidity، قدم فريق أمان blockchain Cobo الاقتراحات التالية:
إلى المطورين:
إلى موظفي الأمن:
الموارد العملية:
بشكل عام، على الرغم من أنه لا داعي للذعر المفرط، يجب على المطورين وموظفي الأمان أن يكونوا على دراية كاملة بالمخاطر المحتملة لثغرات مترجم Solidity، واتخاذ التدابير المناسبة للحد من المخاطر الأمنية المحتملة.