إلى الخلف
ذكاء نقاط الضعف
جدول المحتوى

In brief

1. Introduction: Understanding CVE-2023-20887 2. CVE-2023-20087 - Vulnerability Analysis? 3. CVE-2023-20887 - The Command Injection how it works ? 4. How the bypass works 5. Mitigating Risk: Steps to Secure Against CVE-2023-20887 6. Threat detection on CVE-2023-20887

تم اكتشاف CVE 2023-20887 في عمليات VMware Aria بدرجة CVSS تبلغ 9.8. يتيح الحل VMware Aria Operations إدارة عمليات تكنولوجيا المعلومات عبر البيئات الخاصة والهجينة والمتعددة السحابات من خلال منصة موحدة وعالية الأداء.

يسمح CVE للمهاجم بتنفيذ أوامر عن بُعد على المثيلات المتأثرة. آن تم بالفعل إطلاق استغلال الثغرة الأمنية علنًا ويمكن استخدامها من قبل المهاجمين لاستهداف الحالات الضعيفة على نطاق واسع. تكون المثيلات ذات الإصدار 6.0 والإصدارات الأحدث عرضة لهذا CVE. أصدرت VMware بالفعل تصحيح الثغرة الأمنية وينصح بتصحيح المثيلات الخاصة بك.

Affected Product

CVE Type

Version

CVSSv3 base score 

VMware Aria Operations for Networks (Formerly vRealize Network Insight)

Remote Command Injection Vulnerability

6.x

9.8

تحليل نقاط الضعف

أحد الإجراءات المتاحة في VMware هو»إنشاء حزمة دعم«، سبب الثغرة هو إدخال الأوامر في حزمة الدعم.

حقن الأوامر

أثناء إنشاء حزمة دعم في عمليات VMware Aria، تم تسمية وظيفة باسم»إنشاء حزمة دعم«يسمى. تتوقع هذه الوظيفة المعلمات التالية في أمر الطلب:

  • معرف العميل
  • معرف العقدة
  • معرف الطلب
  • معرفات طلب الإخلاء
ملاحظة: في VMware، تشير عملية CreateSupportBundle إلى ميزة تسمح للمستخدمين بإنشاء حزمة دعم لمنتج أو مكون معين من VMware. تحتوي حزمة الدعم على معلومات تشخيصية وسجلات يمكن أن تساعد موظفي دعم VMware في استكشاف المشكلات وإصلاحها وتقديم المساعدة.

يتم تحليل هذه المعلمات كما هو موضح في الكود المصدري للفئة 'إنشاء حزمة الدعم _ARGS'في الملحق. يتم بعد ذلك تحليل هذه المعلمات في شكل بنية مثل هذه واستخدامها بواسطة 'إنشاء حزمة دعم'الوظيفة:



struct {
	customerId,
	nodeId,
	requestId,
	evictionRequestIDs
}

كما هو موضح في الكود المصدري للوظيفة 'إنشاء حزمة دعم«الوظيفة في الملحق،»«معرف العقدة» سيتم تمريرها إلى الوظيفة 'حزم الدعم المنشورة من Evict في 'عناوين البرنامج النصي» فئة. الكود المصدري لـ 'حزم الدعم المنشورة من Evict'يبدو كما يلي:

الكود المصدري لوظيفة حزم الدعم المنشورة في Evict

الآن، إذا لاحظنا بعناية، فإن السطر 16 يأخذ»«معرف العقدة» ويقوم السطر 21 بتشغيله كأمر على النظام. لذلك، باستخدام حرف الهروب مثل (`)، يمكن للمهاجم تنفيذ الأوامر الخاصة به مما يؤدي إلى ثغرة أمنية في تنفيذ التعليمات البرمجية.

لذلك من أجل تنفيذ الأوامر، يمكن للمهاجم تقديم طلب نشر بالبيانات التالية:

نموذج لكائن JSON يُستخدم في طلب النشر لتنفيذ الأوامر

من المفترض أن يكون المفتاح «2" هو NodeID في هذا الطلب الضار (استنادًا إلى البنية المذكورة سابقًا). الآن من أجل القيام بذلك عن بُعد، كل ما يحتاجه المهاجم هو تقديم طلب إلى»من ملح البحر إلى ساسرفلت«نقطة النهاية، أي»https://vulnerable-domain.com/saas.resttosaasservlet».

على الرغم من أن تنفيذ هذا الأمر سهل نسبيًا، إلا أن هناك مشكلة. تكوين nginx الموجود في «/etc/nginx/المواقع المتاحة/vnera» يقيد الوصول إلى `/ إعادة تشغيل إلى ساسرفل` نقطة النهاية عند الوصول إليها عبر المنفذ 443. تسمح القاعدة على وجه التحديد بالطلبات الناشئة فقط من '«المضيف المحلي». سيتم إرسال أي طلب ناجح إلى نقطة النهاية هذه إلى المنفذ 9090، الذي يستضيف خادم Apache Thrift RPC.

 

ذا بايباس

إذا نظرنا إلى ملف تكوين Apache في»/etc/nginx/المواقع المتاحة/vnera«مما يقيد الوصول إلى نقطة النهاية الضعيفة من الإنترنت، يمكننا رؤية القاعدة التالية»أعد كتابة ^/saas (.*) $/استراحة $1؛«كما هو موضح في الصورة أدناه.

الكود المصدري لملف تكوين أباتشي في /etc/nginx/المواقع المتاحة/vnera

يمكن الآن تجاوز هذه القاعدة عن طريق تمرير عنوان URL بـ».«مثل:»https://<IP-OF-SERVER>/saas. /استرح إلى ساسرفلت». سيتم التعامل مع هذا من خلال regex وتحويله إلى عنوان URL التالي:»https://<IP-OF-SERVER>/. /استرح إلى ساسرفلت«، وبالتالي تجاوز القيود المفروضة والسماح بالوصول إلى الكود الضعيف عن بُعد مما يؤدي إلى تحقيق RCE.

ما يثير القلق هنا هو أن إثبات مفهوم هذه الثغرة الأمنية قد كان بالفعل تم إصداره على جيت هاب ويمكن للمهاجمين استخدامها لاختراق المثيلات غير المصححة لعمليات VMware Aria للشبكات.

عوامل التخفيف

قم بتصحيح نقاط النهاية الضعيفة عن طريق تنزيل الإصدار المحدث من https://kb.vmware.com/s/article/92684 

اكتشاف التهديدات

يمكن استخدام قاعدة YARA التالية لاكتشاف مهاجم يحاول استغلال هذه الثغرة الأمنية على شبكتك. تعتمد القاعدة على المنطق التالي:

  1. يحاول المهاجم الوصول إلى نقطة النهاية الضعيفة باستخدام المسار:»/saa. /استرح إلى ساسرفلت».
  2. يستخدم المهاجم طريقة HTTP POST عند نقطة النهاية هذه.
  3. تحتوي بيانات المنشور على الحرف ` في البداية أو النهاية أو بينهما.


rule Detect_VMWare_Aria_RCE_Network
{
   meta:
       description = "Detects network traffic related to VMWare Aria Operations for Networks (vRealize Network Insight) pre-authenticated RCE"
       author = "Vikas Kundu"
       reference = "https://summoning.team/blog/vmware-vrealize-network-insight-rce-cve-2023-20887/"


   strings:
       $httpMethod = "POST" nocase wide
       $urlPath = "/saas./resttosaasservlet" nocase wide
       $payload_with_char_at_start_or_end = "[/[^,]+/,\"createSupportBundle\", /[^,]+/, /[^,]+/, {\"1\": {\"str\": /[^,]+/}, \"2\": {\"str\": /`.*`/}, \"3\":{\"str\":/[^,]+/},\"4\":{\"lst\":[/[^,]+/,/[^,]+/,/[^,]+/,/[^,]+/]}}]" nocase wide
       $payload_with_char_in_between =      "[/[^,]+/,\"createSupportBundle\", /[^,]+/, /[^,]+/, {\"1\": {\"str\": /[^,]+/}, \"2\": {\"str\": /.*`.*/ }, \"3\":{\"str\":/[^,]+/},\"4\":{\"lst\":[/[^,]+/,/[^,]+/,/[^,]+/,/[^,]+/]}}]" nocase wide


   condition:
       $httpMethod at 0 and any of (payload_with_char_at_start_or_end, $payload_with_char_in_between) and $urlPath at 0
}



المراجع

الملحق

الكود المصدري لوظيفة CreateSupportBundle

الكود المصدري لفئة CreateSupportBundle_Args

فيكاس كوندو
A naturally curious mind driven by the need to understand how things work and how to make them better. Passionate about learning, experimenting, and exploring new ideas across technology and security.
أنيرود باترا
محلل التهديدات في CloudSek

مدونات ذات صلة