المترجم هو أحد المكونات الأساسية في أنظمة الكمبيوتر الحديثة، وظيفته تحويل كود المصدر للغات البرمجة عالية المستوى إلى كود تعليمات يمكن تنفيذه بواسطة الكمبيوتر. بالمقارنة مع كود التطبيقات، غالبًا ما يتم تجاهل أمان المترجم نفسه. ومع ذلك، كبرنامج كمبيوتر، قد يحتوي المترجم أيضًا على ثغرات أمنية، مما قد يؤدي في بعض الحالات إلى مخاطر أمنية خطيرة.
يتمثل دور مترجم Solidity في تحويل كود العقد الذكي إلى تعليمات كود EVM( الخاصة بآلة Ethereum الافتراضية). على عكس ثغرات EVM نفسها، فإن ثغرات مترجم Solidity لا تؤثر مباشرة على شبكة Ethereum، ولكنها قد تؤدي إلى عدم توافق كود EVM الناتج مع توقعات المطور، مما قد يتسبب في مشكلات أمان العقود الذكية.
فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم Solidity:
SOL-2016-9 HighOrderByteCleanStorage
توجد هذه الثغرة في الإصدارات المبكرة من المترجم Solidity (>=0.1.6 <0.4.4). في بعض الحالات، لم يقم المترجم بتنظيف البايتات العليا بشكل صحيح، مما أدى إلى تعديل غير مقصود لقيم المتغيرات.
SOL-2022-4 تأثيرات الذاكرة الجانبية لـ InlineAssembly
تؤثر هذه الثغرة على إصدارات المترجم من 0.8.13 إلى 0.8.15. بسبب معالجة خاطئة لكتلة assembly الفردية أثناء عملية تحسين التجميع، قد يؤدي ذلك إلى إزالة عمليات الذاكرة بشكل خاطئ.
SOL-2022-6 فشل إعادة ترميز ABI نتيجة تجاوز سعة رأس المصفوفة الثابتة
يؤثر هذا الثغرة على إصدارات المترجم من 0.5.8 إلى 0.8.16. أثناء إجراء عملية abi.encode على مصفوفة من نوع calldata، تم مسح بعض البيانات بشكل خاطئ، مما أدى إلى تعديل البيانات المجاورة.
بالنسبة لثغرات مترجم Solidity، إليك النصائح الأمنية التالية:
للمطورين:
استخدم إصدار أحدث من مترجم Solidity
تحسين حالات اختبار الوحدة
تجنب استخدام التجميع الداخلي، والترميز وفك الترميز المعقد ل ABI، وما إلى ذلك.
إلى موظفي الأمن:
النظر في المخاطر الأمنية التي قد يقدمها المترجم أثناء التدقيق
حث على ترقية إصدار المترجم في عملية التطوير
تقييم الأثر الأمني الفعلي لثغرات المترجم بناءً على الظروف المحددة
بعض الموارد المفيدة:
مدونة التحذيرات الأمنية الرسمية لـ Solidity
قائمة الأخطاء في مستودع GitHub الخاص بـ Solidity
تحذير من ثغرات مترجم صفحة كود العقد في Etherscan
بشكل عام، على الرغم من أنه لا ينبغي الإفراط في الذعر بشأن ثغرات المترجم، إلا أن المطورين والفرق الأمنية يجب أن يظلوا يقظين ويتخذوا التدابير المناسبة لتقليل المخاطر ذات الصلة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 12
أعجبني
12
5
مشاركة
تعليق
0/400
hodl_therapist
· منذ 21 س
انتبهوا أيها الملوك للحفاظ على صحتكم
شاهد النسخة الأصليةرد0
CommunitySlacker
· منذ 21 س
ثغرة تم تعديلها مرة أخرى، لقد أصبحت مزعجة جداً
شاهد النسخة الأصليةرد0
GasGuru
· منذ 21 س
أصبح الأمر يجعلني أخشى من الدخول في العقود.
شاهد النسخة الأصليةرد0
SmartContractRebel
· منذ 21 س
أعتقد أن المترجم رائع جدًا
شاهد النسخة الأصليةرد0
PebbleHander
· منذ 22 س
كيف نتعامل مع ثغرة جديدة في العقد... لا داعي للقلق
تحليل ثغرات مترجم Solidity وإجراءات الوقاية منها
تحليل ثغرات مترجم Solidity وإجراءات الوقاية منها
المترجم هو أحد المكونات الأساسية في أنظمة الكمبيوتر الحديثة، وظيفته تحويل كود المصدر للغات البرمجة عالية المستوى إلى كود تعليمات يمكن تنفيذه بواسطة الكمبيوتر. بالمقارنة مع كود التطبيقات، غالبًا ما يتم تجاهل أمان المترجم نفسه. ومع ذلك، كبرنامج كمبيوتر، قد يحتوي المترجم أيضًا على ثغرات أمنية، مما قد يؤدي في بعض الحالات إلى مخاطر أمنية خطيرة.
يتمثل دور مترجم Solidity في تحويل كود العقد الذكي إلى تعليمات كود EVM( الخاصة بآلة Ethereum الافتراضية). على عكس ثغرات EVM نفسها، فإن ثغرات مترجم Solidity لا تؤثر مباشرة على شبكة Ethereum، ولكنها قد تؤدي إلى عدم توافق كود EVM الناتج مع توقعات المطور، مما قد يتسبب في مشكلات أمان العقود الذكية.
فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم Solidity:
توجد هذه الثغرة في الإصدارات المبكرة من المترجم Solidity (>=0.1.6 <0.4.4). في بعض الحالات، لم يقم المترجم بتنظيف البايتات العليا بشكل صحيح، مما أدى إلى تعديل غير مقصود لقيم المتغيرات.
تؤثر هذه الثغرة على إصدارات المترجم من 0.8.13 إلى 0.8.15. بسبب معالجة خاطئة لكتلة assembly الفردية أثناء عملية تحسين التجميع، قد يؤدي ذلك إلى إزالة عمليات الذاكرة بشكل خاطئ.
يؤثر هذا الثغرة على إصدارات المترجم من 0.5.8 إلى 0.8.16. أثناء إجراء عملية abi.encode على مصفوفة من نوع calldata، تم مسح بعض البيانات بشكل خاطئ، مما أدى إلى تعديل البيانات المجاورة.
بالنسبة لثغرات مترجم Solidity، إليك النصائح الأمنية التالية:
للمطورين:
إلى موظفي الأمن:
بعض الموارد المفيدة:
بشكل عام، على الرغم من أنه لا ينبغي الإفراط في الذعر بشأن ثغرات المترجم، إلا أن المطورين والفرق الأمنية يجب أن يظلوا يقظين ويتخذوا التدابير المناسبة لتقليل المخاطر ذات الصلة.