تحليل ثغرات مترجم Solidity واستراتيجيات التعامل معها
المترجم هو أحد المكونات الأساسية لنظام الكمبيوتر الحديث، وظيفته الرئيسية هي تحويل لغات البرمجة عالية المستوى إلى تعليمات منخفضة المستوى يمكن للكمبيوتر تنفيذها. على الرغم من أن معظم المطورين والمتخصصين في الأمن يركزون بشكل أساسي على أمان كود التطبيق، إلا أن أمان المترجم نفسه مهم بنفس القدر. كمبيوتر برنامج، قد يحتوي المترجم أيضًا على ثغرات أمنية، مما قد يؤدي في بعض الحالات إلى مخاطر أمنية خطيرة.
تتمثل وظيفة مترجم Solidity في تحويل شفرة العقد الذكي إلى تعليمات (EVM) الخاصة بالآلة الافتراضية للإيثيريوم. على عكس ثغرات EVM نفسها، فإن ثغرات مترجم Solidity تؤثر بشكل رئيسي على مطوري العقود الذكية، ولا تهدد مباشرةً أمان شبكة الإيثيريوم. ومع ذلك، قد تؤدي ثغرات المترجم إلى حدوث عدم تطابق بين كود EVM الناتج وتوقعات المطور، مما قد يؤدي إلى خسائر كبيرة في أصول المستخدمين.
فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم Solidity:
SOL-2016-9 تخزين بايت عالي الترتيب نظيف
توجد هذه الثغرة في إصدارات سابقة من مترجم Solidity (>=0.1.6 <0.4.4). تكمن المشكلة في استخدام EVM لعناصر مكدس بحجم 32 بايت، بينما يدعم Solidity أنواع بيانات أصغر. في بعض الحالات، فشل المترجم في تنظيف بايتات الأعلى بشكل صحيح، مما أدى إلى تغطية بيانات غير متوقعة.
SOL-2022-4 تأثيرات الذاكرة في التجميع الداخلي
تؤثر هذه الثغرة على الإصدارات >=0.8.13 <0.8.15 من المترجم. تنبع المشكلة من معالجة خاطئة لكتل التجميع المضمنة أثناء عملية تحسين المترجم، مما يؤدي إلى إزالة بعض عمليات الكتابة في الذاكرة بشكل غير صحيح.
توجد الثغرة في المترجمين من الإصدار >=0.5.8 <0.8.16. عند ترميز مصفوفات معينة من نوع calldata باستخدام ABI، تؤدي عملية تنظيف البيانات غير الصحيحة إلى تعديل البيانات المجاورة، مما يتسبب في عدم اتساق نتائج الترميز وفك الترميز.
نقترح ما يلي بشأن ثغرات مترجم Solidity:
للمطورين:
استخدم إصدار أحدث من مترجم Solidity
تحسين حالات اختبار الوحدة وزيادة تغطية الكود
تجنب استخدام التجميع الداخلي، والترميز المعقد لواجهة التطبيقات، وغيرها من الميزات المتقدمة
إلى موظفي الأمن:
النظر في المخاطر الأمنية التي قد يقدمها المترجم أثناء التدقيق
متابعة ترقية إصدار المترجم خلال عملية التطوير
إدخال فحص تلقائي لإصدار المترجم في CI/CD
بعض الموارد المفيدة:
تنبيه أمان رسمي من سوليديتي
قائمة الأخطاء في مستودع Solidity
قائمة أخطاء المترجم لكل إصدار
تنبيه ثغرات المترجم على Etherscan
بشكل عام، على الرغم من أنه لا داعي للقلق المفرط بشأن ثغرات المترجم، إلا أنه ينبغي إيلاء أهمية كافية لهذه التهديدات الأمنية المحتملة خلال عملية تطوير وتدقيق العقود الذكية. من خلال اتخاذ تدابير وقائية مناسبة، يمكن تقليل المخاطر الناجمة عن ثغرات المترجم إلى الحد الأدنى.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 9
أعجبني
9
7
مشاركة
تعليق
0/400
BoredApeResistance
· 07-08 04:11
الأفضل أن تكون حذرًا بشأن الأمور المتعلقة بالبرمجة.
شاهد النسخة الأصليةرد0
SelfCustodyBro
· 07-06 15:49
هل لا تزال تكتب الشيفرة؟ عد إلى المنزل لاختبارها أولاً.
شاهد النسخة الأصليةرد0
TokenDustCollector
· 07-05 04:47
قبل التحقق من العقد، يجب التحقق من المترجم..
شاهد النسخة الأصليةرد0
0xSoulless
· 07-05 04:46
天天被خداع الناس لتحقيق الربح,还不如编译器直接把我割完
شاهد النسخة الأصليةرد0
SmartContractPlumber
· 07-05 04:43
أعلم أنكم جميعًا متشوقون للانضمام إلى الشبكة الرئيسية، لكن هل تجرؤون على الانضمام مع وجود الثغرات؟
ثغرات مترجم Solidity: ما يجب على المطورين معرفته واستراتيجيات التعامل معها
تحليل ثغرات مترجم Solidity واستراتيجيات التعامل معها
المترجم هو أحد المكونات الأساسية لنظام الكمبيوتر الحديث، وظيفته الرئيسية هي تحويل لغات البرمجة عالية المستوى إلى تعليمات منخفضة المستوى يمكن للكمبيوتر تنفيذها. على الرغم من أن معظم المطورين والمتخصصين في الأمن يركزون بشكل أساسي على أمان كود التطبيق، إلا أن أمان المترجم نفسه مهم بنفس القدر. كمبيوتر برنامج، قد يحتوي المترجم أيضًا على ثغرات أمنية، مما قد يؤدي في بعض الحالات إلى مخاطر أمنية خطيرة.
تتمثل وظيفة مترجم Solidity في تحويل شفرة العقد الذكي إلى تعليمات (EVM) الخاصة بالآلة الافتراضية للإيثيريوم. على عكس ثغرات EVM نفسها، فإن ثغرات مترجم Solidity تؤثر بشكل رئيسي على مطوري العقود الذكية، ولا تهدد مباشرةً أمان شبكة الإيثيريوم. ومع ذلك، قد تؤدي ثغرات المترجم إلى حدوث عدم تطابق بين كود EVM الناتج وتوقعات المطور، مما قد يؤدي إلى خسائر كبيرة في أصول المستخدمين.
فيما يلي بعض الأمثلة الحقيقية على ثغرات مترجم Solidity:
توجد هذه الثغرة في إصدارات سابقة من مترجم Solidity (>=0.1.6 <0.4.4). تكمن المشكلة في استخدام EVM لعناصر مكدس بحجم 32 بايت، بينما يدعم Solidity أنواع بيانات أصغر. في بعض الحالات، فشل المترجم في تنظيف بايتات الأعلى بشكل صحيح، مما أدى إلى تغطية بيانات غير متوقعة.
تؤثر هذه الثغرة على الإصدارات >=0.8.13 <0.8.15 من المترجم. تنبع المشكلة من معالجة خاطئة لكتل التجميع المضمنة أثناء عملية تحسين المترجم، مما يؤدي إلى إزالة بعض عمليات الكتابة في الذاكرة بشكل غير صحيح.
توجد الثغرة في المترجمين من الإصدار >=0.5.8 <0.8.16. عند ترميز مصفوفات معينة من نوع calldata باستخدام ABI، تؤدي عملية تنظيف البيانات غير الصحيحة إلى تعديل البيانات المجاورة، مما يتسبب في عدم اتساق نتائج الترميز وفك الترميز.
نقترح ما يلي بشأن ثغرات مترجم Solidity:
للمطورين:
إلى موظفي الأمن:
بعض الموارد المفيدة:
بشكل عام، على الرغم من أنه لا داعي للقلق المفرط بشأن ثغرات المترجم، إلا أنه ينبغي إيلاء أهمية كافية لهذه التهديدات الأمنية المحتملة خلال عملية تطوير وتدقيق العقود الذكية. من خلال اتخاذ تدابير وقائية مناسبة، يمكن تقليل المخاطر الناجمة عن ثغرات المترجم إلى الحد الأدنى.