شعار زيفيرنت

التصحيح الآن: خلل Kubernetes RCE يسمح بالسيطرة الكاملة على عقد Windows

التاريخ:

يسمح خطأ أمني في نظام إدارة الحاويات Kubernetes المستخدم على نطاق واسع للمهاجمين بتنفيذ التعليمات البرمجية عن بعد مع امتيازات النظام على نقاط نهاية Windows، مما قد يؤدي إلى الاستيلاء الكامل على جميع عقد Windows داخل مجموعة Kubernetes.

اكتشف تومر بيليد، الباحث الأمني ​​في Akamai، الخلل، والذي تم تتبعه باسم CVE-2023-5528 وحصل على درجة CVSS تبلغ 7.2. وأوضح أن الاستغلال يكمن في معالجة أحجام Kubernetes، وهي ميزة تهدف إلى دعم مشاركة البيانات بين الكبسولات الموجودة في المجموعة، أو تخزينها بشكل مستمر خارج دورة حياة الكبسولة. في بلوق وظيفة تم النشر في 13 مارس.

كمتجه للهجوم، سيحتاج المهاجمون لإنشاء القرون والأحجام المستمرة على عقد Windows، مما يسمح لهم بالتصعيد إلى امتيازات المسؤول على تلك العقد، وفقًا لقائمة GitHub للخلل.

يقول بيليد لـ Dark Reading: "من السهل جدًا استغلال هذه الثغرة الأمنية لأن المهاجم سيحتاج فقط إلى تعديل معلمة وتطبيق 3 ملفات YAML للحصول على RCE عبر نقاط نهاية Windows". إطار عمل كوبرنيتس وكتب في المنشور: "يستخدم ملفات YAML في كل شيء بشكل أساسي".

مجموعات Kubernetes لا يتأثرون إلا إذا كانوا يستخدمون مكونًا إضافيًا للتخزين داخل الشجرة لنظام التشغيل Windows؛ ومع ذلك، "هناك العديد من أنواع وحدات التخزين المختلفة التي يمكن للمطورين استخدامها"، مما يؤدي إلى إنشاء سيناريوهات هجوم مختلفة، كما لاحظ بيليد في المنشور.

تعتبر عمليات التثبيت الافتراضية لـ Kubernetes الأقدم من الإصدار 1.28.4 والتي تقوم بتشغيل كل من عمليات النشر المحلية وخدمة Azure Kubernetes عرضة للخطر. تم تنبيه فريق Kubernetes بالخلل وهناك تصحيح متاح للمعالجة، وهو ما يوصى به بشدة.

كتب بيليد: "نظرًا لأن المشكلة تكمن في الكود المصدري، فسيظل هذا التهديد نشطًا ومن المرجح أن يزداد استغلاله - ولهذا السبب ننصح بشدة بتصحيح مجموعتك حتى لو لم يكن بها أي عقد Windows".

اتباع العيوب

اكتشف بيليد الخلل بعد التحقيق في ثغرة أمنية أخرى تشترك في نفس السبب الجذري: استدعاء وظيفة غير آمنة ونقص في تعقيم مدخلات المستخدم في Kubernetes. وكان هذا العيب CVE-2023-3676، وهي ثغرة أمنية يمكن استغلالها عن طريق تطبيق ملف YAML ضار على المجموعة. أدى اكتشاف هذه الثغرة الأمنية إلى اكتشاف ثغرتين أخريين ناجمتين أيضًا عن عدم تنظيف معلمة subPath في ملفات YAML، مما يؤدي إلى إنشاء وحدات تخزين ذات مجلدات ويفتح فرصة لحقن تعليمات برمجية ضارة.

وأوضح بيليد: "في نهاية هذا البحث، لاحظنا مكانًا محتملاً في الكود يبدو وكأنه قد يؤدي إلى ثغرة أمنية أخرى في حقن الأوامر"، والتي أصبحت في النهاية CVE-2023-5528.

وكتب: "بعد عدة محاولات، تمكنا من تحقيق نتيجة مماثلة: تنفيذ الأوامر كخدمة kubelet (امتيازات النظام)".

الاستغلال والتصحيح

ركز إثبات المفهوم الذي نفذه الباحثون على المجلدات المحلية، وهي أحد أنواع المجلدات داخل Kubernetes. أثناء إنشاء حجرة تحتوي على وحدة تخزين محلية، ستصل خدمة kubelet في النهاية إلى وظيفة من خلال استدعاء سطر cmd إلى "exec.command"، مما يؤدي إلى إنشاء رابط رمزي بين موقع وحدة التخزين على العقدة والموقع داخل الحاوية.

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

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

يزيل التصحيح الذي تم إنشاؤه للخلل فرصة الحقن عن طريق حذف استدعاء cmd واستبداله بوظيفة GO الأصلية التي ستؤدي نفس العملية لإنشاء الارتباط الرمزي. وأوضح قائلاً: "الآن، ستقوم مكتبة GO 'os' فقط بتنفيذ عملية الارتباط الرمزي، كما كان مقصودًا في البداية".

هل نظامك ضعيف؟

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

يقول بيليد: "إن Kubernetes أداة معقدة وقوية للغاية". "من ناحية، تسمح قوتها للمستخدمين بتخصيص تجربتهم وفقًا لاحتياجات مؤسستهم، ولكن من ناحية أخرى، تجعل من الصعب جدًا تأمين كل جانب من جوانبها من وجهة نظر المطور أو المستخدم."

في الواقع، فإن اكتشاف CVE-2023-5528 والعيوب المرتبطة به يسلط الضوء على المؤسسات التي تنشر Kubernetes "مدى أهمية التحقق من YAMLs الخاصة بتكوين Kubernetes، نظرًا لعدم وجود تعقيم المدخلات في العديد من مناطق التعليمات البرمجية في Kubernetes نفسها ومشاريعها الجانبية،" كتب بيليد. .

إن اتباع أفضل الممارسات مثل التحكم في الوصول المستند إلى الأدوار (RBAC) والتأكد من تحديث المجموعات "من شأنه أيضًا أن يخفف من جزء كبير من التهديدات المعروفة"، كما يقول لـ Dark Reading.

تكون بيئة المؤسسة التي تقوم بتشغيل Kubernetes عرضة لاستغلال الخلل فقط إذا كان إصدار النظام أقدم من 1.28.4 وكان النظام يشغل عقد Windows. في هذه الحالة، قدم Akamai أمرًا للمسؤولين للتشغيل لتحديد ما إذا كان يجب تصحيح النظام. إذا كان الأمر كذلك، ينبغي إعطاء الأولوية للترقيع.  

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

إذا لم يكن التصحيح الفوري خيارًا متاحًا، فيمكن لـ Akamai أيضًا هو توفير قاعدة وكيل السياسة المفتوحة (OPA) للمساعدة في اكتشاف هذا النوع من السلوك وحظره. OPA هو وكيل مفتوح المصدر يسمح للمستخدمين بتلقي البيانات حول حركة المرور الداخلة والخارجة من العقد واتخاذ الإجراءات المستندة إلى السياسة بشأن البيانات المستلمة.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة