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

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

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

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

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

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

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

أمثلة على ثغرات مترجم Solidity

SOL-2016-9 تخزين بايت مرتفع منظم

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

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

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

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

SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup

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

من المهم ملاحظة أنه عند إجراء external call و emit event، يتم تنفيذ abi.encode بشكل ضمني، لذا قد يكون نطاق تأثير هذه الثغرة أوسع مما كان متوقعًا.

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

نصائح الأمان

تقدم فريق أمان blockchain Cobo الاقتراحات التالية لمعالجة ثغرات مترجم Solidity:

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

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

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

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

موارد عملية:

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

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

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

SOL-2.44%
ETH-2.51%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • مشاركة
تعليق
0/400
AirdropChaservip
· 08-02 03:03
ظهر سبب آخر يُستغل بغباء.
شاهد النسخة الأصليةرد0
BearMarketBuildervip
· 08-02 02:55
آه، طوال اليوم في التطوير، أخشى من هذا الشيء.
شاهد النسخة الأصليةرد0
TeaTimeTradervip
· 08-02 02:53
هل الأدب عن الأخطاء في المترجمين مقبول؟
شاهد النسخة الأصليةرد0
0xOverleveragedvip
· 08-02 02:42
المترجمات غير موثوقة، فما الفائدة من العقود؟
شاهد النسخة الأصليةرد0
  • تثبيت