تحليل ثغرات مترجم Solidity: المخاطر الأمنية وطرق التعامل معها

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

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

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

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

لا يُستثنى مترجم Solidity من ذلك ، حيث توجد ثغرات أمنية في العديد من إصدارات مترجم Solidity. وظيفة مترجم Solidity هي تحويل كود العقود الذكية إلى كود التعليمات (EVM) الذي يعمل على آلة افتراضية للإيثريوم (EVM) ، وستتم معالجة هذه التعليمات في النهاية في EVM.

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

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

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

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

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

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

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

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

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

  1. SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup

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

تحليل ثغرات مترجم Solidity والتدابير المتخذة

استنادًا إلى تحليل ثغرات مترجم Solidity، نقدم النصائح الأمنية التالية:

للمطورين:

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

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

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

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

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

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

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

ETH0.11%
SOL8.39%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 5
  • مشاركة
تعليق
0/400
AltcoinAnalystvip
· منذ 13 س
كن حذرًا، إنه نفس العيب في إصدار 0.8.x
شاهد النسخة الأصليةرد0
MemecoinResearchervip
· منذ 14 س
مُحطَم في انتظار الحدوث بناءً على تحليلي (p<0.01)
شاهد النسخة الأصليةرد0
just_another_walletvip
· منذ 14 س
المطورون الشباب، ألقوا نظرة بسرعة!
شاهد النسخة الأصليةرد0
FarmHoppervip
· منذ 14 س
يا إلهي، هذه الثغرة تبدو مخيفة!
شاهد النسخة الأصليةرد0
YieldWhisperervip
· منذ 14 س
لقد رأيت نفس نمط استغلال المترجم هذا منذ عام 2021... المطورون لا يتعلمون، حقًا.
شاهد النسخة الأصليةرد0
  • تثبيت