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

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

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

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

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

دعونا نتعرف على ثغرات مترجم Solidity من خلال بعض الحالات الحقيقية:

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

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

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

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

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

  1. SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup

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

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

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

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

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

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

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

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

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

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

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

SOL-0.97%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • إعادة النشر
  • مشاركة
تعليق
0/400
PumpDetectorvip
· منذ 6 س
نفس القصة القديمة... كنت أشاهد مشاكل في المترجم منذ عام '13، كانت أيام mtgox أكثر جنونًا بصراحة
شاهد النسخة الأصليةرد0
AirdropHuntressvip
· منذ 6 س
تفاصيل تدقيق الكود غير ضارة، المحفظة هي المشكلة الكبيرة لرأس المال
شاهد النسخة الأصليةرد0
TokenEconomistvip
· منذ 6 س
في الواقع، إن مسألة EVM مقابل مُجمع سوليديتي تشبه خطأ Y2K الشهير... أشياء مثيرة للاهتمام بصراحة
شاهد النسخة الأصليةرد0
MidnightTradervip
· منذ 6 س
يبدو أن المترجم قد فشل، ومخاطر المشروع كبيرة جداً.
شاهد النسخة الأصليةرد0
  • تثبيت