تحليل ثغرات مترجم Solidity: المخاطر الخفية التي تؤثر على أمان العقود الذكية

robot
إنشاء الملخص قيد التقدم

تحليل عميق لثغرات مترجم Solidity

المترجم هو أحد المكونات الأساسية في أنظمة الكمبيوتر الحديثة، وتتمثل الوظيفة الرئيسية له في تحويل كود المصدر للغات البرمجة عالية المستوى إلى تعليمات قابلة للتنفيذ على مستوى الكمبيوتر. على الرغم من أن معظم المطورين والمهنيين في مجال الأمن عادة ما يركزون على أمان كود التطبيقات البرمجية، إلا أن أمان المترجم نفسه غالبًا ما يتم تجاهله. في الواقع، يمكن أن يحتوي المترجم، كنوع من برامج الكمبيوتر، على ثغرات أمنية، والتي قد تشكل مخاطر أمنية خطيرة في بعض الحالات.

على سبيل المثال، خلال عملية تحليل المتصفح وتنفيذ كود JavaScript، قد تؤدي ثغرات محرك تحليل JavaScript إلى تعرض المستخدمين لهجمات تنفيذ كود عن بُعد عند زيارة صفحات ويب ضارة، مما يؤدي في النهاية إلى سيطرة المهاجم على متصفح الضحية أو حتى نظام التشغيل. بالإضافة إلى ذلك، أظهرت الأبحاث أن الأخطاء في مترجم Clang C++ قد تؤدي أيضًا إلى عواقب خطيرة مثل تنفيذ كود عن بُعد.

يوجد أيضًا ثغرات أمنية في مترجم Solidity. وفقًا لتحذير الأمان الذي نشره فريق تطوير Solidity، هناك مخاطر أمنية في عدة إصدارات من مترجم Solidity. وظيفة مترجم Solidity هي تحويل كود العقد الذكي إلى كود تعليمات (EVM) الخاص بـ Ethereum Virtual Machine، والذي يتم تحميله في النهاية عبر المعاملات إلى Ethereum ويتم تنفيذه بواسطة EVM.

تحليل الثغرات في مترجم Solidity وإجراءات التعامل معها

يفضل أن نلاحظ أن ثغرات مترجم Solidity تختلف عن ثغرات EVM نفسها. تشير ثغرات EVM إلى مشكلات الأمان التي تنشأ عند تنفيذ التعليمات بواسطة الآلة الافتراضية، مما قد يؤثر على شبكة الإيثيريوم بأكملها. بينما تشير ثغرات مترجم Solidity إلى المشكلات الموجودة عند تحويل كود Solidity إلى كود EVM، والتي لن تؤثر مباشرة على شبكة الإيثيريوم نفسها.

قد تؤدي ثغرات مترجم Solidity إلى عدم توافق التعليمات البرمجية EVM التي تم إنشاؤها مع توقعات المطورين. نظرًا لأن العقود الذكية على إيثريوم تتعلق عادةً بأصول العملات المشفرة الخاصة بالمستخدمين، فإن أي خطأ ناتج عن المترجم قد يتسبب في خسارة أصول المستخدمين، مما يؤدي إلى عواقب وخيمة. يركز المطورون ومراجعي العقود عادةً على تنفيذ منطق العقد والمشكلات الأمنية الشائعة، بينما يصعب اكتشاف ثغرات المترجم فقط من خلال تدقيق شفرة المصدر، حيث يتطلب الأمر تحليلًا مشتركًا مع إصدار المترجم المحدد وأنماط الشفرة.

فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم Solidity:

  1. SOL-2016-9 تخزين بايت عالي النظام النظيف

توجد هذه الثغرة في الإصدارات السابقة من مترجم Solidity (>=0.1.6 <0.4.4). في بعض الحالات، قد يتم تعديل قيمة المتغيرات التخزينية عن غير قصد، مما يؤدي إلى عدم تطابق قيمة إرجاع الدالة مع المتوقع. قد يؤدي هذا التناقض إلى عواقب وخيمة في سيناريوهات مثل التحقق من الأذونات أو محاسبة الأصول.

  1. SOL-2022-4 تأثيرات الذاكرة في التجميع المضمن

توجد هذه الثغرة في محركات التجميع من الإصدار 0.8.13 إلى 0.8.15. بسبب مشكلة في استراتيجية تحسين المحرك، قد يتم إزالة بعض التعديلات على الذاكرة في التعليمات البرمجية المضمنة بشكل خاطئ، مما يؤدي إلى خطأ في قيمة إرجاع الدالة.

  1. SOL-2022-6 تجاوز سعة رأس إعادة ترميز ABI مع تنظيف المصفوفة الثابتة

تؤثر هذه الثغرة على إصدارات 0.5.8 إلى 0.8.16 من المترجم. أثناء إجراء عملية abi.encode على مصفوفة من نوع calldata، قد يتم مسح بعض البيانات بشكل خاطئ، مما يؤدي إلى تعديل البيانات المجاورة، مما يتسبب في عدم تناسق البيانات بعد الترميز وفك الترميز.

بخصوص ثغرات مترجم Solidity، قدم فريق أمان blockchain Cobo الاقتراحات التالية:

تحليل ثغرات مترجم Solidity وتدابير التعامل معها

إلى المطورين:

  • استخدم إصدار أحدث من مترجم Solidity
  • تحسين حالات اختبار الوحدة وزيادة تغطية الشيفرة
  • تجنب استخدام التجميع المضمن، والترميز المعقد لـ abi، وغيرها من العمليات، واستخدام الميزات الجديدة والوظائف التجريبية بحذر

إلى موظفي الأمن:

  • أخذ المخاطر الأمنية التي قد يقدمها المجمع في الاعتبار أثناء التدقيق
  • يُنصح فريق التطوير بترقية إصدار المُجمّع في الوقت المناسب
  • إدخال الفحص التلقائي لإصدار المترجم في عملية CI/CD
  • تقييم التأثير الأمني الفعلي لثغرات المترجم بناءً على المشروع المحدد

بعض الموارد المفيدة:

  • تحذيرات الأمان من المدونة الرسمية لـ Solidity
  • قائمة الأخطاء في مستودع Solidity GitHub
  • قائمة أخطاء المترجمات في الإصدارات المختلفة
  • تنبيه الثغرات في صفحة كود العقد على Etherscan

من خلال فهم خصائص وتأثيرات ثغرات مترجم Solidity، يمكن للمطورين وموظفي الأمان تقييم مخاطر أمان العقود الذكية بشكل أكثر شمولية، واتخاذ التدابير المناسبة لتقليل التهديدات المحتملة.

تحليل ثغرات مترجم Solidity وإجراءات التعامل معها

شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
0xSoullessvip
· منذ 4 س
أداة خداع الناس لتحقيق الربح جديدة
شاهد النسخة الأصليةرد0
RumbleValidatorvip
· 07-12 19:34
هل يمكن أن يتسبب هذا الثغرة في أخطاء في طبقة الإجماع؟ مخاطر عقدة التحقق كبيرة!
شاهد النسخة الأصليةرد0
SocialFiQueenvip
· 07-12 19:29
يبدو أن العقود الذكية ستتعرض لمشكلة~ هاها مثير للغاية
شاهد النسخة الأصليةرد0
CryptoTherapistvip
· 07-12 19:27
مجرد حالة أخرى من متلازمة قلق المطورين... تنفس خلال عملية تصحيح الأخطاء عائلتي
شاهد النسخة الأصليةرد0
StablecoinAnxietyvip
· 07-12 19:14
المجمعات ليست آمنة من يجرؤ على البرمجة
شاهد النسخة الأصليةرد0
Blockwatcher9000vip
· 07-12 19:06
المطورون صعبون للغاية، تمسّك بـ btc الخاص بي ورحل.
شاهد النسخة الأصليةرد0
  • تثبيت