Tool-Guided Retrieval-Augmented Repair for Securing LLM-Generated C Code
تقترح هذه الورقة سير عمل للإصلاح المعزز بالاسترجاع والموجه بالأدوات، يدمج تشخيصات التجميع، والتحليل الساكن، والتنفيذ الرمزي مع أنماط الإصلاح السابقة لتقليل إخفاقات التجميع والثغرات الأمنية بشكل كبير في كود لغة C المولد بواسطة النماذج اللغوية الكبيرة للأنظمة المدمجة.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل أنك تعلم روبوتًا موهوبًا وسريعًا للغاية لكتابة تعليمات لآلة ما. هذا الروبوت، المعروف باسم "النموذج اللغوي الكبير" (LLM)، بارع في فهم اللغة البشرية وتحويلها إلى كود — وهي اللغة الخاصة التي تستخدمها الحواسيب للتفكير. الأمر يشبه امتلاك ساحر يمكنه استحضار تعويذة فورًا بمجرد أن تطلبها منه. لكن هنا تكمن المشكلة: أحيانًا يتشتت انتباه الساحر أو يرتكب خطأً مطبعيًا، وقد تؤدي التعويذة التي يلقيها بالخطأ إلى تفجير القلعة بدلاً من إضاءة شمعة. في عالم الحواسيب، تُسمى هذه الأخطاء "ثغرات أمنية" أو "أخطاء برمجية" (bugs)، وفي الحواسيب الصغيرة والهشة الموجودة داخل أشياء مثل أجهزة تنظيم ضربات القلب، أو السيارات، أو الطائرات بدون طيار، يمكن لخطأ واحد أن يكون كارثيًا.
لفترة طويلة، أمل الناس أن تتمكن "الروبوتات الساحرة" من كتابة كود مثالي من المحاولة الأولى. لكنها غالبًا لا تفعل ذلك. قد ينسون التحقق مما إذا كان الباب مغلقًا، أو قد يحاولون صب جالون من الماء في كوب شاي صغير، مما يسبب فوضى عارمة. السؤال الكبير الذي يسأله العلماء هو: كيف يمكننا إصلاح هذه الأخطاء دون الحاجة إلى توظيف خبير بشري لفحص كل سطر برمجي؟ هل يمكننا منح الروبوت مجموعة من الأدوات ليفحص عمله بنفسه، ويتعلم من أخطائه السابقة، ويحاول مجددًا حتى ينجح؟ هذا هو اللغز الذي يحاول الباحثون حله لضمان ألا يتسبب الذكاء الاصطناعي عن غير قصد في كسر الأشياء التي نعتمد عليها.
قصة الورقة البحثية: تعليم الروبوت إصلاح تعويذاته الخاصة
تقدم هذه الورقة البحثية سير عمل ذكيًا يسمى "الإصلاح المعزز بالاسترجاع والموجه بالأدوات" (Tool-Guided Retrieval-Augmented Repair). فكر في الأمر كأنك تمنح روبوت الذكاء الاصطناعي "حقيبة فحص خارقة" و"كتاب ذاكرة" للأخطاء السابقة لمساعدته على إصلاح الكود الخاص به قبل أن يصل إلى الآلة الحقيقية.
وضع الباحثون عملية مكونة من أربع خطوات لمساعدة الذكاء الاصطناعي على كتابة كود لغة C آمن (وهي نوع من لغات البرمجة المستخدمة في الأنظمة الحرجة ومنخفضة المستوى). أولاً، يحاول الذكاء الاصطناعي كتابة الكود بناءً على وصف بسيط، تمامًا كما يفعل عادةً. ولكن بدلًا من التوقف عند هذا الحد، يخضع الكود فورًا لعملية تفتيش صارمة.
الخطوة 1: فحص التجميع (Compilation Check)
أولاً، يحاولون "تجميع" (compile) الكود. تخيل هذا كأنه محاولة لبناء مجموعة "ليجو". إذا كانت التعليمات تفتقد قطعة ما أو إذا كانت القطع لا تتناسب مع بعضها، فإن عملية البناء تفشل. يلتقط النظام هذه الأخطاء فورًا، تمامًا مثل معلم يلاحظ خطوة مفقودة في واجب مدرسي لطالب.
الخطوة 2: المسح الأمني (Security Scan)
إذا تم بناء الكود بنجاح، فإنه ينتقل إلى مفتش ثانٍ يسمى CodeQL. هذا يشبه حارس أمن يتجول في مبنى بحثًا عن نوافذ مفتوحة أو مخاطر حريق. يقوم بمسح الكود بحثًا عن أنماط خطيرة، مثل ترك باب مفتوح للمخترقين أو استخدام أدوات غير آمنة قد تؤدي إلى تعطل النظام.
الخطوة 3: إصلاح "كتاب الذاكرة"
هذا هو الجزء الأكثر إبداعًا. إذا احتوى الكود على أخطاء، فإن النظام لا يكتفي بالتخمين لكيفية إصلاحها. بدلاً من ذلك، يفتح "كتاب ذاكرة" (مستودع) مليء بالأمثلة حول كيفية إصلاح مشكلات مماثلة بنجاح في الماضي. إنه يبحث عن الأنماط: "أوه، في المرة الماضية نسينا التحقق مما إذا كان الرقم كبيرًا جدًا، وإليك كيف أصلحنا ذلك". بعد ذلك، يزود الذكاء الاصطناعي بمجموعة من التلميحات والقواعد المحددة بناءً على تلك النجاحات السابقة، بدلاً من مجرد إظهار الكود الخام له. هذا يساعد الذكاء الاصطناعي على تعلم منطق الإصلاح، وليس مجرد نسخ الإجابة.
الخطوة 4: اختبار الضغط النهائي (Final Stress Test)
أخيرًا، يتم تشغيل الكود الذي تم إصلاحه عبر أداة "تنفيذ رمزي" (symbolic execution) تسمى KLEE. تخيل هذا كأنه جهاز محاكاة لاختبار الضغط يحاول كسر الكود عن طريق رمي كل المدخلات الغريبة الممكنة عليه، مثل محاولة حشر وتد مربع في ثقب مستدري بطرق ألف طريقة مختلفة. إذا نجا الكود من هذا الاختبار، فإنه يُعتبر آمنًا.
ما وجدوه: الروبوت يصبح أفضل بكثير
اختبر الباحثون هذه الطريقة على 5,000 مهمة برمجية مختلفة. وقارنوا أداء الذكاء الاصطناعي عندما يعمل بمفرده مقابل أدائه عند استخدام سير العمل الجديد "الخارق".
كانت النتائج دراماتيكية للغاية، خاصة بالنسبة لنماذج الذكاء الاصطناعي الأصغر حجمًا.
- بالنسبة لنموذج CodeLlama 7B: انخفض عدد العيوب الأمنية (النوافذ المفتوحة) من 49% إلى 19%. كما انخفض إجمالي الأخطاء الأمنية التي وجدها الماسح الضوئي بشكل حاد من 15,088 إلى 2,463، وهو انخفاض بنسبة 83.7%.
- بالنسبة لنموذج DeepSeek Coder 1.3B: انخفض معدل الكود الذي لم يتمكن حتى من البناء (فشل التجميع) من 42% إلى 22%. كما انخفضت العيوب الأمنية من 35% إلى 15%.
تشير الورقة البحثية إلى أن هذا النهج ينجح لأنه يجمع بين ثلاثة أشياء: التحقق مما إذا كان الكود يعمل، والمسح بحثًا عن الثغرات الأمنية، واستخدام ذاكرة من الإصلاحات السابقة لتوجيه التصحيحات. وهذا يوضح أنك لست بحاجة بالضرورة إلى ذكاء اصطناعي ضخم ومكلف للغاية لكتابة كود آمن؛ بل تحتاج فقط إلى سير عمل ذكي يساعد الذكاء الاصطناعي على فحص عمله بنفسه.
ماذا يعني هذا (وما لا يعنيه)
يؤكد المؤلفون بحذر أنه على الرغم من أن هذه خطوة كبيرة للأمام، إلا أنها ليست عصا سحرية تحل كل شيء. فقد وجدوا أنه حتى بعد عمليات الإصلاح، لا تزال بعض الأخطاء الشائعة — مثل نسيان التحقق مما إذا كانت مدخلات المستخدم صالحة — تحدث. كما أشاروا إلى أن اختباراتهم أجريت على مهام برمجية عامة، وليس خصيصًا على الحواسيب الصغيرة محدودة الموارد الموجودة في الأجهزة المدمجة الحقيقية (مثل منظم الحرارة الذكي)، رغم أن أنماط الأخطاء كانت متشابهة جدًا.
تخلص الورقة البحثية إلى أن هذه الطريقة "تقترح" أن إضافة هذه الأدوات الخفيفة إلى حلقة عمل الذكاء الاصطناعي تجعل الكود أكثر أمانًا وموثوقية. إنها إثبات لمفهوم يوضح أن الروبوت يمكنه تعلم إصلاح أخطائه إذا منحته الأدوات المناسبة وذاكرة جيدة لما حدث خطأً من قبل. ويخطط الباحثون لاختبار ذلك على أنظمة مدمجة حقيقية في المستقبل لمعرفة مدى صمود هذه التحسينات في الواقع العملي.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.