FunFuzz: An LLM-Powered Evolutionary Fuzzing Framework
يُعد FunFuzz إطار عمل للتفتيش التطوري متعدد الجزر يستفيد من النماذج اللغوية الكبيرة مع مطالبات تكيفية موجهة بالتغذية الراجعة وهجرة دورية للمرشحين للتغلب على حساسية المطالبات وتباين أخذ العينات، مما يحقق تغطية فائقة للمترجمات ويكتشف مدخلات فريدة أكثر تسبب الفشل مقارنة بالنهج السابقة القائمة على النماذج اللغوية الكبيرة.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل أنك تحاول العثور على فخاخ مخفية في متاهة ضخمة ومعقدة. هذه المتاهة هي المترجم (Compiler) — وهو البرنامج الذي يترجم الكود المكتوب بلغة البشر إلى تعليمات يمكن للحاسوب تشغيلها بالفعل. إذا احتوى المترجم على خطأ برمي (Bug)، فقد يتوقف عن العمل أو يعطي إجابات خاطئة، مما قد يؤدي إلى تعطل كل ما بُني فوقه.
لعقود من الزمن، استخدم الخبراء أدوات "الفحص العشوائي" (Fuzzers) للعثور على هذه الأخطاء. تخيل أن أداة الفحص العشوائي هي روبوت يلقي ملايين الحالات الاختبارية العشوائية على المتاهة ليرى ما إذا كان أي شيء سينكسر. لكن المترجمات الحديثة معقدة للغاية، بحيث أن الرمي العشوائي غالباً ما يخطئ الوصول إلى الزوايا العميقة والمراوغة.
مؤخراً، بدأ الناس في استخدام الذكاء الاصطناعي (نماذج اللغات الكبيرة) لكتابة هذه الحالات الاختبارية. الذكاء الاصطناعي ذكي ويمكنه كتابة كود يبدو واقعياً جداً. ومع ذلك، يجادل البحث بأن استخدام الذكاء الاصناعي بهذه الطريقة يواجه مشكلة: إنه يقع في فخ التكرار (Getting stuck in a rut). إذا طلبت من الذكاء الاصطناعي كتابة كود، فقد يستمر في توليد نفس الأنواع الخمسة من الجمل مراراً وتكراراً، ولكن بكلمات مختلفة فقط. إنه يتوقف عن استكشاف أجزاء جديدة من المتاهة.
إليك FunFuzz.
ابتكر المؤلفون نظاماً جديداً يسمى FunFuzz لإصلاح هذا الأمر. وإليك كيف يعمل، باستخدام تشبيه بسيط:
1. استراتيجية "الجزر المتعددة" (Multi-Island Strategy)
تخيل أن لديك فريقاً من صائدي الكنوز يبحثون عن مدينة مفقودة.
- الطريقة القديمة (ذكاء اصطناعي واحد): ترسل صياداً واحداً. يبدأ في المشي، يجد مساراً، ويستمر في اتباعه. في النهاية، يصاب بالملل أو يعلق في حلقة مفرغة، ويتوقف عن إيجاد أشياء جديدة.
- طريقة FunFuzz: ترسل خمسة فرق منفصلة (تسمى "جزر"). كل فريق يبدأ من جزء مختلف تماماً في الغابة بخريطة وهدف مختلفين.
- الفريق (أ) طُلب منه البحث عن "الآثار القديمة".
- الفريق (ب) طُلب منه البحث عن "الكهوف المخفية".
- الفريق (ج) طُلب منه البحث عن "معابر الأنهار".
لأنهم يبدأون بتعليمات مختلفة، فإنهم لا يسلكون جميعاً نفس المسار. إنهم يستكشفون أجزاء مختلفة من المتاهة في وقت واحد.
2. نظام "الهجرة" (Migration System)
كل بضع ساعات، تلتقي الفرق عند نار التخييم.
- إذا وجد الفريق (أ) قطعة أثرية نادرة ورائعة حقاً (برنامجاً يجعل المترجم ينهار أو يتصرف بشكل غريب)، فإنهم لا يحتفظون بها لأنفسهم. بل يشاركون نسخة منها مع الفريق (ب) والفريق (ج).
- الأمر الحاسم: هم لا يطردون الفريق (ب) من معسكره. هم فقط يضيفون تلك القطعة الأثرية الجديدة إلى مجموعة الفريق (ب). بهذه الطو، يمكن للفريق (ب) استخدام تلك الفكرة الجديدة للتعمق أكثر، دون فقدان التقدم الذي أحرزوه بالفعل.
هذا يمنع المجموعة بأكملها من الوقوع في نفس الحلقة المفرغة مع السماح لأفضل الاكتشافات بالانتشار.
3. "درجة اللياقة" (Fitness Score) (كيف يعرفون ما هو جيد؟)
كيف يعرف الذكاء الاصطناعي أي حالة اختبارية هي الأفضل؟
- يقوم النظام بترجمة الكود الذي كتبه الذكاء الاصطناعي.
- يقوم بعدّ عدد الأسطر الجديدة من الكود الداخلي للمترجم نفسه التي لمستها تلك الحالة الاختبارية.
- إذا جعلت الحالة الاختبارية المترجم ينظر إلى جزء من كوده الداخلي لم يره من قبل، فإن هذه الحالة تحصل على درجة عالية.
- يختار النظام الحالات الاختبارية ذات الدرجات الأعلى لـ "توليد" الجيل التالي من الاختبارات، مما يؤدي باستمرار إلى تحسين عملية البحث.
ماذا وجدوا؟
اختبر الباحثون FunFuzz مقابل أدوات رفيعة المستوى أخرى (مثل Fuzz4All، الذي يستخدم الذكاء الاصطناعي ولكن بفريق واحد فقط، و Kitten، الذي يلقي الملايين من الطفرات العشوائية) على مترجمين رئيسيين هما: GCC و Clang.
- تغطية أفضل: وجد FunFuzz "أرضاً جديدة" داخل المترجمات أكثر من الأدوات الأخرى. لقد استكشف بعمق واتساع أكبر.
- مزيد من الأخطاء: خلال اختبارات مدتها 24 ساعة، وجد FunFuzz 119 خطأً فريداً تسببت في انهيار المترجمات أو فشلها داخلياً.
- تأثير في العالم الحقيقي: أكد المطورون وجود 80 من هذه الأخطاء.
- الكفاءة: على الرغم من أن FunFuzz لم يولد عدداً أكبر من البرامج الإجمالية مقارنة بالأدوات الأسرع، إلا أن البرامج التي ولدها كانت ذات جودة أعلى بكثير. لقد وجد المزيد من الأخطاء في الساعة الواحدة.
الخلا الخلاصة
FunFuzz يشبه رحلة بحث عن الكنز ذكية تستخدم فريقاً من المستكشفين بدلاً من عداء واحد. من خلال إبقاء الفرق منفصلة ولكن السماح لهم بمشاركة أفضل ما يجدونه، فإنه يتجنب الوقوع في حلقات مملة ويحفر بعمق أكبر بكثير في الآلات المعقدة للمترجمات الحديثة، ليجد أخطاءً تفوتها الطرق الأخرى.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.