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

Automatic, Expressive, and Scalable Fuzzing with Stitching

تقدم الورقة البحثية STITCH، وهو نظام فحص آلي يجمع بين التنميط الساكن وتتبع الحالة الديناميكية لـ "حياكة" قيود استخدام واجهة برمجة التطبيقات (API) ضمن تسلسلات مُجمعة أثناء التشغيل، مما يتيح اكتشافاً للأخطاء يتسم بالقابلية للتوسع والتعبير ويتفوق بشكل كبير على الأدوات المتطورة في التغطية، والدقة، وعدد الثغرات الأمنية الجديدة التي تم العثور عليها.

المؤلفون الأصليون: Harrison Green, Fraser Brown, Claire Le Goues

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

المؤلفون الأصليون: Harrison Green, Fraser Brown, Claire Le Goues

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

تخيل أنك تحاول إيجاد كل الطرق الممكنة التي يمكن بها لآلة معقدة (مثل مكتبة برمجية) أن تتعطل. لديك روبوت مختبِر ("fuzzer") مهمته هي وخز الآلة بمدخلات عشوائية ليرى ما إذا كانت ستنهار.

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

تقدم هذه الورقة البحثية طريقة جديدة لتعليم الروبوت كيفية بناء هياكل صالحة حتى يتمكن من إيجاد الشقوق الحقيقية. لقد أطلقوا على هذه التقنية اسم "Stitching" (الخياطة/الربط).

إليك تفصيل ذلك باستخدام تشبيهات بسيطة:

1. المشكلة: "الرمي العشوائي" مقابل "كتيب القواعد"

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

2. الحل: "Stitching" (الربط)

يقترح المؤلفون حلاً وسطاً. بدلاً من إعطاء الروبوت وصفة ثابتة أو حقيبة من قطع الليجو العشوائية، يعطونه صندوقاً من قطع "ليجو" مسبقة الصنع وصالحة للاستخدام (تسمى "blocks" أو كتل).

  • الكتل (The Blocks): كل كتلة هي قطعة صغيرة صالحة من الكود تقوم بشيء واحد بشكل صحيح (مثلاً: "إنشاء مستند").
  • الربط (The Stitching): يُسمح للروبوت بالتقاط هذه الكتل وربطها ببعضها بأي ترتيب يريده، طالما أن القطع تتناسب مع بعضها.
  • الغراء السحري (Typestate): هذا هو الابتكار الأكبر في الورقة. عادةً ما تتعلق تعليمات "الليجو" بالشكل فقط (قطعة 2×4 تناسب ثقباً 2×4). لكن البرمجيات الحقيقية لديها قواعد تتعلق بـ "الحالة" (State). على سبيل المثال: "لا يمكنك طلاء الجدار قبل بنائه"، أو "لا يمكنك فتح الباب إذا فُقد المفتاح".
    • أضافت الورقة "غراءً سحرياً" (يسمى extrinsic typestate) يتتبع تاريخ الكائنات.
    • إذا حاول الروبوت لصق كتلة "طلاء" بكتلة "جدار" لم يتم بناؤه بعد، سيقول الغراء السحري: "مهلاً، توقف! هذا الجدار غير موجود بعد!"، وسيتوقف الروبوت بأدب عن تلك المحاولة المحددة دون أن يتسبب في انهيار الآلة بالكامل.
    • هذا يسمح للروبوت باستكشاف ملايين التوليفات دون إضاعة الوقت في تجربة أشياء مستحيلة.

3. العقل المدبر: وكيل النموذج اللغوي الكبير (STITCH)

كتابة هذه "الكتل" و"القواعد" يدوياً أمر صعب. إنه يشبه محاولة كتابة دليل تعليمات لمركبة فضائية وأنت معصوب العينين.

هنا يأتي دور STITCH، وهو النظام الموصوف في الورقة. يستخدم نموذجاً لغوياً كبيراً (ذكاء اصطناعي بارع جداً في قراءة الكود والوثائق) ليعمل بمثابة "مهندس معماري فائق".

  • الخطوة 1: المهندس يقرأ المخططات. يقوم الذكاء الاصطناعي بمسح وثائق البرنامج وتعليقات الكود لفهم القواعد.
  • الخطوة 2: يبني الكتل. يقوم تلقائياً بكتابة الكود الخاص بـ "قطع الليجو".
  • الخطوة 3: يعمل كمفتش مراقبة الجودة. يقوم الذكاء الاصطناعي بتشغيل الروبوت. إذا انهار النظام، ينظر الذكاء الاصطناعي إلى الانهيار ويتساءل: "هل أعطيت الروبوت قاعدة خاطئة؟ أم أنني وجدت خطأً حقيقياً؟"
    • إذا كان خطأً في القاعدة، يقوم الذكاء الاصطناقي بإعادة كتابة كتاب القواعد (إصلاح المواصفات).
    • إذا كان خطأً حقيقياً، فإنه يكتب تقريراً للبشر.

4. النتائج: إيجاد الشقوق المخفية

اختبر الباحثون هذا النظام على 1,365 مشروعاً مختلفاً مفتوح المصدر (مثل البرمجيات التي تشغل متصفح الويب، مشغلات الفيديو، والطابعات).

  • بطاقة النتائج: مقارنة بالأدوات الرائدة الأخرى، وجد نظام STITCH 30 خطأً حقيقياً وخطيراً، بينما لم تجد الأدوات الأخرى مجتمعة سوى 10 أخطاء.
  • الكفاءة: كان أسرع وأرخص بكثير. بينما قضت الأدوات الأخرى ساعات وآلاف الدولارات لمحاولة اختبار الكود، قام STITCH بذلك في دقائق وبسعر زهيد جداً.
  • التأثير في العالم الحقيقي: وجدوا 131 خطأً جديداً في 102 مشروعاً مختلفاً. الكثير من هذه الأخطاء كانت ثغرات أمنية خطيرة (مثل تمكن مخترق عن بُعد من السيطرة على طابعة) كانت مختبئة لسنوات. وقد أبدى القائمون على هذه المشاريع سعادتهم، حيث قاموا بإصلاح 73 منها على الفور.

الملخص

فكر في Stitching كمنح الروبوت دليلاً تعليمياً ذكياً ذاتي التصحيح بدلاً من عصابة على عينيه.

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

تثبت الورقة أنه من خلال الجمع بين الذكاء الاصطناعي (لكتابة القواعد) و Stitching (لاتباع القواعد ديناميكياً)، يمكننا تلقائياً إيجاد أخطاء برمجية فات البشر والأدوات القديمة إيجادها لسنوات.

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

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

جرّب Digest →