تحليل الثغرات في مترجم Solidity واستراتيجيات المواجهة
المترجم هو أحد المكونات الأساسية في أنظمة الكمبيوتر الحديثة، وتتمثل الوظيفة الرئيسية له في تحويل كود المصدر للغات البرمجة عالية المستوى إلى تعليمات قابلة للتنفيذ على مستوى الكمبيوتر. مثل كود التطبيق، قد يحتوي المترجم نفسه أيضًا على ثغرات أمنية، مما قد يؤدي في بعض الحالات إلى مخاطر أمنية خطيرة.
دور مترجم Solidity هو تحويل كود عقود الذكاء إلى كود تعليمات آلة Ethereum (EVM). على عكس ثغرات EVM نفسها، تحدث ثغرات مترجم Solidity بشكل أساسي خلال عملية الترجمة، ولن تؤثر مباشرة على شبكة Ethereum نفسها، ولكن يمكن أن تؤدي إلى عدم توافق كود EVM الناتج مع توقعات المطورين، مما يتسبب في أخطاء أثناء تشغيل عقود الذكاء، وقد يؤدي حتى إلى خسارة أصول المستخدمين.
سوف نوضح من خلال عدة حالات حقيقية الشكل المحدد لثغرات مترجم Solidity وأسبابها وأضرارها:
SOL-2016-9 تخزين البيانات النظيف ذو البايت العالي
توجد هذه الثغرة في إصدارات مبكر من مترجم Solidity (>=0.1.6 <0.4.4). في بعض الحالات، لم يقم المترجم بإزالة البيانات العليا بشكل صحيح بعد تجاوز العدد الصحيح، مما أدى إلى تعديل غير مقصود للمتغيرات المجاورة. قد يؤدي هذا إلى حدوث أخطاء في المنطق الأساسي مثل التحقق من الأذونات أو محاسبة الأصول.
SOL-2022-4 آثار جانبية للذاكرة في التجميع المضمن
توجد هذه الثغرة في إصدارات المترجم من 0.8.13 إلى 0.8.15. بسبب تنفيذ غير صحيح لاستراتيجية تحسين المترجم، قد يتم حذف تعليمات كتابة الذاكرة في التجميع المضمن بشكل خاطئ، مما يؤدي إلى عدم تناسق البيانات.
تؤثر هذه الثغرة على إصدارات المترجم من 0.5.8 إلى 0.8.16. عند ترميز مصفوفة من نوع calldata باستخدام abi، تم مسح بعض البيانات عن طريق الخطأ، مما أدى إلى تعديل البيانات المجاورة، مما تسبب في عدم اتساق نتائج الترميز وفك الترميز.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
تسجيلات الإعجاب 7
أعجبني
7
5
مشاركة
تعليق
0/400
GateUser-bd883c58
· منذ 20 س
يبدو أن المترجم غير موثوق به أيضًا
شاهد النسخة الأصليةرد0
HashRatePhilosopher
· منذ 20 س
هل هذه المترجم ثقيل؟
شاهد النسخة الأصليةرد0
LiquidationWatcher
· منذ 20 س
كنت هناك، خسرت الكثير... تحقق من إصدار المترجم الخاص بك أو تعرض للهزيمة حقًا
تحليل مخاطر ثغرات مترجم Solidity واستراتيجيات مواجهة
تحليل الثغرات في مترجم Solidity واستراتيجيات المواجهة
المترجم هو أحد المكونات الأساسية في أنظمة الكمبيوتر الحديثة، وتتمثل الوظيفة الرئيسية له في تحويل كود المصدر للغات البرمجة عالية المستوى إلى تعليمات قابلة للتنفيذ على مستوى الكمبيوتر. مثل كود التطبيق، قد يحتوي المترجم نفسه أيضًا على ثغرات أمنية، مما قد يؤدي في بعض الحالات إلى مخاطر أمنية خطيرة.
دور مترجم Solidity هو تحويل كود عقود الذكاء إلى كود تعليمات آلة Ethereum (EVM). على عكس ثغرات EVM نفسها، تحدث ثغرات مترجم Solidity بشكل أساسي خلال عملية الترجمة، ولن تؤثر مباشرة على شبكة Ethereum نفسها، ولكن يمكن أن تؤدي إلى عدم توافق كود EVM الناتج مع توقعات المطورين، مما يتسبب في أخطاء أثناء تشغيل عقود الذكاء، وقد يؤدي حتى إلى خسارة أصول المستخدمين.
سوف نوضح من خلال عدة حالات حقيقية الشكل المحدد لثغرات مترجم Solidity وأسبابها وأضرارها:
توجد هذه الثغرة في إصدارات مبكر من مترجم Solidity (>=0.1.6 <0.4.4). في بعض الحالات، لم يقم المترجم بإزالة البيانات العليا بشكل صحيح بعد تجاوز العدد الصحيح، مما أدى إلى تعديل غير مقصود للمتغيرات المجاورة. قد يؤدي هذا إلى حدوث أخطاء في المنطق الأساسي مثل التحقق من الأذونات أو محاسبة الأصول.
توجد هذه الثغرة في إصدارات المترجم من 0.8.13 إلى 0.8.15. بسبب تنفيذ غير صحيح لاستراتيجية تحسين المترجم، قد يتم حذف تعليمات كتابة الذاكرة في التجميع المضمن بشكل خاطئ، مما يؤدي إلى عدم تناسق البيانات.
تؤثر هذه الثغرة على إصدارات المترجم من 0.5.8 إلى 0.8.16. عند ترميز مصفوفة من نوع calldata باستخدام abi، تم مسح بعض البيانات عن طريق الخطأ، مما أدى إلى تعديل البيانات المجاورة، مما تسبب في عدم اتساق نتائج الترميز وفك الترميز.
بالنسبة لثغرات مترجم Solidity، يُنصح المطورون وفرق الأمان باتخاذ التدابير التالية:
إلى المطورين:
إلى موظفي الأمان:
بعض الموارد المفيدة:
من خلال فهم خصائص ثغرات مترجم Solidity واتخاذ التدابير المناسبة، يمكن تقليل خطر المخاطر الأمنية الناتجة عن مشاكل المترجم في العقود الذكية بشكل فعال.