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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • استخدم إصدار أحدث من компилятор Solidity
  • تحسين حالات اختبار الوحدة
  • تجنب استخدام التجميع الداخلي، وعمليات ترميز وفك ترميز ABI المعقدة، وغيرها من العمليات
  • استخدم ميزات اللغة الجديدة والوظائف التجريبية بحذر

إلى الأمناء:

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

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

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

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

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

SOL-5.91%
ETH-2.36%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
Rekt_Recoveryvip
· 07-12 06:08
رحم الله أموال الجميع... لقد كنت هناك، فقدت كل شيء بسبب أخطاء المجمع في عام 2018، أشعر بالأسف لذلك
شاهد النسخة الأصليةرد0
RunWhenCutvip
· 07-12 05:51
سواء تم القياس أم لا، سيخدع الناس لتحقيق الربح
شاهد النسخة الأصليةرد0
FUDwatchervip
· 07-12 03:11
هذا الخطأ مخيف حقًا، سأذهب.
شاهد النسخة الأصليةرد0
ResearchChadButBrokevip
· 07-09 10:27
هل حدثت مشكلة أخرى في المترجم؟ سأبقى مستيقظًا لإصلاح الأخطاء.
شاهد النسخة الأصليةرد0
MoonlightGamervip
· 07-09 10:19
لقد تم التحقق من الشيفرة، وليس هناك أي مشكلة.
شاهد النسخة الأصليةرد0
GasGuzzlervip
· 07-09 09:58
لا زلت أكتب العقود الذكية، هناك رائحة حمقى.
شاهد النسخة الأصليةرد0
  • تثبيت