ai-ml

المناظرة متعددة الوكلاء لفرز الثغرات الأمنية

قبل بضعة أشهر أغلقنا اكتشافًا كإيجابي زائف. كانت نقطة نهاية تبدو ضعيفة أمام SSRF: تقبل عنوان URL من المستخدم، وتعالجه في الواجهة الخلفية، وتُرجع المحتوى. وضعت خط أنابيب النموذج الواحد لدينا علامة عليها بأنها "على الأرجح إيجابي زائف — يبدو أن عنوان URL يتم التحقق منه مقابل قائمة سماح". تركناه يمر.

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

لماذا النموذج الواحد فارز سيئ

  • التملق نحو السياق. يُظهر Sharma et al. (2023) أن النماذج الحديثة توافق حتى عندما يكون المستخدم مخطئًا موضوعيًا.
  • التثبيت على الفرضية الأولى. يسمي Liang et al. (2023) هذا Degeneration-of-Thought: بمجرد تحديد حل معقول، لا يولد النموذج بدائل حقيقية.
  • غياب الفحص العدائي. الفارز البشري يفكر "كيف سأكسر هذا التحقق؟". أما LLM في zero-shot فيفكر "هل هذا معقول؟".

يخفف الاتساق الذاتي (Wang et al., 2022) الضوضاء لكن ليس التحيز المنهجي.

المناظرة متعددة الوكلاء: Du et al. (2023)

يقترح Improving Factuality and Reasoning through Multiagent Debate: تستجيب عدة نسخ بشكل مستقل؛ ثم يتلقى كل وكيل ردود الآخرين ويولد ردًا جديدًا مشروطًا. يتكرر ذلك لـ N جولات. الناتج: إجماع أو تصويت.

المثير للاهتمام أنه لا يتطلب fine-tuning، ولا قضاة خارجيين، ولا بنية خاصة. إنه prompting. التحسن يأتي من حقيقة أن كل وكيل، عند رؤية حجج معاكسة، يراجع أجزاء من تفكيره التي كان يعتبرها مسلمًا بها في عزلته.

تنفيذنا: ثلاثة أدوار، ثلاث جولات، حكم واحد

  • Gandalf — الوضع النقدي. يفترض أن الاكتشاف حقيقي ويبني أسوأ سيناريو للاستغلال.
  • Beorn — الوضع الاستدلالي. يستدل فقط على الأدلة الملموسة: استجابات HTTP، الرؤوس، الجسم، التتبعات. نمنعه من استنتاج سلوك لم يتم إثباته.
  • Gwaihir — الوضع التقني. يستدل على البنية: stack، الإطار، الدفاعات المعروفة، سياق القطاع.

يتلقى الثلاثة الحزمة نفسها. يولدون حكمًا مستقلًا في الجولة 1. في الجولتين 2-3 يرى كل منهم الآخرين وينتج نسخة منقحة. يصدر وكيل قاضٍ الإغلاق: true_positive، false_positive، needs_manual.

إذا تقارب الثلاثة بعد الجولة 2، نتخطى الجولة 3. إذا استمر الخلاف بعد الجولة 3، نقوم بالتصعيد إلى إنسان. هذه القاعدة متعمدة — الخلاف المستمر بين الأدوار المتعامدة هو إشارة مفيدة.

مثال متتبع: مرشح SSRF

الجولة 1 — أحكام مستقلة:

Gandalf: "SSRF محتمل. Server: gunicorn مختلف عن الواجهة الأمامية (nginx) يشير إلى أن الواجهة الخلفية تقوم بالطلب. ?url=http://169.254.169.254/ أعطى 403، لكن ?url=http://localhost:8080 أعطى 200 مع HTML. true positive بثقة عالية."

Beorn: "طلبان: واحد مع التجاوز (200)، وآخر ضد البيانات الوصفية (403). قد يكون 403 قائمة سماح أو جدار حماية السحابة. needs manual."

Gwaihir: "stack Python + gunicorn خلف nginx على AWS. الـ 403 متسق مع IMDSv2 المفروض، وليس مع تخفيف نقطة النهاية. true positive محتمل."

الجولة 2:

Gandalf: "Beorn محق في أن 403 ليس دليلًا على التخفيف. لكن 200 ضد localhost:8080 يثبت الوصول الداخلي. أحتفظ بـ true positive."

Beorn: "أعيد النظر. تتضمن استجابة 200 HTML من لوحة إدارة داخلية. أغير إلى true positive بثقة عالية."

Gwaihir: "أتفق. حمولة خدعة @ ستمر أيضًا عبر قائمة السماح. أوصي بإضافة الاختبار إلى التقرير."

التقارب في الجولة 2. القاضي: true_positive. تقرير بثلاثة خطوط أدلة مميزة.

المقاييس

3 أشهر، 1,847 اكتشافًا (412 ground-truth):

  • Precision على true positives: 0.71 (واحد) → 0.89 (مناظرة).
  • Recall: 0.68 → 0.83. Recall أهم من precision.
  • الكمون الوسيط: 8 ثوانٍ → 47 ثانية لكل اكتشاف.
  • تكلفة الرموز: ~4.2 ضعف النموذج الواحد.
  • التصعيد إلى الإنسان: 3% → 11%. تكتشف المناظرة المزيد من الحالات الغامضة حقًا.

متى لا تستخدم المناظرة

  • شدة منخفضة مع أدلة واضحة (رؤوس أمان مفقودة). يكفي فحص حتمي.
  • قرارات ثنائية بسيطة (هل هذا API key؟). Regex أو single-call مع critique.
  • خطوط أنابيب عالية التردد. تتراكم التكلفة.

مقارنة سريعة

CoT-SC: جيد للضوضاء، سيئ للتحيز المنهجي.
Tree of Thoughts: ممتاز للمساحات المهيكلة (Game of 24). مبالغ فيه للفرز.
Single-call مع self-critique: النموذج نفسه ينتقد الفرضيات نفسها، ينهار إلى نقطة ثابتة نفسها.
المناظرة متعددة الوكلاء: نفوز عندما تكون تعددية الأدوار ضرورية وتكون الأدلة غامضة.

الخاتمة

SSRF للعميل لم يكن ينبغي أن يُغلق عن طريق الخطأ أبدًا. ما تعلمناه ليس أن LLMs فارزون سيئون — بل أن LLM واحدًا، مهما كان جيدًا، له طريقة واحدة فقط للنظر. فرض التعددية من خلال أدوار محددة جيدًا ليس أنيقًا؛ إنه هندسة عملية. إذا كان خط الأنابيب الخاص بك يغلق الاكتشافات الغامضة دون مناظرة، فمن المحتمل أنك تترك ثغرات أمنية حقيقية تفلت.

المراجع