اكتشف الباحثون ثغرة أمنية في النوى تمكن من تجاوز التوقيع وتنفيذ التعليمات البرمجية
تم الكشف عن ثغرة أمنية شديدة الخطورة في ProjectDiscovery النوى، أداة فحص الثغرات مفتوحة المصدر ومستخدمة على نطاق واسع والتي، إذا تم استغلالها بنجاح، يمكن أن تسمح للمهاجمين بتجاوز عمليات التحقق من التوقيع وربما تنفيذ تعليمات برمجية ضارة.
تتبع باسم CVE-2024-43405، يحمل درجة CVSS 7.4 من 10.0 كحد أقصى. إنه يؤثر على كافة إصدارات Nuclei الأحدث من 3.0.0.
“تنبع الثغرة الأمنية من التناقض بين كيفية معالجة عملية التحقق من التوقيع ومحلل YAML لأحرف السطر الجديد، بالإضافة إلى طريقة معالجة التوقيعات المتعددة”، وفقًا لما ذكره أحد الباحثين. وصف من الضعف.
“يسمح هذا للمهاجم بإدخال محتوى ضار في القالب مع الحفاظ على توقيع صالح للجزء الحميد من القالب.”
Nuclei عبارة عن ماسح ضوئي للثغرات مصمم لاستكشاف التطبيقات الحديثة والبنية التحتية والمنصات السحابية والشبكات لتحديد العيوب الأمنية. يستخدم محرك المسح قوالب، وهي ليست سوى ملفات YAML إرسال طلبات محددة من أجل تحديد وجود الخلل.
علاوة على ذلك، يمكنه تمكين تنفيذ تعليمات برمجية خارجية على نظام التشغيل المضيف باستخدام بروتوكول الكودمما يمنح الباحثين المزيد من المرونة فيما يتعلق بسير عمل اختبار الأمان.
وقالت شركة الأمن السحابي Wiz، التي اكتشفت CVE-2024-43405، إن الثغرة الأمنية متجذرة في عملية التحقق من توقيع القالب، والتي تُستخدم لضمان سلامة القوالب المتوفرة في مستودع القوالب الرسمي.
يعد الاستغلال الناجح للثغرة الأمنية بمثابة تجاوز لخطوة التحقق الحاسمة هذه، مما يسمح للمهاجمين بصياغة قوالب ضارة يمكنها تنفيذ تعليمات برمجية عشوائية والوصول إلى البيانات الحساسة من المضيف.
“نظرًا لأن التحقق من التوقيع هو الطريقة الوحيدة المتاحة حاليًا للتحقق من صحة قوالب النوى، فإنه يمثل نقطة فشل واحدة محتملة،” الباحث في ويز جاي جولدنبرج قال في تحليل الجمعة.
تنبع المشكلة في جوهرها من استخدام التعبيرات العادية (المعروفة أيضًا باسم regex) للتحقق من صحة التوقيع وتعارض التحليل الناتج عن استخدام كل من المحلل اللغوي regex وYAML، مما يفتح الباب أمام سيناريو حيث يمكن للمهاجم تقديم ” \r” بحيث يتجنب التحقق من التوقيع المستند إلى regex ويتم تفسيره على أنه فاصل أسطر بواسطة محلل YAML.
وبعبارة أخرى، يمكن ربط تناقضات التحليل هذه لإنشاء قالب Nuclei يستخدم “\r” لتضمين سطر “#Digest:” ثانٍ يتجنب عملية التحقق من التوقيع ولكن يتم تحليله وتنفيذه بواسطة مترجم YAML.
“يتعامل التحقق من التوقيع المستند إلى regex في Go مع \\r كجزء من نفس السطر، بينما يفسره محلل YAML على أنه فاصل أسطر. ويسمح عدم التطابق هذا للمهاجمين بإدخال محتوى يتجاوز التحقق ولكن يتم تنفيذه بواسطة محلل YAML”، أوضح غولدنبرغ. .
“يتحقق منطق التحقق من صحة الملخص الأول فقط: السطر. الملخص # الإضافي: يتم تجاهل الأسطر أثناء التحقق ولكنها تظل في المحتوى ليتم تحليلها وتنفيذها بواسطة YAML.”
علاوة على ذلك، تتضمن عملية التحقق خطوة لاستبعاد سطر التوقيع من محتوى القالب، ولكنها تفعل ذلك بطريقة يتم من خلالها التحقق من صحة السطر الأول فقط، وبالتالي ترك الأسطر اللاحقة غير متحقق منها ولكنها قابلة للتنفيذ.
بعد الكشف المسؤول، تمت معالجة الأمر بواسطة ProjectDiscovery في 4 سبتمبر 2024، مع الإصدار 3.3.2. الإصدار الحالي من Nuclei هو 3.3.7.
قال جولدنبرج: “يمكن للمهاجمين إنشاء قوالب ضارة تحتوي على # سطرًا ملخصًا تم التلاعب بها أو فواصل أسطر \r موضوعة بعناية لتجاوز التحقق من توقيع Nuclei”.
“ينشأ ناقل الهجوم لهذه الثغرة الأمنية عندما تقوم المؤسسات بتشغيل قوالب غير موثوقة أو ساهم بها المجتمع دون التحقق من الصحة أو العزل المناسب. يمكن للمهاجم استغلال هذه الوظيفة لإدخال قوالب ضارة، مما يؤدي إلى تنفيذ أوامر عشوائية، أو استخراج البيانات، أو اختراق النظام.”
إرسال التعليق