Quality-Assured Fuzz Harness Generation via the Four Principles Framework
تقدم هذه الورقة البحثية QuartetFuzz، وهو نظام ذاتي يعتمد على النماذج اللغوية الكبيرة (LLM) لضمان صحة أدوات الفحص (fuzz harnesses) عبر تطبيق إطار عمل مبتكر قائم على "المبادئ الأربعة" (صحة المنطق، والامتثال لبروتوكول واجهة برمجة التطبيقات، واحترام الحدود الأمنية، وكفاية نقاط الدخول) لتوليد الأدوات والتحقق منها وإصلاحها، مما يؤدي إلى اكتشاف أخطاء عالية الجودة مع معدل منخفض من الإيجابيات الكاذبة عبر لغات برمجة متعددة.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
إليك شرح لورقة بحث "توليد جسور الفحص المضمونة الجودة عبر إطار العمل القائم على المبادئ الأربعة" باستخدام لغة بسيطة وتشبيهات إبداعية.
المشكلة الكبرى: "المترجم السيئ"
تخيل أن لديك خزنة معقدة للغاية وعالية الأمان (مكتبة برمجية) وتريد اختبار نقاط ضعفها. أنت توظف لصاً محترفاً (أداة فحص أو fuzzer) لمحاولة اقتحامها. هذا اللص بارع في رمي الصخور والأسلاك والرمال العشوائية على الخزنة ليرى ما إذا كان أي منها سيؤدي إلى كسرها.
ومع ذلك، لا يمكن للص اللص أن يتقدم ببساطة نحو باب الخزنة؛ بل يحتاج إلى مترجم (fuzz harness) ليحول صخوره العشوائية إلى حركات محددة مثل تدوير المفتاح أو سحب المقبض، وهي الحركات التي تفهمها الخزنة بالفعل.
المشكلة هي: معظم المترجمين سيئون.
غالباً ما يسيئون فهم التعليمات. قد يحاولون تدوير المفتاح قبل أن يتم تركيب القفل حتى، أو قد يسحبون المقبض بينما لا يزال الباب ملحوماً. عندما "تتعطل" الخزنة بسبب هذا، يعتقد فريق الأمن: "رائع! لقد وجدنا ثغرة!"، ولكن في الواقع الخزنة سليمة؛ المترجم هو من أخطأ فحسب. هذا يؤدي إلى هدر هائل للوقت و"إنذارات كاذبة".
الحل: QuartetFuzz و"المبادئ الأربعة"
قام المؤلفون ببناء نظام جديد يسمى QuartetFuzz. بدلاً من مجرد طلب كتابة مترجم من ذكاء اصطناعي والأمل في الحصول على نتيجة جيدة، أنشأوا نظام مراقبة جودة صارم يعتمد على أربعة مبادئ. فكر في هذا كـ "بناء ماهر" يقوم بفحص المترجم قبل أن يلتقي باللص.
إليك القواعد الأربعة التي يجب أن يتبعها المترجم:
- صحة المنطق (P1): "لا تتعثر بقدميك."
- التشبيه: لا ينبغي للمترجم أن يحتوي على أخطاء داخلية خاصة به. لا ينبغي له أن ينسى وضع السلم بعد تسلقه (تسريب الذاكرة) أو يحاول المشي عبر جدار بناه بنفسه. إذا تعطل المترجم لأنه كان غير متزن، فهذا ليس خطأ في الخزنة، بل هو خطأ في المترجم.
- الامتثال لبروتوكول واجهة برمجة التطبيقات (P2): "اتبع الوصفة بدقة."
- التشبيه: تتطلب بعض الخزنات وضع المفتاح قبل تدوير المقبض. إذا قمت بتدوير المقبض أولاً، فسوف يتعطل الآلية. يجب أن يعرف المترجم الترتيب الدقيق للعمليات، ولا يمكنه تخطي الخطوات أو القيام بها بتسلسل خاطئ.
- احترام الحدود الأمنية (P3): "ابقَ في الردهة."
- التشبيه: تحتوي الخزنة على ردهة عامة حيث يمكن لأي شخص محاولة الاقتحام، ولكن لديها أيضاً غرفة خلفية سرية حيث يعمل المهندسون. إذا تسلل المترجم إلى الغرفة الخلفية لاختبار الخزنة، فهذا يعتبر غشاً. نحن نهتم فقط بما إذا كان المدخل العام يمكن اختراقه. إذا كسر المترجم الباب الخلفي، فهذا لا يعتبر ثغرة أمنية حقيقية.
- كفاية نقطة الدخول (P4): "اختر الباب الصحيح."
- التشبيه: لا تحاول الاقتحام عبر فتحة التهوية الصغيرة بينما الباب الرئيسي هو نقطة الضعف. يجب على المترجم اختيار أهم نقاط الدخول وأكثرها خطورة والتي تهم الأمن فعلياً، بدلاً من اختبار وظيفة مساعدة غير ضارة.
كيف يعمل: حلقة "التحقق الذاتي"
يستخدم QuartetFuzz وكيل ذكاء اصطناعي يعمل كمحرر شديد الحذر. قبل أن يُستخدم المترجم لاختبار الخزنة الحقيقية، يقوم الذكاء الاصطناعي بإجراء اختبار "استقصاء عدائي" خاص:
- الذكاء الاصطناعي يكتب المترجم.
- الذكاء الاصطناعي يحاول كسر مترجمه الخاص. يسأل نفسه: "إذا أعطيت هذا المترجم مدخلاً غريباً، هل سيتعثر بقدميه (P1) أو يخطئ في الترتيب (P2)؟"
- إذا انكسر: يقوم الذكاء الاصطناعي بإصلاح المترجم فوراً.
- إذا نجح: عندها فقط يتم إرسال المترجم إلى أداة الفحص الحقيقية لاختبار البرنامج.
يحدث هذا قبل بدء أي اختبار حقيقي، مما يضمن أنه عندما يحدث عطل، فمن المؤكد تقريباً أنه خطأ حقيقي في البرنامج، وليس خطأ في نص الاختبار.
النتائج: إنذارات كاذبة أقل، أخطاء حقيقية أكثر
اختبر الفريق هذا النظام على 23 مشروعاً مختلفاً من المشاريع مفتوحة المصدر (مثل مكتبات الصور، أدوات التشفير، وخوادم الويب).
- "التدقيق": أخذوا 586 مترجماً موجوداً كتبها بشر وأجروا عليها فحص المبادئ الأربعة الخاص بهم. وجدوا 53 خطأً كانت مختبئة في وضح النهار. أدى إصلاح هذه الأخطاء إلى الكشف عن خطأين حقيقيين في البرمجيات كانا موجودين منذ أكثر من 25 عاماً (أحدهما في OpenSSL) لأن المترجمين السيئين كانوا يحجبونهما بالخطأ.
- "التوليد": عندما استخدموا QuartetFuzz لإنشاء مترجمين جدد، وجدوا 42 خطأً حقيقياً (بما في ذلك 3 ثغرات أمنية رئيسية معروفة باسم CVEs).
- معدل "الإنذار الكاذب": معظم الأدوات الآلية لديها معدل إنذار كاذب يقترب من 94% (بمعنى أن 94 من كل 100 عطل هي مجرد خطأ من المترجم). خفض QuartetFuzz هذه النسبة إلى 4.8%.
الخلاصة
تجادل الورقة البحثية بأنه في عصر الذكاء الاصطناعي، يمكننا توليد الكود بسرعة كبيرة، لكن السرعة بدون جودة أمر خطير. من خلال إجبار الذكاء الاصطناعي على مراجعة عمله مقابل هذه المبادئ الأربعة قبل البدء في الاختبار، فإننا نتوقف عن إضاعة الوقت في الأخطاء الوهمية ونبدأ في العثور على الثغرات الحقيقية والخطيرة في برمجياتنا.
الأمر يشبه توظيف حارس أمن يتحقق من بطاريات مصباحه اليدوي وزيه الرسمي قبل أن يبدأ في دوريته في المبنى، لضمان أنه عندما يبلغ عن خرق، فهو خرق حقيقي.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.