Guiding Symbolic Execution with Static Analysis and LLMs for Vulnerability Discovery
تقدم الورقة البحثية SAILOR، وهو إطار عمل مبتكر يعمل على أتمتة بناء أدوات التنفيذ الرمزي (symbolic execution harness) عبر دمج التحليل الساكن لاستهداف الثغرات الأمنية مع النماذج اللغوية الكبيرة (LLMs) للتوليف التكراري للمشغلات (driver synthesis)، مما مكن من اكتشاف 379 ثغرة أمنية غير معروفة سابقاً تتعلق بسلامة الذاكرة عبر 10 مشاريع ضخمة بلغات C/C++ حيث فشلت الأطر المرجعية الحالية.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل أنك محقق يحاول العثور على فخاخ مخفية في قلعة ضخمة وقديمة (برمجية برمجية ضخمة). لديك ثلاث أدوات قوية، ولكن لكل منها عيب رئيسي بمفردها:
- محلل السكون (قارئ الخرائط): يمكن لهذه الأداة مسح القلعة بأكملة في ثوانٍ وتحديد 10,000 بقعة تبدو مشبوهة. لكنها سيئة جدًا في فهم السياق؛ فهي تضع علامات على كل شيء، من طوبة مرتخية إلى جدار كامل، مما يخلق جبلًا من الإنذارات الكاذبة.
- المنفذ الرمزي (المختبر الفائق): هذا روبوت يمكنه السير عبر كل ممر ممكن في القلعة في وقت واحد ليرى ما إذا كان الفخ سيعمل بالفعل. إنه دقيق للغاية. ومع ذلك، لا يمكنه البدء في المشي حتى تعطيه بابًا محددًا للدخول منه، وخريطة للأثاث، وقائمة بالقواعد. كتابة هذه التعليمات يدويًا لقلعة مكونة من 1.8 مليون سطر يستغرق سنوات.
- النموذج اللغوي الكبير (المتدرب العبقري): هذا ذكاء اصطناعي فائق الذكاء، يعرف كيفية كتابة الكود ويفهم تخطيط القلعة. لكن إذا سألته فقط: "ابحث عن الفخاخ"، فقد يهلوس (يخترع أشياء) أو يخطئ في التقدير لأنه لا يستطيع فعليًا "السير" في الممرات لإثبات وجود فخ.
المشكلة:
لسنوات، ظل العثور على الأخطاء البرمجية العميقة والمخفية عالقًا في عنق زجاجة. أنت بحاجة إلى المختبر الفائق (التنفيذ الرمزي) لإثبات أن الخطأ حقيقي، لكنك لا تستطيع استخدامه لأنك لا تستطيع كتابة التعليمات (الحامل/Harness) بالسرعة الكافية.
الحل: "Sailor"
قام المؤلفون بإنشاء نظام يسمى Sailor يعمل كفريق تحقيق مثالي، حيث يجمع بين هذه الأدوات الثلاث في خط إنتاج سلس. فكر في الأمر كسباق تتابع من ثلاث مراحل:
المرحلة 1: المستكشف (التحليل الساكن)
بدلاً من طلب من الذكاء الاصطناعي التخمين أين يبحث، يقوم قارئ الخرائط (التحليل الساكن) بمسح الكود أولاً. هو لا يحاول إثبات وجود الخطأ بعد؛ بل يقول فقط: "مهلًا، انظر إلى السطر 2699 في هذا الملف. شخص ما يقوم بنسخ البيانات دون التحقق من الحجم. هذا يبدو خطرًا."
- التشبيه: يشبه الأمر حارس أمن يسلط كشافًا ضوئيًا على باب محدد ومشبوه ويسلم ملاحظة للشخص التالي: "افحص هذا الباب. قد يكون مفتوحًا."
المرحلة 2: المعماري والبناء (النموذج اللغوي الكبير + التنفيذ الرمزي)
هذا هو الجزء السحري. يأخذ المتدرب العبقري (النموذج اللغوي الكبير) تلك الملاحظة ويحاول بناء "غرفة اختبار" (حامل/Harness) ليرى ما إذا كان الباب سيفتح بالفعل.
- الصراع: يبني المتدرب غرفة، لكن ينقصها جدار أو بها مقبض باب خاطئ. يحاول المختبر الفائق (التنفيذ الرمزي) الدخول، فيصطدم بجدار ويقول: "خطأ: مقبض الباب مفقود."
- الإصلاح: يقرأ المتدرب الخطأ، ويصلح الغرفة، ثم يحاول مرة أخرى. يفعل ذلك مرارًا وتكرارًا (التحسين التكراري)، ويتعلم من كل خطأ، حتى يبني غرفة اختبار مثالية تؤدي تمامًا إلى الباب المشبوه.
- الاختبار: بمجرد بناء الغرفة، يمشي المختبر الفائق من خلالها. إذا وجد فخًا (خطأ)، فهو لا يكتفي بالقول "أظن ذلك"، بل ينتج مفتاحًا (مدخلًا ملموسًا) يثبت أن الفخ يعمل.
المرحلة 3: التحقق من الواقع (التحقق الملموس)
المختبر الفائق رائع، ولكن أحيانًا يضيع في عالم الأحلام. للتأكد بنسبة 100%، يأخذ الفريق المفتاح الذي صنعه المختبر الفائق ويجربونه على القلعة الحقيقية غير المعدلة.
- التشبيه: يسلمون المفتاح لحارس بشري ويقولون له: "جرب هذا المفتاح على الباب الحقيقي." إذا فتح الباب وانطبق الفخ، مبروك! إنه ثغرة أمنية حقيقية. إذا لم يعمل المفتاح على الباب الحقيقي، فقد كان إنذارًا كاذبًا، ويتم استبعاده.
لماذا يعد هذا أمرًا مهمًا؟
اختبر الفريق نظام Sailor على 10 مشاريع برمجية ضخمة وحقيقية (مثل الأدوات التي تشغل الإنترنت، ومعالجة الصور، والأمن).
- النتيجة: وجد Sailor 379 خطأً أمنيًا جديدًا تمامًا وغير معروف سابقًا (مشكلات تتعلق بسلامة الذاكرة).
- المقارنة: عندما قارنوا Sailor بالطرق الأخرى:
- استخدام الذكاء الاصطناعي وحده لم يجد سوى القليل من الأشياء الحقيقية.
- استخدام المختبر الفائق وحده مع تعليمات يكتبها البشر لم يجد سوى القليل (لأن البشر بطيئون جدًا في كتابة التعليمات لكل شيء).
- Sailor كان أكثر فعالية بـ 30 مرة من الطريقة التالية الأفضل.
الخلاصة
يحل Sailor مشكلة "التوسع". فهو يستخدم قارئ الخرائط لتضييق نطاق البحث، والمتدرب العبقري لبناء بيئة الاختبار تلقائيًا، والمختبر الفائق لإثبات أن الخطأ حقيقي، كل ذلك مع استخدام تحقق من الواقع لضمان عدم تسلل أي إنذارات كاذبة.
إنه يشبه أتمتة عملية البحث عن إبرة في كومة قش بالكامل: بدلاً من شخص واحد يبحث لساعات، لديك روبوت يجد كومة القش، ومساعد ذكي يصنع مغناطيسًا، واختبار نهائي للتأكد من أن المغناطيس قد التقط إبرة بالفعل.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.