الهجمات الإلكترونية المدعومة بالذكاء الاصطناعي: كيفية الكشف عن التهديدات الذكية ومنعها والدفاع ضدها

اقرأ الآن
نستخدمُ الذكاء الاصطناعي في ترجمات الموقع، ومع أننا نسعى جاهدين لبلوغ الدقة قد لا تكون هذه الترجمات دقيقةً بنسبة 100% دائمًا. تفهّمك لهذا الأمر هو موضع تقدير لدينا.

فيروس CVE-2024-36401 في الخادم الجغرافي مفتوح المصدر يعرض الأنظمة لتنفيذ التعليمات البرمجية عن بُعد

ب OPSWAT
شارك هذا المنشور
الصور الشخصية للمشاركين في برنامج زمالة OPSWAT
المشاركون في برنامج زمالة OPSWAT

في هذه المدونة، نستكشف الثغرة الأمنية CVE-2024-36401 - وهي ثغرة أمنية وُجدت في GeoServer، وهو خادم مفتوح المصدر قائم على Java يُستخدم على نطاق واسع لمعالجة البيانات الجغرافية المكانية ومشاركتها. هذه الثغرة، التي يمكن أن تسمح بتنفيذ التعليمات البرمجية عن بُعد (RCE) من قبل مستخدمين غير مصادقين، تؤكد على الأهمية البالغة لتصحيح عمليات نشر GeoServer في أسرع وقت ممكن. 

في أحدث تحليل أمني لدينا، يقوم اثنان من الزملاء الخريجين من OPSWAT بالتحقيق في هذا التهديد من خلال

كما سنشارك أيضًا كيف يمكن لتقنية OPSWAT SBOM اكتشاف هذه الثغرة، بالإضافة إلى توفير خطوات قابلة للتنفيذ للفرق لتأمين البنية التحتية الجغرافية المكانية قبل أن يهاجمها المهاجمون.

رسم توضيحي يمثل تحليل نقاط ضعف الخادم الجغرافي

نظرة عامة على الخادم الجغرافي

GeoServer هو خادم مفتوح المصدر قائم على جافا مصمم لعرض البيانات الجغرافية المكانية وتحريرها ومشاركتها. تم إطلاق GeoServer في البداية في عام 2001 من قبل TOPP (مشروع التخطيط المفتوح)، وقد تم تطويره لتحسين المشاركة العامة في التخطيط الحكومي والحضري من خلال تبادل البيانات المكانية المفتوحة. وبعد مرور أكثر من عقدين من الزمن، نضج GeoServer ليصبح منصة قوية قادرة على التعامل مع مختلف صيغ البيانات المكانية والتكامل مع مصادر البيانات المختلفة.

يوفر GeoServer خدمات تستند إلى معايير OGC (الاتحاد الجغرافي المكاني المفتوح) ، بما في ذلك:

  • WFS (خدمة ميزات الويب) - تتيح إنشاء معلومات جغرافية بتنسيق متجه وتعديلها وتبادلها باستخدام HTTP
  • WCS (خدمة تغطية الويب) - تسهّل الوصول إلى البيانات النقطية (مثل صور الأقمار الصناعية) للنمذجة والتحليل المعقدين.
  • WMS (خدمة خرائط الويب) - توفر واجهة HTTP بسيطة لطلب صور الخرائط.

معلومات أساسية عن CVE-2024-36401

يؤثر CVE-2024-36401 على إصدارات GeoServer قبل 2.25.2 و2.24.4 و2.23.6. وينشأ هذا الخلل من التقييم غير الآمن لأسماء الخصائص كتعابير XPath عبر معلمات طلب OGC متعددة. يمكن للمهاجمين استغلال هذا الخلل لإنشاء RCE (تنفيذ التعليمات البرمجية عن بُعد) عن طريق حقن مدخلات مصممة في تثبيت GeoServer الافتراضي.

 وفقًا لإرشادات GitHub الأمنية، تحمل هذه الثغرة الأمنية درجة CVSS v3.1 9.8 (حرجة). 

لقطة شاشة لمقاييس نقاط CVSS الأساسية المستخدمة لتقييم الثغرات البرمجية

ميزات GeoServer البسيطة مقابل الميزات المعقدة

يدعم GeoServer كلاً من أنواع الميزات البسيطة والمعقدة لاستيعاب هياكل البيانات الجغرافية المكانية المختلفة، من مجموعات البيانات المسطحة إلى مجموعات البيانات المتداخلة والمعقدة. ومع ذلك، فإن المعالجة المعيبة لتعابير XPath عبر أنواع البيانات هذه هي ما يجعل CVE-2024-36401 قابلة للاستغلال.

ميزات بسيطة

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

على سبيل المثال، يمكن بسهولة تحويل جدول يمثل الشركات بأعمدة مثل المعرف والاسم والموقع إلى ميزات XML بسيطة.

الهويةالاسمالموقع
1OPSWATالنقطة (10.769829، 106.685248)
تعيين ميزات GeoServer البسيطة من صفوف قاعدة البيانات إلى عناصر XML

الميزات المعقدة

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

مثل: 

تحت جدول الشركات السابق، نضيف مفتاحًا خارجيًا ضمن جدول الشركات السابق gu_id لوصف العلاقة بين الشركة والوحدة الجيولوجية المكافئة لها:

الهويةالاسمالموقعgu_id
1OPSWATالنقطة (10.769829، 106.685248)12

يتم تخزين معلومات الوحدة الجيولوجية بشكل منفصل في الجدول الوحدة الجيولوجية:

gu_idالجرةالوصف
12urn:x-demo:feature:GeologicUnit:12نيس متحولة

باستخدام هذه الجداول، يمكننا ربط الشركة بـ SA:شركة أخذ العيناتالذي يحتوي على gsml:GeologicUnit. ينشئ هذا الإعداد ميزة معقدة، حيث يتضمن أنواعًا متداخلة وعلاقات محددة بمواصفات المجتمع بدلاً من المخططات التي يتم إنشاؤها تلقائيًا.

علاقات الوحدات الجيولوجية المتداخلة في السمات المعقدة لخادم GeoServer

تُعد هذه المرونة ضرورية لنمذجة سيناريوهات العالم الحقيقي المعقدة، ولكنها تقدم أيضًا نقاط ضعف بسبب اعتمادها على تقنيات المعالجة المتقدمة مثل تقييم JXPath لإدارة البنى المتداخلة بفعالية.

كيف ينشأ الضعف

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

  1. يعتمد GeoServer على مكتبة GeoTools لتقييم أسماء الخصائص أثناء استرجاع البيانات.
  2. إن مشترك-ج-إكسباث المستخدمة في معالجة تعبيرات XPath، تفتقر إلى التحقق المناسب من الصحة، مما قد يؤدي إلى تنفيذ تعليمات برمجية عشوائية عند معالجة تعبيرات XPath.
  3. يُعرّض هذا الخلل جميع مثيلات GeoServer إلى ثغرات محتملة في RCE، حيث يمكن للمهاجم صياغة طلب خبيث يستغل تنفيذ XPath غير الآمن للتحكم في الخادم.

نظرة عامة على سير عمل الاستغلال

  • A البريد يتم إرسال الطلب إلى GetPropertyValue العملية. ثم يحاول GeoServer استرداد الخاصية (أو القيمةالمرجع) لخاصية معينة.  
  • إذا كانت الخاصية المطلوبة موجودة في جدول تفاصيل نوع الميزة، يقوم GeoServer بمعالجتها بشكل طبيعي.
إرجاع GeoServer إلى العموم-jxpath لتقييم XPath في جدول
  • ومع ذلك، إذا لم تكن الخاصية مدرجة، يعود GeoServer إلى مشترك-ج-إكسباث لتفسير معلمة الطلب كتعبير XPath.
  • منذ مشترك-ج-إكسباث تسمح بتنفيذ تعليمات Java البرمجية لـ Java مباشرةً من XPath، تتيح هذه الآلية الاحتياطية إمكانية استغلال معلمات الطلبات التي يوفرها المستخدم لتنفيذ التعليمات البرمجية عن بُعد. ببساطة، يمكن للمهاجمين حقن تعليمات برمجية خبيثة لتحقيق RCE.
مخطط سير العمل الذي يوضح عملية GetPropertyValue من GeoServer GetPropertyValue وتدفق الهجوم

استغلال الثغرات الأمنية وتحليلها

JXPath وجسر تنفيذ جافا

معالجة المشترك-jxpath لتعبيرات XPath الضارة في GeoServer

إن مشترك-ج-إكسباث التي يُشار إليها عادةً باسم JXPath، تتيح التنقل عبر الرسوم البيانية لكائنات Java (JavaBeans، كائنات DOM، إلخ) باستخدام صيغة XPath. على سبيل المثال، إذا كان لديك كائن موظف بسيط بخصائص مثل الاسم والعنوان، فإن JXPath يتيح لك الاستعلام عن هذه الخصائص كما لو كانت عقدًا في مستند XML.

تصفح JXPath للرسوم البيانية لكائنات جافا باستخدام بناء جملة XPath

استغلال الوظائف الإضافية

بالإضافة إلى الدوال القياسية، يدعم JXPath أيضًا دوال الامتداد التي تعمل كجسر إلى Java. يعد هذا "الجسر إلى جافا" أمرًا بالغ الأهمية لأنه يسمح باستدعاء دوال جافا مباشرةً ضمن استعلامات XPath، على سبيل المثال:

JXPath الاستعلام عن خصائص كائن موظف جافا

نظرًا للقيود القليلة التي يمكن استدعاء أساليب جافا من خلال هذا الجسر، يمكن للمهاجم استغلال تنفيذ() (أو طرق مشابهة) لتنفيذ أوامر عشوائية على الخادم.

استدعاء الدالة الموسعة التي تربط بين أساليب XPath وأساليب Java

WFS GetPropertyValue

يتيح WFS الخاص ب GeoServer للمستخدمين الاستعلام عن الميزات الجغرافية المكانية ومعالجتها. في ظل الظروف العادية، فإن WFS GetPropertyValue ستعيد العملية ببساطة الخاصية المطلوبة في بنية XML.

عملية WFS GetPropertyValue التي تقوم بإرجاع خاصية XML
بنية استجابة WFS GetPropertyValue XML بنية استجابة WFS GetPropertyValue XML

تحليل سير العمل

  1. يرسل المهاجم طلب POST إلى /geoserver/wfs.
  2. يفحص GeoServer علامة XML الخارجية-wfs:GetPropertyValueValue-لتحديد العملية التي سيتم تشغيلها.
  3. ثم يقوم GeoServer بتفويض معلمات الطلب إلى الأسلوب المقابل في فئة WFS. في هذا السيناريو، يقوم المرسل بتوجيه الطلب إلى GetPropertyValue الطريقة.
مرسل الخادم الجغرافي يقوم بتوجيه الطلب إلى طريقة GetPropertyValue
  1. ضمن فئة DefaultWebFeatureService20 (WFS) الافتراضية، هذه GetPropertyValue يُعيد توجيه معلمات المستخدم إلى معالج يحمل الاسم نفسه.
  2. المعالج تشغيل() تتلقى الطريقة الطلب، بما في ذلك القيمةالمرجع معلمة يتحكم فيها المستخدم.
طريقة تشغيل المعالج() التي تتلقى طلب المستخدم مع معلمة القيمة المرجعية
  1. خلال تشغيل() GeoServer، يستردّ الخادم الجغرافي القيمة المرجعية واستدعاء تقييم() الوظيفة.
استرداد GeoServer استرداد القيمة المرجعية واستدعاء دالة تقييم()
  1. إذا كان القيمةالمرجع لا تتطابق مع خصائص GeoServer المحددة مسبقًا، يقوم GeoServer بتحويلها افتراضيًا إلى ناصل خصائص الميزةالذي يفسر القيمةالمرجع كتعبير XPath.
خاصية FeaturePropertyAccessor التي تفسر القيمة المرجعية كتعبير XPath
  1. إن الحصول على () في خاصية الميزة في خاصية الميزة يستخدم مشترك-ج-إكسباث لتنفيذ استعلام XPath. هنا، يقوم المستخدم القيمةالمرجع مباشرةً إلى معلمة xpath دون التحقق من صحتها. من خلال JXPathContext.newContext()، يقوم GeoServer بتهيئة بيئة لاستعلامات XPath، ثم يقوم بتشغيلها عبر تكرار المؤشرات().
Commons-jxpath تنفيذ استعلام XPath مع القيمة التي يوفرها المستخدم

نظرًا لأن JXPath يدعم دوال الامتداد، يمكن للمهاجمين حقن تعليمات برمجية خبيثة في تعبير XPath، مما يؤدي إلى تنفيذ تعليمات برمجية عشوائية على مثيل GeoServer.

يقوم المهاجم بإدخال كود برمجي خبيث عبر تعبير XPath لـ RCE

توضح هذه السلسلة من الأحداث كيف أن التعامل غير الآمن مع القيمةالمرجع يمكن أن تؤدي المعلمة إلى RCE، مما يمثل تهديدًا أمنيًا خطيرًا لعمليات نشر GeoServer الضعيفة.

محاكاة الهجوم

لمحاكاة هذا الاستغلال في سيناريو واقعي، قام زملاؤنا الخريجون في OPSWAT بنشر GeoServer على جهاز ويندوز محلي. تم عرض الواجهة التالية عند الوصول إلى GeoServer.

لقطة شاشة لواجهة GeoServer على جهاز ويندوز لمحاكاة الثغرات الأمنية

وبمجرد تشغيل الخادم، يمكن للمهاجم استغلال الثغرة عن طريق إرسال طلب POST بتعبير XPath خبيث عبر القيمةالمرجع إلى نقطة النهاية /geoserver/wfs.

مقتطف شفرة XML يوضح طلب POST خبيثًا يستغل القيمة المرجعية في GeoServer

النتيجة: بعد إرسال الطلب، يقوم تعبير XPath الخبيث بتنفيذ أمر النظام وتشغيل تطبيق الحاسبة.

لقطة شاشة توضح تشغيل تطبيق الآلة الحاسبة بعد نجاح عملية اختراق RCE

تخفيف الآثار والتوصيات

يمكن أن يتصاعد الاستغلال البسيط إلى هجوم على سلسلة توريد برمجيات، خاصةً في المشاريع التي تعتمد على برمجيات مفتوحة المصدر مثل GeoServer. تساعد تقنيةOPSWAT SBOM (فاتورة الموادSoftware ) في تحديد الثغرات الأمنية مثل CVE-2024-36401 في قاعدة التعليمات البرمجية الخاصة بك.

يوضح هذا المثال كيف أن OPSWAT SBOM:

  1. يكتشف مكونات البرامج المتأثرة بالثغرات الأمنية.
  2. تقييم وتصنيف درجة خطورة الثغرة الأمنية - هنا، تم وضع علامة "حرجة" على الثغرات الأمنية في GeoServer.
  3. يحدد الإصدار المتأثر.
  4. يوصي بالإصدار الثابت حتى تتمكن فرق التطوير من تطبيق التصحيحات أو اتخاذ تدابير الإصلاح على الفور.
لقطة شاشة للوحة التحكم ل OPSWAT SBOM تكشف عن حزم GeoServer ذات الثغرات الأمنية الحرجة
تكتشف تقنية OPSWAT SBOMSoftware فاتورة الموادSoftware ) حزم GeoServer ذات الثغرات الأمنية الحرجة.

الخطوات الأخرى الموصى بها

  1. قم بتحديث GeoServer: قم بالترقية إلى إصدارات GeoServer 2.25.2 أو 2.24.4 أو 2.23.6 (أو أحدث) حيث تم تصحيح الثغرة.
  2. تبعيات التدقيق: استخدم بانتظام أدوات مثل OPSWAT SBOM لتحديد المكتبات القديمة (على سبيل المثال, مشترك-ج-إكسباث) في بيئتك.
  3. تقييد الوصول: انشر GeoServer خلف جدران الحماية أو طبقات المصادقة لتقليل سطح الهجوم.
  4. راقب الإرشادات الأمنية: راقب ملاحظات إصدار GeoServer الرسمية وقواعد بيانات مكافحة التطرف العنيف للبقاء على اطلاع دائم على التصحيحات الجديدة.

نبذة عن OPSWAT SBOM

يدعم OPSWAT SBOM لغات البرمجة الأكثر شيوعًا، مما يوفر لفرق تطوير البرمجيات إمكانية الاطلاع على مكتبات الطرف الثالث مفتوحة المصدر والتبعيات المرتبطة بها وأحدث الإصدارات المتاحة للترقية. يمكن للمطوِّرين دمج OPSWAT SBOM في التعليمات البرمجية المصدرية وخدمات الحاويات مثل GitHub وBitBucket وGitLab وAmazon ECR وDockerHub وغيرها. تعرف على المزيد حول SBOM.

تحدث إلى أحد الخبراء اليوم للتعرف على كيفية دمج أدوات وحلول OPSWAT مع بنيتك التحتية الحالية وسير العمل لديك:

العلامات:

ابق على اطلاع دائم OPSWAT!

اشترك اليوم لتلقي آخر تحديثات الشركة, والقصص ومعلومات عن الفعاليات والمزيد.