إطار بحثي جديد يسمى ARQ يتصدى لأحد أكثر الصداع المزمن في أمن البرمجيات: جعل أدوات فحص الشيفرة الآلية تكتشف الثغرات الصحيحة فعلاً. هذا العمل، الذي ألّفه تشوني وانغ ونُشر على arXiv في أغسطس 2026، يستهدف اكتشاف الثغرات باستخدام CodeQL، وهي طريقة مستخدمة على نطاق واسع في اكتشاف العيوب في شيفرات C و++C، ويُظهر أن استعلامات الكشف الحالية أقل موثوقية بكثير مما يفترضه المطورون.
Summary
أهم النقاط
- يقوم ARQ تلقائياً بتحسين استعلامات CodeQL الخاصة بـ C/C++ باستخدام أدلة تنفيذية من برامج مُركّبة، دون الحاجة إلى مجموعات بيانات معنونة أو قوالب خاصة بكل ثغرة.
- أدى الاختبار باستخدام ثلاثة نماذج لغوية تجارية ضخمة — GPT-5.4 وClaude-Sonnet-4.6 وGemini-3.5-flash — إلى تحسين 12 استعلاماً رسمياً من استعلامات CodeQL.
- اكتشفت الاستعلامات المحسّنة عدداً أكبر من الإيجابيات الحقيقية بنسبة تصل إلى 119.8% مع الحفاظ على دقة تبلغ 98.0% أو أكثر.
- حل ARQ ثلاث قضايا على GitHub في مستودع CodeQL الرسمي كانت عالقة دون حل لمدة وصلت إلى 27 شهراً.
- كشفت الاستعلامات المحسّنة عن ثغرتين غير معروفتين سابقاً في المكتبتين العمليتين libpng وzlib.
قيود استعلامات CodeQL الحالية في اكتشاف ثغرات C/C++
أصبحت أدوات التحليل الساكن جزءاً أساسياً من سير عمل أمن البرمجيات، ويُعد CodeQL من أكثر الأدوات اعتماداً للفحص في قواعد شيفرات C/C++. تعمل هذه الأدوات عبر ترميز أنماط الشيفرة المعروفة بأنها معرضة للثغرات في استعلامات كشف، ثم مطابقة هذه الأنماط مع الشيفرة المصدرية للبرنامج. تبدو هذه المقاربة أنيقة نظرياً، لكنها عملياً تنطوي على احتكاك حقيقي.
انتشار الإيجابيات الكاذبة والسلبيات الكاذبة في الاستعلامات الحالية
ما زالت استعلامات CodeQL الحالية تولّد إيجابيات كاذبة، حيث تُعلِّم شيفرة آمنة على أنها معرضة للثغرات، وسلبيات كاذبة، حيث تفشل في اكتشاف عيوب أمنية حقيقية تماماً. كلا النتيجتين مكلفتان. فالإيجابيات الكاذبة تهدر وقت المطورين في مطاردة أخطاء وهمية، بينما تسمح السلبيات الكاذبة لـثغرات حقيقية بالوصول إلى بيئة الإنتاج. هذا بالضبط هو الفجوة التي صُمم ARQ لسدها، وهو ما يفسر لماذا ظلّ اكتشاف الثغرات باستخدام CodeQL مجالاً نشطاً للبحث بدلاً من كونه مشكلة محلولة.
إطار عمل ARQ: تحسين الاستعلامات تلقائياً بالاستناد إلى التنفيذ
ARQ هو إطار عمل قائم على الوكلاء يقوم تلقائياً بتحسين استعلامات CodeQL الخاصة بـ C/C++ من خلال ربطها بأدلة تنفيذية مستمدة من برامج مُركّبة، بدلاً من الاعتماد على أمثلة معنونة يدوياً أو قوالب مبنية يدوياً. هذا الفارق مهم لأن معظم تقنيات التحسين السابقة كانت تعتمد على مجموعات بيانات منسّقة أو سجلات تغييرات (commits) مكلفة الإنتاج وبطيئة الصيانة.
آلية تحديد نقاط ضعف الاستعلامات عبر تنفيذ برامج مُركّبة
الفكرة الجوهرية وراء ARQ بسيطة لكنها قوية: يكشف برنامج مُركّب عن ضعف الاستعلام كلما اختلف تنفيذُه الفعلي عما يتنبأ به الاستعلام. إذا كان البرنامج معرضاً فعلاً لثغرة لكن الاستعلام يظل صامتاً، فهذا يكشف عن سلبية كاذبة. وإذا كان البرنامج آمناً فعلياً لكن الاستعلام يعلّمه على أنه معرض للثغرة، فهذا يكشف عن إيجابية كاذبة. يمنح هذا ARQ حقيقة مرجعية ذاتية مدمجة لتقييم جودة الاستعلام دون الحاجة إلى عنونة خارجية.
حلقة تحسين تكرارية معتمدة على النماذج اللغوية الضخمة دون بيانات معنونة أو قوالب خاصة بالثغرات
بمجرد كشف نقطة الضعف، يشغّل ARQ حلقة تحسين تكرارية معتمدة على نموذج لغوي ضخم تقوم بإصلاح الاستعلام باستخدام تلك الاختلافات في التنفيذ كأدلة. هذا هو الجزء من تحسين استعلامات ARQ الذي يميّزه عن المقاربات السابقة. لا يوجد اعتماد على مجموعات بيانات معنونة، ولا حاجة للتنقيب في سجلات التغييرات، ولا قوالب خاصة بكل ثغرة مدمجة في النظام. عملية التحسين مكتفية ذاتياً، مدفوعة بالكامل بعدم التطابق بين السلوك المتنبأ به والملاحظ في الشيفرة المُركّبة.
تقييم تأثير تحسينات ARQ على استعلامات CodeQL
الاختبار العملي لأي إطار تحسين هو ما إذا كان يحسّن فعلاً نتائج الكشف، وتشير نتائج ARQ إلى أنه يفعل ذلك بهامش واسع. قام الباحثون بتحسين 12 استعلاماً رسمياً من استعلامات CodeQL وقاسوا التحسينات باستخدام مجموعتي بيانات معروفتين لثغرات C/C++، ما يمنح النتائج مرجعاً ذا معنى في أبحاث التحليل الساكن لـ C/C++ القائمة.
نتائج التحسين باستخدام GPT-5.4 وClaude-Sonnet-4.6 وGemini-3.5-flash
تم اختبار ARQ باستخدام ثلاثة نماذج لغوية ضخمة تجارية: GPT-5.4 وClaude-Sonnet-4.6 وGemini-3.5-flash. قام كل نموذج بتشغيل حلقة التحسين التكرارية بشكل مستقل، مما أتاح للباحثين مقارنة أداء النماذج المختلفة في نفس المهمة الأساسية. يعزز هذا التصميم متعدد النماذج الثقة في أن المكاسب تأتي من منهجية ARQ نفسها، وليس من خصائص نموذج واحد بعينه.
تحسينات الأداء على مجموعتي بيانات Juliet v1.3 وFormAI v2 القياسيتين
تمت مقارنة استعلامات CodeQL الأصلية والمحسّنة بواسطة ARQ على مجموعتي بيانات Juliet v1.3 وFormAI v2، وهما معياران معترف بهما لتقييم أدوات اكتشاف الثغرات. اكتشفت الاستعلامات المحسّنة عدداً أكبر بكثير من الإيجابيات الحقيقية، بزيادة تصل إلى 119.8%، مع الحفاظ على دقة لا تقل عن 98.0% طوال الوقت. هذا الجمع لافت للنظر: فمن السهل نسبياً التقاط مزيد من الإيجابيات الحقيقية عبر تخفيف معايير الكشف، لكن ذلك عادةً ما يخفض الدقة مع تسلل الإيجابيات الكاذبة. تُظهر نتائج ARQ النمط المعاكس، ما يعني أن الإطار لا يوسع الشبكة فحسب، بل يُحسّنها أيضاً.
حل مشكلات قديمة على GitHub واكتشاف ثغرات جديدة في libpng وzlib
بعيداً عن أرقام المعايير، قدّم ARQ إصلاحات عملية في العالم الحقيقي. فقد حل الإطار ثلاث مشكلات غير محلولة على GitHub في مستودع استعلامات CodeQL الرسمي، وهي مشكلات ظلت مفتوحة لمدة وصلت إلى 27 شهراً دون حل. إضافة إلى ذلك، كشفت الاستعلامات المحسّنة عن ثغرتين غير مكتشفتين سابقاً في libpng وzlib، وهما مكتبتان مستخدمتان على نطاق واسع في العالم الحقيقي. هذا مؤشر ذو دلالة: فالأمر لا يقتصر على تمرين أكاديمي ينتج أرقاماً أفضل في جداول الترتيب، بل أداة كشفت عن عيوب أمنية حقيقية وغير معروفة سابقاً في برمجيات تعتمد عليها عدد لا يحصى من التطبيقات.
لماذا يهم هذا لأمن البرمجيات
تتجاوز الآثار CodeQL نفسه. فالإيجابيات الكاذبة والسلبيات الكاذبة مشكلة مزمنة في مجال التحليل الساكن بأكمله، وليس في أداة واحدة فقط، وأي طريقة تقلل كليهما في الوقت نفسه، دون الحاجة إلى بيانات معنونة أو قوالب مصممة يدوياً، لديها القدرة على التأثير في كيفية بناء أدوات تحسين الاستعلامات المعتمدة على النماذج اللغوية الضخمة في المستقبل. بالنسبة للمؤسسات التي تعتمد على الفحص الآلي لتأمين قواعد شيفرات C/C++، قد يعني إطار عمل يزيد من اكتشاف الإيجابيات الحقيقية مع الحفاظ على دقة أعلى من 98% ساعات هندسية أقل مهدورة في مطاردة إنذارات كاذبة وعدداً أقل من الثغرات الحقيقية التي تمر دون ملاحظة.
كما يؤكد اكتشاف ثغرات جديدة في libpng وzlib على أمر مهم: حتى المكتبات مفتوحة المصدر الناضجة والخاضعة لتدقيق مكثف يمكن أن لا تزال تحتوي على عيوب غير مكتشفة، ويمكن للاستعلامات المحسّنة أن تجدها حيث تعجز الأدوات الحالية.
الأسئلة الشائعة
ما المشكلة التي يهدف ARQ إلى حلها في اكتشاف ثغرات C/C++؟
يعالج ARQ الإيجابيات الكاذبة والسلبيات الكاذبة في استعلامات CodeQL الحالية عبر تحسينها تلقائياً باستخدام أدلة تنفيذية من برامج مُركّبة.
كيف يحدد ARQ نقاط الضعف في استعلامات CodeQL؟
يكتشف ARQ نقاط ضعف الاستعلام كلما اختلف تنفيذ برنامج مُركّب عن حكم الاستعلام: يشير عدم التطابق إلى إما إيجابية كاذبة أو سلبية كاذبة.
ما دور النماذج اللغوية الضخمة في ARQ؟
يستخدم ARQ حلقة تحسين تكرارية معتمدة على نموذج لغوي ضخم لإصلاح الاستعلامات بناءً على تغذية راجعة من التنفيذ، دون الحاجة إلى بيانات معنونة أو قوالب خاصة بالثغرات.
ما التحسينات الملموسة التي قدّمها ARQ في تحسين استعلامات CodeQL؟
زادت استعلامات CodeQL المحسّنة بواسطة ARQ من اكتشاف الإيجابيات الحقيقية بنسبة تصل إلى 119.8% مع دقة لا تقل عن 98.0%، وحلّت ثلاث مشكلات قديمة على GitHub، وكشفت عن ثغرتين جديدتين في مكتبات مستخدمة في العالم الحقيقي.
{“@context”:”https://schema.org”,”@type”:”FAQPage”,”mainEntity”:[{“@type”:”Question”,”name”:”ما المشكلة التي يهدف ARQ إلى حلها في اكتشاف ثغرات C/C++؟”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”يعالج ARQ الإيجابيات الكاذبة والسلبيات الكاذبة في استعلامات CodeQL الحالية عبر تحسينها تلقائياً باستخدام أدلة تنفيذية من برامج مُركّبة.”}},{“@type”:”Question”,”name”:”كيف يحدد ARQ نقاط الضعف في استعلامات CodeQL؟”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”يكتشف ARQ نقاط ضعف الاستعلام كلما اختلف تنفيذ برنامج مُركّب عن حكم الاستعلام: يشير عدم التطابق إلى إما إيجابية كاذبة أو سلبية كاذبة.”}},{“@type”:”Question”,”name”:”ما دور النماذج اللغوية الضخمة في ARQ؟”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”يستخدم ARQ حلقة تحسين تكرارية معتمدة على نموذج لغوي ضخم لإصلاح الاستعلامات بناءً على تغذية راجعة من التنفيذ، دون الحاجة إلى بيانات معنونة أو قوالب خاصة بالثغرات.”}},{“@type”:”Question”,”name”:”ما التحسينات الملموسة التي قدّمها ARQ في تحسين استعلامات CodeQL؟”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”زادت استعلامات CodeQL المحسّنة بواسطة ARQ من اكتشاف الإيجابيات الحقيقية بنسبة تصل إلى 119.8% مع دقة لا تقل عن 98.0%، وحلّت ثلاث مشكلات قديمة على GitHub، وكشفت عن ثغرتين جديدتين في مكتبات مستخدمة في العالم الحقيقي.”}}]}
تم إعداد هذه المقالة بمساعدة الذكاء الاصطناعي ومراجعتها من قبل الفريق التحريري.

