تحليل ثغرات مترجم Solidity: المخاطر، الأمثلة واستراتيجيات المعالجة

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

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

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

على سبيل المثال، في المتصفح، قد يؤدي وجود ثغرات في محرك JavaScript إلى تنفيذ تعليمات برمجية عن بُعد وعواقب وخيمة أخرى أثناء تجميع وتحليل وتنفيذ كود JavaScript. ولا يُستثنى من ذلك مترجم Solidity، حيث توجد ثغرات أمان في عدة إصدارات.

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

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

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

فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم Solidity، توضح أشكالها المحددة، وأسبابها، وأضرارها.

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

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

ثغرة SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup تؤثر على المترجمات من النسخة >= 0.5.8 < 0.8.16. قد تؤدي هذه الثغرة إلى عدم اتساق البيانات عند إجراء عمليات abi.encode على مصفوفات من نوع calldata.

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

استنادًا إلى تحليل ثغرات مترجم Solidity، نقدم الاقتراحات التالية للمطورين والموظفين الأمنيين:

المطور:

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

الأمن:

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

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

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

تحليل ثغرات مترجم Solidity والإجراءات المتخذة

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

ETH6.2%
SOL3.84%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 5
  • مشاركة
تعليق
0/400
MetaverseHobovip
· 08-03 21:11
مرة أخرى هناك مجموعة من الثغرات، لماذا كل هذا الذعر؟
شاهد النسخة الأصليةرد0
OfflineValidatorvip
· 08-03 21:11
لعبت أكثر من 2000 USDT، هجوم منخفض الأبعاد على فهم الشراء المنخفض والبيع المرتفع

اعتماداً على المترجم، كانت هناك ثغرة مرة أخرى...
شاهد النسخة الأصليةرد0
FallingLeafvip
· 08-03 21:10
ثغرات تخيفني، لا أجرؤ على اللعب بشيء.
شاهد النسخة الأصليةرد0
PoetryOnChainvip
· 08-03 21:06
又来 متابعة漏洞 溜了溜了
شاهد النسخة الأصليةرد0
AirDropMissedvip
· 08-03 21:02
مرة أخرى، حدث خطأ في المترجم ولا أستطيع إلا أن أضحك
شاهد النسخة الأصليةرد0
  • تثبيت