تحليل ثغرات مترجم Solidity واستراتيجيات التعامل معها
تعتبر المترجمات جزءًا أساسيًا من أنظمة الكمبيوتر الحديثة، وظيفتها هي تحويل كود المصدر للغات البرمجة عالية المستوى إلى تعليمات قابلة للتنفيذ على مستوى الكمبيوتر. على الرغم من أن المطورين وموظفي الأمان يركزون عادة على أمان كود التطبيقات، إلا أن أمان المترجم نفسه لا يمكن تجاهله. يمكن أن تؤدي ثغرات المترجمات في بعض الحالات إلى مخاطر أمان خطيرة.
تتمثل وظيفة مترجم Solidity في تحويل كود العقد الذكي إلى كود تعليمات EVM( الخاص بـ Ethereum Virtual Machine). على عكس ثغرات EVM نفسها، تحدث ثغرات مترجم Solidity بشكل رئيسي أثناء عملية تحويل Solidity إلى كود EVM. لا تؤثر هذه الثغرات بشكل مباشر على شبكة Ethereum، ولكنها قد تؤدي إلى أن يكون الكود الناتج EVM غير متوافق مع توقعات المطور، مما يؤدي إلى مشاكل أمنية في العقد الذكي.
إليك بعض الأمثلة الشائعة على ثغرات مترجم Solidity:
ثغرة HighOrderByteCleanStorage ( تؤثر على الإصدارات: >=0.1.6 <0.4.4)
يمكن أن تؤدي هذه الثغرة إلى إرجاع متغير التخزين قيمًا غير متوقعة دون تعديل.
ثغرة InlineAssemblyMemorySideEffects ( تؤثر على الإصدارات: >=0.8.13 <0.8.15)
نظرًا لمشكلة استراتيجية تحسين المترجم، قد يؤدي ذلك إلى أن يتم تحسين التعديلات على الذاكرة في التجميع المضمن بشكل خاطئ.
AbiReencodingHeadOverflowWithStaticArrayCleanup ( الإصدارات المتأثرة: > = 0.5.8 < 0.8.16)
عند إجراء عملية abi.encode على مصفوفة من نوع calldata، قد يتم تعديل البيانات المجاورة بشكل خاطئ، مما يؤدي إلى عدم توافق البيانات بعد الترميز وفك الترميز.
لمواجهة المخاطر الناتجة عن ثغرات مترجم Solidity، يمكن للمطورين وفرق الأمان اتخاذ التدابير التالية:
نصيحة المطورين:
استخدم إصدارًا أحدث من مجمع Solidity
تحسين حالات اختبار الوحدة لزيادة تغطية الشيفرة
تجنب استخدام التجميع المضمن، وفك تشفير ABI المعقد، وما إلى ذلك، واستخدم الميزات الجديدة بحذر
نصيحة من موظفي الأمن:
النظر في المخاطر التي قد يقدمها المترجم خلال تدقيق الأمان
دفع ترقية إصدار المجمع في عملية التطوير
إدخال فحص تلقائي لإصدار المترجم في عملية CI/CD
الموارد العملية:
مدونة تنبيهات الأمان الرسمية لـ Solidity
قائمة الأخطاء في مستودع Solidity على GitHub
قائمة أخطاء المترجمين لكل إصدار
نصائح الأمان في صفحة كود العقد على Etherscan
من خلال التركيز على أمان المترجم واتخاذ التدابير الوقائية المناسبة، يمكن تقليل المخاطر المحتملة الناتجة عن ثغرات مترجم Solidity بفعالية، مما يعزز الأمان الكلي للعقود الذكية.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 11
أعجبني
11
4
مشاركة
تعليق
0/400
0xSunnyDay
· منذ 13 س
لا بأس، فقط العب بثغرات المترجم.
شاهد النسخة الأصليةرد0
BearMarketMonk
· منذ 13 س
من الذي لا يزال يبحث عن الثغرات بنفسه؟ أليس من الأفضل استخدام الأدوات الجاهزة؟
شاهد النسخة الأصليةرد0
NeverVoteOnDAO
· منذ 13 س
يبدو أن الثغرات كثيرة جدًا، لذا اقتطاف القسائم.
شاهد النسخة الأصليةرد0
DefiEngineerJack
· منذ 13 س
*sigh* أخطاء المترجم هي حرفياً السبب الذي نحتاج فيه إلى التحقق الرسمي... لن ننجح بدونها بصراحة
تحليل ثغرات مترجم Solidity واستراتيجيات التعامل معها
تحليل ثغرات مترجم Solidity واستراتيجيات التعامل معها
تعتبر المترجمات جزءًا أساسيًا من أنظمة الكمبيوتر الحديثة، وظيفتها هي تحويل كود المصدر للغات البرمجة عالية المستوى إلى تعليمات قابلة للتنفيذ على مستوى الكمبيوتر. على الرغم من أن المطورين وموظفي الأمان يركزون عادة على أمان كود التطبيقات، إلا أن أمان المترجم نفسه لا يمكن تجاهله. يمكن أن تؤدي ثغرات المترجمات في بعض الحالات إلى مخاطر أمان خطيرة.
تتمثل وظيفة مترجم Solidity في تحويل كود العقد الذكي إلى كود تعليمات EVM( الخاص بـ Ethereum Virtual Machine). على عكس ثغرات EVM نفسها، تحدث ثغرات مترجم Solidity بشكل رئيسي أثناء عملية تحويل Solidity إلى كود EVM. لا تؤثر هذه الثغرات بشكل مباشر على شبكة Ethereum، ولكنها قد تؤدي إلى أن يكون الكود الناتج EVM غير متوافق مع توقعات المطور، مما يؤدي إلى مشاكل أمنية في العقد الذكي.
إليك بعض الأمثلة الشائعة على ثغرات مترجم Solidity:
ثغرة HighOrderByteCleanStorage ( تؤثر على الإصدارات: >=0.1.6 <0.4.4) يمكن أن تؤدي هذه الثغرة إلى إرجاع متغير التخزين قيمًا غير متوقعة دون تعديل.
ثغرة InlineAssemblyMemorySideEffects ( تؤثر على الإصدارات: >=0.8.13 <0.8.15) نظرًا لمشكلة استراتيجية تحسين المترجم، قد يؤدي ذلك إلى أن يتم تحسين التعديلات على الذاكرة في التجميع المضمن بشكل خاطئ.
AbiReencodingHeadOverflowWithStaticArrayCleanup ( الإصدارات المتأثرة: > = 0.5.8 < 0.8.16) عند إجراء عملية abi.encode على مصفوفة من نوع calldata، قد يتم تعديل البيانات المجاورة بشكل خاطئ، مما يؤدي إلى عدم توافق البيانات بعد الترميز وفك الترميز.
لمواجهة المخاطر الناتجة عن ثغرات مترجم Solidity، يمكن للمطورين وفرق الأمان اتخاذ التدابير التالية:
نصيحة المطورين:
نصيحة من موظفي الأمن:
الموارد العملية:
من خلال التركيز على أمان المترجم واتخاذ التدابير الوقائية المناسبة، يمكن تقليل المخاطر المحتملة الناتجة عن ثغرات مترجم Solidity بفعالية، مما يعزز الأمان الكلي للعقود الذكية.