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

Residual Risk Analysis in Benign Code: How Far Are We? A Multi-Model Semantic and Structural Similarity Approach

تقدم هذه الورقة تقييم مخاطر المتبقي (RRS)، وهو إطار عمل يجمع بين تحليل التشابه الدلالي والهيكلي ليكشف أن ما يقرب من 61% من الدوال التي تم إصلاحها في معيار PrimeVul لا تزال تحتفظ بمخاطر أمنية متبقية كبيرة، مما يتحدى الافتراض بأن الكود الذي تم إصلاحه هو بطبيعته حميد.

المؤلفون الأصليون: Mohammad Farhad, Shuvalaxmi Dass

نُشر 2026-04-24
📖 5 دقيقة قراءة🧠 قراءة متعمّقة

المؤلفون الأصليون: Mohammad Farhad, Shuvalaxmi Dass

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

إليك شرح للورقة البحثية، مترجم إلى لغة يومية مع بعض التشبيهات الإبداعية.

الفكرة الكبرى: "مشكلة الضمادة"

تخيل أن لديك سقفًا يسرب الماء. تضع عليه "ضمادة" (Band-Aid) لإيقاف تسرب الماء مؤقتًا. من الناحية التقنية، تم "إصلاح" التسريب، ولم يعد المنزل "عرضة للخطر" من أجل قطرات الماء المباشرة.

لكن هنا تكمن المشكلة: بقية السقف لا تزال قديمة، متآكلة، ومليئة بنقاط الضعف. إذا نظرت إلى السقف فقط، سيبدو تقريبًا كما كان تمامًا قبل وضع الضمادة عليه.

تطرح هذه الورقة سؤالًا مخيفًا: هل مجرد قيامنا بسد الثقب يعني أن المنزل أصبح آمنًا حقًا؟ أم أننا قمنا فقط بتغطية مشكلة بينما تركنا بقية الهيكل قريبًا جدًا من حالته الخطيرة السابقة؟

يطلق المؤلفون على هذا اسم "المخاطر المتبقية" (Residual Risk). وهي الخطر الخفي الذي يظل موجودًا حتى بعد تطبيق "الإصلاح".


المشكلة: نحن نفترض أن "تم الإصلاح" تعني "أصبح آمنًا"

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

يجادل المؤلفون بأن هذا خطأ. فغالبًا ما يقوم المطورون بـ إصلاحات جراحية صغيرة جدًا لإيقاف انهيار محدد دون إعادة كتابة البرنامج بالكامل.

  • النتيجة: الكود "الآمن" يبدو متطابقًا بنسبة 99% مع الكود "الخطير" الذي استبدله.
  • الخطر: نظرًا لأن التشابه كبير جدًا، فقد تظل الأخطار الخفية الأخرى (مثل مسمار مرتخٍ أو سلك ضعيف قريب) موجودة، في انتظار التسبب في مشكلة جديدة لاحقًا.

الحل: نظام "المحقق ثلاثي الأجزاء"

للعثور على هذه المخاطر الخفية، بنى المؤلفون أداة جديدة تسمى "درجة المخاطر المتبقية" (Residual Risk Scoring - RRS). فكر فيها كفريق تحقيق مكون من ثلاثة فرق، يحقق في قطعة الكود "المُصلحة" ليرى ما إذا كانت آمنة حقًا.

1. المحقق الدلالي (قارئ "المعنى")

  • كيف يعمل: يستخدم هذا الجزء ذكاءً اصطناعيًا متطورًا (نماذج لغوية برمجية - Code LMs) لقراءة الكود وفهم ماذا يفعل، وليس فقط ما هي الكلمات المكتوبة.
  • التشبيه: تخيل شخصين يكتبان قصة. إحدى القصتين بها خطأ مطبعي يجعل الشخصية تموت. يقوم المحرر بتصحيح الخطأ المطبعي. المحقق الدلالي يقرأ القصتين ويقول: "القصتان متطابقتان بنسبة 99%. الحبكة، والشخصيات، والمزاج العام لم يتغيروا".
  • الدليل: إذا كانت القصة "الآمنة" مشابهة جدًا للقصة "الخطيرة"، يرفع المحقق علم التحذير.

2. المحقق الهيكلي (مفتش "المخطط الهندسي")

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

3. قاضي الاتساق (مدقق "تفكير المجموعة")

  • كيف يعمل: استخدم المؤلفون خمسة نماذج مختلفة من الذكاء الاصطناعي للقيام بعملية القراءة.
  • التشبيه: تخيل أنك تطلب من خمسة خبراء مختلفين مراجعة نفس المنزل. إذا اتفق الخبراء الخمسة جميعًا على أن "هذا المنزل هو نفسه بنسبة 99% من المنزل الخطير"، يمكنك أن تكون واثقًا جدًا من أن التشابه حقيقي وليس مجرد خطأ من خبير واحد.
  • الدليل: إذا اتفقت جميع نماذج الذكاء الاصطناي على أن الكود لم يتغير كثيرًا، فإن درجة المخاطر ترتفع.

تجميع كل شيء: "درجة المخاطر"

يجمع النظام هذه الأدلة الثلاثة في "درجة مخاطر متبقية" (RRS) واحدة.

  • درجة عالية: الكود يبدو متطابقًا تقريبًا مع النسخة الخطيرة، والهيكل لم يتغير إلا قليلًا، وجميع نماذج الذكاء الاصطناي متفقة على ذلك. الحكم: "هذا 'الإصلاح' قد يكون مجرد ضمادة على جرح رصاصة. نحن بحاجة لفحص هذا بدقة".
  • درجة منخفضة: الكود يبدو مختلفًا تمامًا، أو تغير الهيكل بشكل كبير. الحكم: "هذا يبدو إصلاحًا حقيقيًا. يمكننا المضي قدمًا".

ماذا وجدوا؟

اختبر المؤلفون هذا النظام على آلاف الإصلاحات البرمجية الحقيقية (من مجموعة بيانات "PrimeVul"). وإليكم ما اكتشفوه:

  1. "الضمادة" حقيقية: حوالي 61% من الرقعات التي بدت "آمنة" للأدوات التقليدية، كانت لا تزال تحتوي في الواقع على مشاكل خفية.
  2. المشاكل حقيقية: عندما مرروا هذه الرقعات "عالية المخاطر" عبر ماسحات أمنية احترافية، وجدت الماسحات مشكلات حقيقية مثل:
    • إلغاء مرجع المؤشر الفارغ (Null Pointer Dereferences): محاولة فتح باب غير موجود (مما يؤدي لانهيار البرنامج).
    • تسريب الذاكرة (Memory Leaks): ترك الصنبور مفتوحًا، مما يستنزف موارد النظام ببطء.
    • تجاوز السعة (Buffer Overflows): محاولة صب جالون من الماء في كوب، مما يؤدي لانسكابه في كل مكان (خرق أمني).
  3. الطريقة القديمة أخطأت: افترضت الأدوات التقليدية أنه نظرًا لأن الكود قد تم "إصلاحه"، فإنه أصبح آمنًا. لقد فاتتهم هذه الـ 61% من الحالات لأنهم لم ينظروا إلى مدى تشابه الكود الجديد مع الكود القديم المعطل.

الخلاصة

تعلمنا هذه الورقة البحثية أنه في البرمجيات، "تم الإصلاح" لا يعني دائمًا "أصبح آمنًا".

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

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

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

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

جرّب Digest →