← أحدث الأبحاث
💻 computer science

From TinyGo to gc Compiler: Extending Zorya's Concolic Framework to Real-World Go Binaries

تقدم هذه الورقة امتداداً لإطار عمل التنفيذ الرمزي-الكونكليتيك (concolic execution) الخاص بـ Zorya لدعم ملفات ثنائية لغة Go متعددة الخيوط والمجمعة باستخدام المجمع القياسي gc، مما يتيح اكتشاف الثغرات الأمنية الواقعية في مشاريع إنتاجية مثل Kubernetes وGo-Ethereum عبر استعادة حالات الخيوط، وتحييد الاستباق وقت التشغيل، وتوظيف تحليل المسار الغشائي (overlay path analysis).

المؤلفون الأصليون: Karolina Gorna, Nicolas Iooss, Yannick Seurin, Rida Khatoun, Keith Makan

نُشر 2026-05-06
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Karolina Gorna, Nicolas Iooss, Yannick Seurin, Rida Khatoun, Keith Makan

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل أنك مفتش أمني تحاول العثور على فخاخ مخفية في مصنع ضخم ومعقد. هذا المصنع هو في الواقع برنامج مكتوب بلغة البرمجة Go.

لفترة طويلة، امتلك مفتشو الأمن أداة خاصة تسمى Zorya كانت رائعة في فحص المصانع الصغيرة والبسيطة (ملفات "TinyGo" الثنائية). لكن المصانع الحقيقية التي تستخدمها الشركات الكبرى مثل Kubernetes وEthereum ضخمة، وفوضوية، وتعمل على العديد من العمال (الخيوط/threads) في نفس الوقت. لم تستطع أداة Zorya القدية التعامل مع هذه المصانع الكبيرة؛ حيث كانت ترتبك بسبب الضجيج والتعقيد.

هذه الورقة البحثية تتحدث عن تطوير Zorya لتتمكن أخيراً من فحص مصانع Go الحقيقية متعددة العمال. إليك كيف فعلوا ذلك، مشروحاً ببساة:

1. المشكلة: "المصنع المزدحم"

يقوم مترجم Go القياسي (المسمى gc) ببناء برمجيات تبدأ بتعيين فريق كامل من العمال غير المرئيين (خيوط نظام التشغيل/OS threads) لإدارة العمل. كما يوجد لديه "شرطي مرور" (وقت التشغيل/runtime) يمكنه إيقاف أي عامل في أي لحظة للسماح لشخص آخر بالمرور أولاً.

  • الأداة القديمة: كانت Zorya تُستخدم لفحص المصانع الهادئة ذات العامل الواحد. وعندما حاولت فحص المصانع المزدحمة ومتعددة العمال، لم تستطع معرفة من يفعل ماذا أو أين يقف العمال.
  • الهدف: جعل Zorya ذكية بما يكفي لإيقاف الفوضى، وأخذ لقطة لكل عامل، ثم فحص العمل بعناية دون أن تضيع.

2. الحل: ثلاث قدرات خارقة جديدة

منح المؤلفون Zorya ثلاث حيل جديدة للتعامل مع المصانع الكبيرة:

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

  • "مرآة ماذا لو" (تحليل مسار التراكب):
    عادةً، عندما يصل عامل إلى مفترق طرق، يختار مساراً واحداً ويسلكه، بينما يتم تجاهل المسار الآخر.

    • الطريقة القديمة: كانت Zora تقوم بفحص المسار الذي اتخذه العامل بالفعل فقط.
    • الطريقة الجديدة: تنشئ Zora "مرآة شبحية" للمصنع. عندما يختار العامل المسار الأيسر، ترسل Zora "عاملاً شبحياً" في المسار الأيمن لبضع خطوات فقط. إنها تتحقق مما إذا كان هذا المسار يحتوي على فخ (مثل حفرة في الأرض أو أداة مكسورة) دون أن تسلكه فعلياً. إذا وجد الشبح فخاً، تطلق Zora الإنذار. تسمى هذه العملية "النسخ عند الكتابة" (Copy-on-Write): فهي تنسخ فقط الأجزاء التي يلمسها الشبح، مما يوفر قدراً هائلاً من الطاقة.
  • كاشف "الفخ الصامت":
    بعض الفخاخ لا تصدر ضجيجاً عالياً (مثل الانهيار أو التوقف المفاجئ/panic). على سبيل المثال، قد يصبح الرقم كبيراً جداً لدرجة أنه "يلتف حول نفسه" ويصبح صغيراً مرة أخرى، مما يؤدي إلى كسر العمليات الحسابية بصمت. الأدوات الأخرى تفوت هذه الحالات لأنها تبحث فقط عن الانهيارات الصاخبة. تستخدم Zora عقلاً رياضياً فائق الذكاء (يسمى محلل SMT) للقيام بالحسابات في عقلها. يمكنها القول: "مهلاً، إذا أصبح هذا الرقم أكبر، فسوف يكسر الرياضيات بصمت"، حتى لو لم يتسبب البرنامج في انهيار.

3. الاختبار: العثور على أخطاء حقيقية

اختبر الفريق نسخة Zora المطورة هذه على 11 ثغرة أمنية حقيقية وُجدت في برمجيات شهيرة مثل Kubernetes وGo-Ethereum وCoreDNS. وقارنوا Zora بأدوات أخرى مثل الفاحصات الساكنة (التي تقرأ الكود مثل مدقق القواعد)، وأدوات الفحص العشوائي (fuzzers) (التي ترمي بيانات عشوائية على البرنامج)، وغيرها من الماسحات الأمنية.

النتائج:

  • وجدت Zora سبعة من أصل 11 خطأً.
  • الفوز "الصامت": أحد الأخطاء التي وجدتها Zora كان "تجاوز السعة الصحي الصامت" (silent integer overflow). لقد كان خطأً حسابياً لم يتسبب في انهيار البرنامج ولم يطلق إنذاراً. لم تجد أي أداة أخرى هذا الخطأ إلا إذا أخبرهم شخص ما يدوياً بما يبحثون عنه بالضبط. وجدت Zora هذا الخطأ تلقائياً.
  • المقايضة: Zora أبطأ من أدوات "الرمي العشوائي للبيانات" (fuzzers). فبينما قد يجد الـ fuzzer خطأً في ثوانٍ، تستغرق Zora حوالي 16 دقيقة للعثور على خطأ. ومع ذلك، لا تحتاج Zora إلى إنسان لكتابة نص اختبار محدد لكل دالة؛ فهي تقوم بتحليل الملف الثنائي مباشرة.

4. الخلا-صة

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

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

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →