تركز هذه الدراسة على ضعف تلوث النموذج الأولي ، وهو نوع "جديد" من الضعف الأمني ، الذي تم اكتشافه لأول مرة في عام 2018 ، لم يتم دراسته بعمق. يستغل الضعف التصميم الموجود النموذجية لجافا سكريبت. من خلال تعديل النموذج الأولي للكائنات الأصلية مثل الكائن ، الذي ترث منه معظم الكائنات الأخرى الخصائص والأساليب ، يكون ذلك ممكنًا ، اعتمادًا على منطق التطبيق المحدد ، للتصعيد إلى أي ثغرة أمنية أخرى على شبكة الإنترنت تقريبًا.
قمنا بجمع رمز JavaScript الذي يحتوي على أمثلة حقيقية للتلوث على النموذج الأولي للأمثلة البحث على قواعد بيانات الضعف مثل GitHub الاستشارية والمصادر الأخرى. للتأكد من أن الأمثلة التي تم جمعها معرضة للخطر بالفعل ، كتبنا دليلًا بسيطًا على استغلال المفهوم لكل وظيفة ضعيفة. قمنا بتشغيل أدوات التحليل الثابت التي تم النظر فيها مقابل التطبيقات الضعيفة. من بين مجموعة بيانات الضعف ، اخترنا بعض دراسات الحالة التي قمنا بتحليلها بالتفصيل لشرح أنماط التعليمات البرمجية المختلفة التي تؤدي إلى الضعف. تم اختيار دراسات الحالة هذه لإظهار نتائج مثيرة للاهتمام والتي سمحت لنا بتسليط الضوء على نقاط القوة والقيود في كل أداة.
يمكن لـ ODGEN/OBJLUPANSYS نهجًا جديدًا ، استنادًا إلى رسم بياني الاعتماد على الكائنات والذي يمكن أن يبحث عن كائنات النموذج بشكل ناجح استنادًا إلى سلسلة النماذج الأولية ، اكتشاف جميع حالات الضعف تقريبًا. ومع ذلك ، يتأثر التنفيذ التجريبي الحالي بالأخطاء عندما يواجه بعض أنماط التعليمات البرمجية. كما أنه يعاني من مشكلات في الأداء الخطيرة عند تحليل الحزم الكبيرة أو أنماط معينة. أيضًا ، إنه معرض للغاية للإعلام بالإيجابية الخاطئة عند تنفيذها مقابل إصدار مرقح من الوظائف الضعيفة السابقة.
لا تغطي قواعد SEMGREP جميع الحالات مثل الواجبات المباشرة ، بسبب اختلاف تضمين هذه الحالة دون أن يكون ذلك معدل إيجابي كاذب مرتفع للغاية. يوفر محرك SEMGREP تحليلًا محدودًا للبيانات داخل المعالجة ، وكما هو متوقع ، لا يمكن دائمًا اكتشاف الضعف الذي يتم توزيعه عبر وظائف مختلفة (مثل المكالمات العودية غير المباشرة). تعلن القواعد العديد من الإيجابيات الخاطئة عند تنفيذها مقابل نسخة مرققة من الوظائف الضعيفة السابقة ، حيث لا يتم حتى النظر في معظم تقنيات التخفيف.
يمكن لـ CODEQL تحديد جميع أمثلة الضعف التي تم جمعها تقريبًا. يبدو أن الاستعلامات التي تم اعتبارها مكتوبة جيدًا ، والمشاكل التي تمت مواجهتها هي على الأرجح قيودًا على محرك المصدر المغلق. لما يتعلق بالمواقف الخاطئة ، يتم النظر في معظم تقنيات التخفيف ، وبالتالي فإن استعلامات CodeQL تعمل بشكل أفضل بكثير من الأدوات الأخرى.
مزيد من التفاصيل في أطروحة PDF