SemanticVul: Evidence-Grounded Structured LLM Explanations
for Vulnerability Detection
يُعد SemanticVul إطار عمل قابلاً للتكرار للكشف عن الثغرات الأمنية في لغتي C/C++، حيث يستفيد من التفسيرات الدلالية المولدة محلياً والمستندة إلى أدلة لتحسين الدقة واستدعاء الفئات الأقلية بشكل كبير مقارنة بالنماذج المرجعية الحالية، مع التحقق بصرامة من الادعاءات من خلال مطابقة الكود الحتمية وتدقيق مجموعة البيانات.
المؤلفون الأصليون:Abdul Razak, Ihtesham Ul Islam, Rabia Khan
تُعد الثغرات البرمجية بمثابة الشقوق الخفية في العالم الرقمي، وهي أخطاء صغيرة في الكود تسمح للمهاجمين باختراق الأنظمة، أو سرقة البيانات، أو إحداث الفوضى. ولأن البرمجيات الحديثة تُكتب بأحجام هائلة، وغالباً بلغات مثل C وC++ التي تتميز بالقوة ولكنها عرضة لهذه الأخطاء، لا يمكن للخبراء البشريين قراءة كل سطر من الممكنات للعثور على نقاط الضعف. ولمواكبة ذلك، لجأ الباحثون إلى الذكاء الاصطناعي، وتحديداً النماذج اللغوية الكبيرة، وهي برامج حاسوبية مدربة على كميات هائلة من النصوص والأكواد لفهم الأنماط والمعاني. يمكن لهذه النماذج قراءة قطعة من البرمجيات وشرح ما تفعله، مما يوفر طريقة جديدة لرصد العيوب الخطيرة تلقائياً. ومع ذلك، ظهرت مشكلة كبيرة: فعندما تُطلب من هذه النماذج شرح كود معين، فإنها أحياناً تخترع تفاصيل ليست موجودة أو تكشف الإجابة بالخطأ قبل انتهاء التحليل، مما يجعل مساعدتها غير موثوقة للأعمال الأمنية الحرجة.
قام فريق من الباحثين في الجامعة الوطنية للعلوم والتكنولوجيا في باكستان بتطوير نظام جديد يسمى SemanticVul لحل هذه المشكلة. وبدلاً من الاعتماد على خدمات الذكاء الاصطناعي التجارية المكلفة التي تولد نصوصاً حرة وغير موثقة، يستخدم نظامهم نموذجاً مفتوح المصدر يعمل محلياً لإنتاج تفسيرات مهيكلة وقائمة على الأدلة. وقد بنى الباحثون مسار عمل (pipeline) يجب على الذكاء الاصطناعي فيه الإشارة إلى أسطر محددة من الكود ليدعم كل ادعاء يقدمه حول خطر أمني. وإذا لم يتمكن الذكاء الاصطناعي من العثور على الكود الذي يتحدث عنه، يقوم النظام باستبعاد ذلك الادعاء. ثم اختبروا هذا النهج على مجموعتين رئيسيتين من وظائف البرمجيات الواقعية، تُعرفان باسم Devign وReveal، لمعرفة ما إذا كان هذا النهج القائم على الأدلة والمدعوم بالبينات يمكنه العثور على ثغرات أكثر من التقنيات السابقة.
تظهر النتائج أن هذا النهج الدقيق الذي يضع الأدلة أولاً يعمل بشكل أفضل بكثير من الطرق القياسية المستخدمة حالياً. ففي مجموعة بيانات Reveal، التي تحتوي على عدد قليل جداً من الوظائف الضعيفة وسط الكثير من الوظائف الآمنة، نجح النظام الجديد في تحسين القدرة على إيجاد تلك الوظائف الخطيرة والنادرة من حوالي 40 بالمئة إلى 63 بالمئة. ويعد هذا تحسناً حاسماً لأن تفويت ثغرة في نظام واقعي يمكن أن يكون كارثياً. كما تمكن النظام من مضاعفة عدد المرات التي ربط فيها تحذيراته بشكل صحيح بقطع الكود الفعلية، مع تقليل عدد المرات التي قام فيها بالهلوسة أو اختراع مراجع للكود إلى النصف. ومن خلال إجبار الذكاء الاصطناعي على الالتزام بالحقائق الموجودة في الكود واستبعاد أي لغة قد تكشف الإجابة عن غير قصد، خلق الباحثون أداة أكثر موثوقية وفعالية للتحليل الأمني.
استكشف الباحثون أيضاً أفضل طريقة لدمج بيانات الكود الخام مع هذه التفسيرات الجديدة. واختبروا ثلاث طرق مختلفة لدمج هذه المعلومات: استخدام الكود وحده، وخلط الكود والتفسير بطريقة ثابتة، واستخدام "مفتاح ذكي" يقرر لكل قطعة كود مقدار الوزن الذي يجب إعطاؤه للتفسير. وبينما حقق المفتاح الذكي أداءً أفضل قليلاً في بعض الاختبارات الأولية، إلا أن هذا التحسن لم يكن متسقاً بما يكفي لاعتباره طفرة حاسمة. وكانت النتيجة الأكثر موثوقية هي أن قناة التفسير نفسها - الجزء الذي يقدم الاستدلال القائم على الأدلة - كانت المحرك الرئيسي للنجاح. لقد أثبت النظام أنه عندما تجرد من التخمين وتجبر الذكاء الاصطناعي على ترسيخ استدلاله في النص الفعلي للبرنامج، فإنه يصبح كاشفاً أقوى للعيوب الأمنية.
علاوة على مجرد العثور على الأخطاء، كشفت الدراسة أيضاً عن مشكلات في مجموعات البيانات المستخدمة لتدريب واختبار هذه الأنظمة. فقد وجد الباحثون أن بعض المعايلات المرجعية القياسية تحتوي على أكواد مكررة ذات تسميات متضاربة، حيث يتم تصنيف نفس الوظيفة على أنها آمنة وخطيرة في أجزاء مختلفة من البيانات. هذا النوع من الخطأ يمكن أن يخدع الكمبيوتر بجعله يعتقد أنه تعلم شيئاً لم يتعلمه في الواقع. ومن خلال تدقيق مجموعات البيانات هذه وتنقية التناقضات، ضمن الفريق أن نتائجهم مبنية على تعلم حقيقي وليس مجرد حفظ للأخطاء. إن هذا الاهتمام بجودة البيانات، جنباً إلى جنب مع الطريقة الجديدة لتوليد التفسيرات، يشير إلى مسار مستقبلي لبناء أدوات أمنية أكثر موثوقية لا تكتفي بالتخمين، بل تفهم بالفعل الكود الذي تحميه.
ملخص تقني: SemanticVul
بيان المشكلة بينما تقدم النماذج اللغوية الكبيرة (LLMs) معلومات دلالية واعدة للكشف عن الثغرات الأمنية، فإن تطبيقها في السياقات الحساسة أمنياً يعوقه ثلاث مشكلات رئيسية: التكلفة العالية وعدم القدرة على إعادة الإنتاج المرتبطة بالاستدلال عبر واجهات برمجة التطبيقات (APIs) المملوكة لجهات خارجية، وتوليد ادعاءات غير مدعومة أو "مهلوسة"، وتسرب تسميات الحقيقة الأرضية (ground-truth labels) إلى التفسيرات (مثل استخدام كلمات تقريرية مثل "ثغرة" في الاستنتاج). علاوة على ذلك، تعتمد طرق الدمج الحالية غالباً على آلية واحدة ثابتة، مما يجعل من الصعب التمييز ما إذا كانت مكاسب الأداء ناتجة عن محتوى التفسير نفسه أم عن المعلمات الإضافية لكتلة الدمج. إن العمل السابق، مثل FuSEVul، يستخدم تفسيرات نثرية تجارية حرة وغير مدققة، وهي عرضة لأنماط الفشل هذه.
المنهجية إن SemanticVul هو إطار عمل للكشف عن الثغرات الأمنية الثنائية على مستوى الدالة لأكواد C/C++، وهو يعالج هذه الفجوات من خلال ابتكارين جوهريين: خط أنابيب تفسير مهيكل قائم على الأدلة، وسلم دمج محكوم.
خط أنابيب التفسير المهيكل القائم على الأدلة:
التوليد المحلي: بدلاً من الاعتماد على واجهات برمجة التطبيقات التجارية، يستخدم SemanticVul نموذج كود لغوي كبير مفتوح الأوزان ومُقدم محلياً (Qwen2.5-Coder 14B) لتوليد التفسيرات دون اتصال بالإنترنت.
قيود المخطط (Schema Constraints): يُجبر النموذج على إخراج كائن JSON مقيد بمخطط يحتوي على حقول محددة: الغرض (purpose)، تدفق البيانات (data flow)، العمليات الخطرة (risky operations)، التحققات المفقودة (missing checks)، رموز الأدلة (evidence tokens)، مؤشرات السلامة (safety indicators)، ملخص المخاطر (risk summary)، ومستوى المخاطر (risk level).
التحقق الحتمي: يفرض المُحقِّق "عقد تأصيل" (grounding contract). حيث يقوم بمطابقة الكود غير حساسة للمساحات البيضاء لضمان ربط الادعاءات بشأن العمليات الخطرة أو التحققات المفقودة بسلاسل نصية فعلية داخل الدالة التي يتم تحليلها. يتم إسقاط الادعاءات غير المدعومة، وإعادة توليد التفسير إذا لزم الأمر.
سلامة عدم التسرب: يقوم خط الأنابيب بتنقية جميع المفردات المتعلقة بالقرار (مثل "ثغرة" أو "استغلال") من النص قبل الترميز.
قياس الثقة: بدلاً من الثقة المبلغ عنها ذاتياً، يقيس النظام قيمة ثقة عددية (κ) بناءً على احتمالات اللوغاريتم (log-probabilities) أثناء فك التشفير لرموز مستوى المخاطر المولدة. تُمرر هذه القيمة إلى الكاشف كميزة مساعدة.
الترميز: يتم ترميز نص JSON الذي تم التحقق منه وتنقيته باستخدام RoBERTa، بينما يتم ترميز الكود المصدر باستخدام CodeT5+.
سلم الدمج المحكوم (L1–L3): لعزل مساهمة قناة التفسير عن آلية الدمج، قام المؤلفون بتدريب ثلاث إعدادات تحت ظروف متطابقة:
L1 (الكود فقط): خط أساس يستخدم مخرجات مشفر الكود فقط.
L2 (دمج الانتباه الثابت): آلية انتباه تقاطعي ثابتة (مشابهة لـ FuSEVul) تدمج حالات رموز الكود والتفسير.
خط أنابيب تفسير محلي ومؤصل: يستبدل النثر التجما الحر بـ مولد محلي مقيد بمخطط وقائم على الأدلة. في وظائف Reveal المتطابقة، ضاعف هذا النهج تأصيل ذكر الـ API (من 26.2% إلى 55.4%)، ونصف معدل ذكر الاستدعاءات المهلوسة، ويوفر ركائز أدلة صريحة لـ 87% من الدوال.
سلم الدمج المحكوم: يقدم إطار عمل L1–L3 الذي يفصل بين فائدة قناة التفسير وآلية الدمج. تظهر النتائج أن قناة التفسير توفر المكسب الأكثر ديمومة (ما يصل إلى +17.5 F1 فوق الكود فقط)، بينما لم يتم حسم تفوق البوابة التكيفية على الدمج الثابت إحصائياً.
تحسينات الأداء: تحت بروتوكول قابل للمقارنة الأساسي، يحقق SemanticVul مكاسب كبيرة على نتائج مرجع FuSEVul المعلنة: +8.60 في الدقة و +7.31 في F1 على Devign، و +1.23 في الدقة و +15.09 في F1 على Reveal. والجدير بالذكر أن استدعاء الفئة الأقلية (minority-class recall) في Reveal ارتفع من 39.52% إلى 63.00%.
تدقيق جودة البيانات: يكشف تدقيق عام لتقسيمات Devign و Reveal الموزعة عن مشكلات كبيرة في جودة البيانات، بما في ذلك التكرارات المتضاربة في التسميات وتسرب البيانات بين التقسيمات، مما يعني حدود حفظ مشروط تصل إلى ~99.0% (Devign) و ~96.96% (Reveal).
النتائج التجريبية
الأداء العام: يتفوق SemanticVul على مرجع FuSEVul المنشور في كلا المجموعتين من البيانات. تم تحديد التكوين L2 (الدمج الثابت) باعتباره التكوين الرئيسي لأن تحسيناته تظل قائمة تحت كل من بروتوكولات التقييم القابلة للمقارنة والتقييم المستبعد (held-out).
فائدة التفسير: الانتقال من L1 (الكود فقط) إلى L2 (مع التفسيرات) يؤدي إلى مكاسب كبيرة في F1 (+9.56 في Devign، و +17.16 في Reveal)، مما يؤكد قيمة الإشارات الدلالية المؤصلة.
جودة التأصيل: نجح خط أنابيب التحقق في تقليل الهلوسة. تحسن تأصيل ذكر الـ API من 26.2% إلى 55.4%، وانخفض معدل ادعاءات الاستدعاء الغائب من 76.0% إلى 46.7%.
البوابة التكيفية: رغم أن البوابة التكيفية L3 حققت أعلى F1 تحت بروتوكول القابل للمقارنة الأساسي، إلا أن اختبارات t المزدوجة لخمس بذور أظهرت عدم وجود فرق ذي دلالة إحصائية بين L3 و L2. لم يكن تفوق البوابة ثابتاً تحت التقييم المستبعد، مما يشير إلى عدم وجوب تفسيرها بعد كإسهام نهائي للدمج الثابت.
العتبة والتجميع (Ensembling): وفر ضبط العتبة وتجميع البذور المتعددة مكاسب إضافية، لا سيما في مجموعة بيانات Reveal غير المتوازنة، وإن كان قد تم الإبلاغ عنها كحدود متفائلة وليست تقديرات للنشر.
الأهمية والادعاءات يزعم البحث أن التفسيرات المولدة محلياً والمؤصلة بالأدلة يمكن أن توفر إشارة دلالية قابلة لإعادة الإنتاج للكشف عن الثغرات الأمنية، مما يستبدل بفعالية واجهات برمجة التطبيقات التجارية المكلفة وغير المدققة. وتؤكد الدراسة أن التدقيق الصارم للتقسيم والتقييم المستبعد أمر بالغ الأهمية عند تقييم التحسينات المدفوعة بالتفسير، حيث يمكن لتسرب البيانات وتناقضات التسميات أن تضخم النتائج المعلنة.
يحافظ المؤلفون على موقف متواضع فيما يتعلق بآلية البوابة التكيفية، مشيرين إلى أنه رغم أدائها الجيد في إعدادات معينة، إلا أن تفوقها على الدمج الثابت ليس قوياً من الناحية الإحصائية. ويتم التحقق من المساهمة الرئيسية من خلال قناة التفسير المؤصلة نفسها، والتي تحسن بشكل كبير فائدة الكشف، خاصة للفئات الأقلية في مجموعات البيانات غير المتوازنة، دون الاعتماد على بنية تحتية مملوكة أو استدلال غير موثق. ويؤكد العمل على ضرية فصل محتوى التفسير عن آلية الدمج لقياس تأثيره بدقة.