ثغرة أمنية في Docker تسمح لك بالهروب من الحاوية

في مجموعة الأدوات لإدارة حاويات Linux Docker المعزولة المحددة وهن (CVE-2018-15664)، والذي يسمح، في ظل ظروف معينة، بالوصول إلى بيئة المضيف من حاوية عندما يكون من الممكن تشغيل صورها الخاصة على النظام أو عند الوصول إلى حاوية قيد التشغيل. تؤثر المشكلة على جميع إصدارات Docker وتظل دون إصلاح (مقترحة ولكن لم يتم قبولها بعد، رقعة قماشية، الذي ينفذ تعليق تشغيل الحاوية أثناء تنفيذ العمليات باستخدام نظام الخدمات الثابتة.

تسمح الثغرة الأمنية باستخراج الملفات من الحاوية إلى جزء عشوائي من نظام الملفات المضيف عند تنفيذ الأمر "docker cp". يتم استخراج الملفات باستخدام امتيازات الجذر، مما يسمح بقراءة أو كتابة أي ملفات في بيئة المضيف، وهو ما يكفي للحصول على السيطرة على نظام المضيف (على سبيل المثال، يمكنك إعادة كتابة /etc/shadow).

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

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

نظرًا لأن نافذة الوقت لظهور حالة السباق محدودة للغاية في الإعداد استغلال النموذج الأولي عند إجراء عمليات نسخ من حاوية، كان من الممكن تحقيق هجوم ناجح في أقل من 1% من الحالات عن طريق استبدال رابط رمزي بشكل دوري في المسار المستخدم في عملية النسخ (تم تنفيذ هجوم ناجح بعد حوالي 10 ثوانٍ من المحاولة المستمرة لنسخ ملف في حلقة باستخدام الأمر "docker cp").

من خلال إجراء عملية نسخ إلى حاوية، من الممكن تحقيق هجوم متكرر لاستبدال الملف على نظام المضيف في عدد قليل من التكرارات. الهجوم ممكن لأن مفهوم "chrootarchive" يستخدم عند النسخ إلى حاوية، حيث تقوم عملية archive.go باستخراج الأرشيف ليس إلى chroot جذر الحاوية، ولكن إلى chroot الدليل الرئيسي لمسار الهدف الذي يتحكم فيه المهاجم، ولا يوقف تنفيذ الحاوية (يتم استخدام chroot كعلامة لاستغلال حالة السباق).

المصدر: opennet.ru

إضافة تعليق