ملايين الثنائيات في وقت لاحق. كيف تقوى لينكس

TL ؛ د . في هذه المقالة ، نستكشف مخططات التقوية التي تنجح في الظهور على خمس توزيعات Linux شهيرة. بالنسبة لكل منها ، اتخذنا تكوين kernel الافتراضي ، وقمنا بتنزيل جميع الحزم ، وقمنا بتحليل أنظمة الحماية في الملفات الثنائية المرفقة. نحن نعتبر توزيعات OpenSUSE 12.4 و Debian 9 و CentOS و RHEL 6.10 و 7 وكذلك Ubuntu 14.04 و 12.04 و 18.04 LTS.

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

أثبت التحقق أن أكبر عدد من أساليب الحماية يتم تطبيقه في Ubuntu 18.04 على مستوى نظام التشغيل والتطبيق ، متبوعًا بـ Debian 9. ومن ناحية أخرى ، في مخططات OpenSUSE 12.4 و CentOS 7 و RHEL 7 ، يتم أيضًا تنفيذ خطط الحماية الأساسية ، كما يتم تطبيق حماية تصادم المكدس على نطاق أوسع. مع مجموعة أكثر كثافة بكثير من الحزم افتراضيا.

مقدمة


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

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

CVE والأمن


لقد رأينا جميعًا مقالات تحمل عناوين مثل "أكثر التطبيقات عرضة للتأثر في السنة" أو "أنظمة التشغيل الأكثر عرضة للخطر". عادةً ما تكون هناك إحصائيات حول العدد الإجمالي لسجلات الثغرات الأمنية مثل CVE (الثغرات الأمنية المشتركة والتعرضات) ، والتي تم الحصول عليها من قاعدة بيانات الضعف الوطنية (NVD) من NIST ومصادر أخرى. بعد ذلك ، يتم ترتيب هذه التطبيقات أو أنظمة التشغيل حسب عدد CVEs. لسوء الحظ ، على الرغم من أن CVEs مفيدة جدًا لتتبع المشكلات وإبلاغ البائعين والمستخدمين ، إلا أنهم لا يقولون سوى القليل عن الأمان الحقيقي للبرنامج.

على سبيل المثال ، ضع في اعتبارك إجمالي عدد CVEs على مدار السنوات الأربع الماضية لنظام Linux kernel وتوزيعات الخوادم الخمسة الأكثر شعبية ، وهي Ubuntu و Debian و Red Hat Enterprise Linux و OpenSUSE.


التين. 1

ماذا يخبرنا هذا المخطط؟ هل يعني المزيد من CVE أن توزيعًا ما يكون أكثر عرضة للخطر من توزيع آخر؟ لا يوجد جواب. على سبيل المثال ، في هذه المقالة سترى أن دبيان يطبق آليات أمنية أكثر صرامة مقارنة ، على سبيل المثال ، OpenSUSE أو RedHat Linux ، ولكن لدى دبيان CVE أكثر. ومع ذلك ، فإنها لا تعني بالضرورة ضعف الأمن: حتى وجود CVE لا يقول ما إذا كانت الثغرة الأمنية قابلة للاستغلال أم لا . تعطي درجات الشدة فكرة عن مدى احتمال استغلال الثغرة الأمنية ، ولكن في النهاية تعتمد قابلية الاستغلال إلى حد كبير على الحماية الموجودة في الأنظمة المتأثرة ، وكذلك على موارد وقدرات المهاجمين. علاوة على ذلك ، لا يشير نقص تقارير CVE إلى أي نقاط ضعف أخرى غير مسجلة أو غير معروفة . لا يمكن تفسير الاختلاف في CVE بجودة البرنامج ، ولكن بواسطة عوامل أخرى ، بما في ذلك الموارد المخصصة للاختبار ، أو حجم قاعدة المستخدمين. في مثالنا ، قد تشير المزيد من CVEs من ديبيان ببساطة إلى أن دبيان تقدم المزيد من حزم البرمجيات.

بالطبع ، يوفر نظام CVE معلومات مفيدة تتيح لك إنشاء حماية مناسبة. كلما فهمنا أسباب فشل البرنامج بشكل أفضل ، كان من الأسهل تحديد طرق التشغيل الممكنة وتطوير آليات الكشف والاستجابة المناسبة. في التين. يوضح الشكل 2 فئات الضعف لجميع التوزيعات على مدار السنوات الأربع الماضية ( المصدر ). من الواضح على الفور أن معظم CVEs تندرج في الفئات التالية: رفض الخدمة (DoS) ، تنفيذ التعليمات البرمجية ، تجاوز السعة ، تلف الذاكرة ، تسرب المعلومات (exfiltration) ، وتصعيد الامتياز. على الرغم من أن العديد من CVEs يتم تغطيتها عدة مرات في فئات مختلفة ، بشكل عام ، إلا أن نفس المشكلات لا تزال قائمة من سنة إلى أخرى. في الجزء التالي من المقالة ، سنقوم بتقييم استخدام أنظمة الحماية المختلفة لمنع استغلال هذه الثغرات الأمنية.


التين. 2

المهام


في هذه المقالة ، نعتزم الإجابة على الأسئلة التالية:

  • ما هو أمن توزيعات لينكس المختلفة؟ ما هي آليات الدفاع الموجودة في تطبيقات مساحة النواة والمستخدم؟
  • كيف تغير اعتماد آليات الحماية لمختلف التوزيعات مع مرور الوقت؟
  • ما متوسط ​​التبعيات للحزم والمكتبات لكل توزيع؟
  • ما هي الحماية التي تنفذ لكل ثنائي؟

اختيار توزيعات


اتضح أنه من الصعب العثور على إحصائيات دقيقة حول عمليات توزيع التوزيعات ، حيث أن عدد مرات التنزيل لا يشير في معظم الحالات إلى عدد عمليات التثبيت الحقيقية. ومع ذلك ، فإن متغيرات يونيكس تشكل غالبية أنظمة الخادم (69.2 ٪ على خوادم الويب ، وفقا لإحصاءات من W3techs ومصادر أخرى) ، وحصتها في تزايد مستمر. لذلك ، بالنسبة لدراستنا ، ركزنا على التوزيعات المتاحة خارج الصندوق على منصة Google Cloud . على وجه الخصوص ، اخترنا نظام التشغيل التالي:

التوزيع / الإصدارجوهربيلد
OpenSUSE 12.44.12.14-95.3 الافتراضي# 1 SMP Wed Dec 5 06:00:48 UTC 2018 (63a8d29)
دبيان 9 (تمتد)4.9.0-8-AMD64# 1 SMP Debian 4.9.130-2 (2018-10-27)
CentOS 6.102.6.32-754.10.1.el6.x86_64# 1 SMP Tue Jan 15 17:07:28 UTC 2019
CentOS 73.10.0-957.5.1.el7.x86_64# 1 SMP Fri February 1 14:54:57 UTC 2019
Red Hat Enterprise Linux Server 6.10 (سانتياغو)2.6.32-754.9.1.el6.x86_64# 1 SMP Wed 21 نوفمبر 15:08:21 EST 2018
Red Hat Enterprise Linux Server 7.6 (Maipo)3.10.0-957.1.3.el7.x86_64# 1 SMP Thu November 15 17:36:42 UTC 2018
أوبونتو 14.04 (مضمونة طاهر)4.4.0-140-عام
# 166 ~ 04/14/1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20 ...
Ubuntu 16.04 (Xenial Xerus)4.15.0-1026-GCP# 27 ~ 16.04.1-Ubuntu SMP Fri Dec 7 09:59:47 UTC 2018
أوبونتو 18.04 (بيونيك بيفر)4.15.0-1026-GCP# 27-Ubuntu SMP Thu Dec 6 18:27:01 UTC 2018
الجدول 1

تحليل


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

تحليل التكوين النواة


استخدمنا سكريبت تحليل يستند إلى المدقق kconfig مجانا . نحن نعتبر خيارات الحماية خارج نطاق التوزيعات المحددة ومقارنتها بالقائمة من Kernel Self-Defense Project (KSPP). بالنسبة لكل معلمة تكوين ، يصف الجدول 2 الإعداد المرغوب فيه: علامة الاختيار تخص التوزيعات التي تتوافق مع توصيات KSSP (للحصول على شرح للمصطلحات انظر هنا ؛ في المقالات المستقبلية سنشرح عدد طرق الحماية هذه التي ظهرت وكيفية اختراق النظام في غيابها).





بشكل عام ، تحتوي النواة الأحدث على إعدادات أكثر صرامة خارج الصندوق. على سبيل المثال ، ليس لدى CentOS 6.10 و RHEL 6.10 على kernel 2.6.32 معظم الوظائف الهامة المطبقة في النواة الجديدة ، مثل SMAP أو أذونات RWX قوية أو تخصيص عنوان عشوائي أو حماية copy2usr. تجدر الإشارة إلى أن العديد من خيارات التكوين من الجدول غير متوفرة في الإصدارات القديمة من kernel ولا تنطبق في الواقع - لا يزال يتم الإشارة إلى ذلك في الجدول على أنه عدم وجود حماية مناسبة. وبالمثل ، إذا كانت معلمة التكوين غير متوفرة في هذا الإصدار ، ولأمان ، يجب تعطيل هذه المعلمة ، ويعتبر هذا تكوينًا معقولًا.

نقطة أخرى عند تفسير النتائج: يمكن استخدام بعض تكوينات kernel التي تزيد من سطح الهجوم في وقت واحد للأمان. تتضمن هذه الأمثلة uprobes و kprobes ووحدات kernel و BPF / eBPF. توصيتنا هي استخدام الآليات المذكورة أعلاه لتوفير حماية حقيقية ، لأنها ليست تافهة للاستخدام ، ويفترض تشغيلها أن العناصر الخبيثة راسخة بالفعل في النظام. ولكن إذا تم تمكين هذه الخيارات ، يجب على مسؤول النظام مراقبة إساءة الاستخدام بشكل نشط.

من خلال دراسة الإدخالات الموجودة في الجدول 2 ، نرى أن النوى الحديثة توفر عدة خيارات للحماية من استغلال نقاط الضعف مثل تسرب المعلومات وتجاوز سعة الكومة / الكومة. ومع ذلك ، نلاحظ أنه حتى توزيعات التوزيع الأكثر حداثة لم تطبق بعد حماية أكثر تطوراً (على سبيل المثال ، مع تصحيحات grsecurity ) أو حماية حديثة ضد هجمات إعادة استخدام الكود (على سبيل المثال ، دمج العشوائية مع مخططات مثل R ^ X للرمز ). والأسوأ من ذلك ، أن هذه الدفاعات الأكثر تقدماً لا تحمي من مجموعة كاملة من الهجمات. وبالتالي ، من الأهمية بمكان لمسؤولي النظام أن يكملوا التكوينات الذكية مع حلول توفر الكشف عن عمليات الاستغلال والوقاية منها في وقت التشغيل.

تحليل التطبيق


ليس من المستغرب أن توزيعات مختلفة لها خصائص مختلفة من الحزم ، وخيارات التجميع ، واعتمادات المكتبة ، وما إلى ذلك. هناك اختلافات حتى بالنسبة للتوزيعات والحزم ذات الصلة مع عدد صغير من التبعيات (على سبيل المثال ، coreutils في Ubuntu أو Debian). لتقييم الاختلافات ، قمنا بتنزيل جميع الحزم المتاحة ، واستخرجنا محتوياتها وقمنا بتحليل الملفات الثنائية والتبعيات. لكل حزمة ، تتبعنا الحزم الأخرى التي يعتمد عليها ، ولكل ثنائي تتبعنا تبعياتها. يلخص هذا القسم النتائج.

التوزيعات


إجمالاً ، قمنا بتنزيل 361،556 حزمة لجميع التوزيعات ، واستخراج الحزم فقط من المرايا الافتراضية. لقد تجاهلنا الحزم التي لا تحتوي على ملفات قابلة للتنفيذ من ELF ، مثل الرموز المصدر والخطوط وما إلى ذلك. بعد التصفية ، تم ترك 129 569 حزمة تحتوي على إجمالي 584 457 من الملفات الثنائية. يظهر توزيع الحزم والملفات بين التوزيعات في الشكل. 3.


التين. 3

قد تلاحظ أنه كلما كان التوزيع أكثر حداثة ، زاد عدد الحزم والملفات الثنائية التي يحتوي عليها ، وهو أمر منطقي. في الوقت نفسه ، تشتمل حزم Ubuntu و Debian على ملفات ثنائية أكثر بكثير (الوحدات النمطية القابلة للتنفيذ والديناميكية والمكتبات) من CentOS و SUSE و RHEL ، مما قد يؤثر على سطح الهجوم في Ubuntu و Debian (تجدر الإشارة إلى أن الأرقام تعكس جميع الثنائيات من جميع الإصدارات الحزمة ، وهذا هو ، يتم تحليل بعض الملفات عدة مرات). هذا مهم بشكل خاص عند النظر في التبعيات بين الحزم. وبالتالي ، يمكن أن تؤثر ثغرة أمنية في حزمة واحدة على العديد من أجزاء النظام البيئي ، تمامًا كما يمكن أن تؤثر المكتبة الضعيفة على جميع الملفات الثنائية التي تقوم باستيرادها. كنقطة مرجعية ، دعنا ننظر إلى توزيع عدد التبعيات بين الحزم في أنظمة التشغيل المختلفة:


التين. 4

في جميع التوزيعات تقريبًا ، تحتوي 60٪ من الحزم على 10 تبعيات على الأقل. بالإضافة إلى ذلك ، تحتوي بعض الحزم على مزيد من التبعيات (أكثر من 100). ينطبق الشيء نفسه على تبعيات الحزمة العكسية: كما هو متوقع ، يتم استخدام العديد من الحزم من قبل العديد من الحزم الأخرى في التوزيع ، وبالتالي فإن نقاط الضعف في هذه المفضلة القليلة لديها مخاطر عالية. على سبيل المثال ، يسرد الجدول التالي 20 حزمة بأقصى عدد من التبعيات العكسية في SLES و Centos 7 و Debian 9 و Ubuntu 18.04 (يشير كل مربع إلى الحزمة وعدد التبعيات العكسية).


الجدول 3

حقيقة مثيرة للاهتمام. على الرغم من أن جميع أنظمة التشغيل التي تم تحليلها مصممة للهيكل x86_64 ، في حين أن معظم الحزم لها بنية محددة على أنها x86_64 و x86 ، غالبًا ما تحتوي الحزم على ثنائيات للبنى الأخرى ، كما هو مبين في الشكل. 5.


التين. 5

في القسم التالي ، سوف نتعمق في خصائص الثنائيات التي تم تحليلها.

إحصائيات الحماية الثنائية


كحد أدنى مطلق ، تحتاج إلى دراسة المجموعة الأساسية من خيارات الحماية للملفات الثنائية الموجودة. تأتي توزيعات Linux المتعددة مع نصوص تؤدي هذه الاختبارات. على سبيل المثال ، في Debian / Ubuntu يوجد مثل هذا البرنامج النصي. هنا مثال على عمله:

$ hardening-check $(which docker) /usr/bin/docker: Position Independent Executable: yes Stack protected: yes Fortify Source functions: no, only unprotected functions found! Read-only relocations: yes Immediate binding: yes 

يتحقق البرنامج النصي من خمس وظائف حماية :

  • الموضع المستقل القابل للتنفيذ (PIE): يشير إلى ما إذا كان يمكن نقل قسم نص البرنامج في الذاكرة لتحقيق التوزيع العشوائي إذا تم تمكين ASLR في kernel.
  • مكدس المحمية: ما إذا كان يتم تضمين الكناري المكدس للحماية من هجمات الاصطدام المكدس.
  • مصدر التوثيق: ما إذا كانت الوظائف غير الآمنة (مثل strcpy) يتم استبدالها بنظيراتها الأكثر أمانًا ، ويتم استبدال المكالمات التي يتم فحصها في وقت التشغيل بنظيراتها غير التي تم التحقق منها (مثل memcpy بدلاً من __memcpy_chk).
  • عمليات الترحيل للقراءة فقط (RELRO): ما إذا كانت الإدخالات الموجودة في جدول الحركة محددة للقراءة فقط إذا كانت تعمل قبل بدء التنفيذ.
  • الربط الفوري: ما إذا كان رابط وقت التشغيل يسمح لجميع الحركات قبل بدء البرنامج (هذا يعادل RELRO الكامل).

هل الآليات المذكورة أعلاه كافية؟ لسوء الحظ ، لا. هناك طرق معروفة للتحايل على جميع الدفاعات المذكورة أعلاه ، ولكن كلما كان الدفاع أكثر صرامة ، كلما ارتفع شريط المهاجم. على سبيل المثال ، يصعب تطبيق حلول RELRO إذا كانت PIE وربط فوري ساري المفعول. وبالمثل ، يتطلب ASLR الكامل عمل إضافي لإنشاء استغلال العمل. ومع ذلك ، فإن المهاجمين المتطورة مستعدون لمواجهة مثل هذه الدفاعات: فغيابهم سيسرع بشكل أساسي في الاختراق. لذلك ، لا بد من اعتبار هذه التدابير الحد الأدنى الضروري.

أردنا دراسة عدد الملفات الثنائية في التوزيعات المعنية التي تحميها هذه ، وكذلك ثلاث طرق أخرى:

  • يمنع البت غير القابل للتنفيذ ( NX ) التنفيذ في أي منطقة لا ينبغي أن يكون قابلاً للتنفيذ ، مثل كومة الذاكرة المؤقتة ، إلخ.
  • يشير RPATH / RUNPATH إلى مسار التنفيذ الذي يستخدمه اللودر الديناميكي للعثور على المكتبات المناسبة. الأول إلزامي لأي نظام حديث: إن غيابه يسمح للمهاجمين بكتابة الحمولة بشكل تعسفي في الذاكرة وتنفيذها كما هي. للمرة الثانية ، تساعد التكوينات غير الصحيحة لمسار التنفيذ في تقديم تعليمات برمجية غير موثوق بها ، والتي يمكن أن تؤدي إلى عدد من المشاكل (على سبيل المثال ، تصاعد الامتيازات ، وكذلك مشاكل أخرى ).
  • توفر حماية تصادم المكدس الحماية من الهجمات التي تتسبب في تداخل المكدس مع مناطق أخرى من الذاكرة (مثل الكومة). نظرًا لاستغلال عمليات استغلال ثغرات تصادم كومة الذاكرة المؤقتة في systemd ، فقد وجدنا أنه من المناسب تضمين هذه الآلية في مجموعة البيانات الخاصة بنا.

لذلك ، دون مزيد من اللغط ، دعنا ننتقل إلى الأرقام. يحتوي الجدولان 4 و 5 على ضغط لتحليل الملفات القابلة للتنفيذ والمكتبات ذات التوزيعات المختلفة ، على التوالي.

  • كما ترون ، يتم تطبيق الحماية NX في كل مكان ، مع استثناءات نادرة. على وجه الخصوص ، يمكن ملاحظة انخفاض استخدامه في توزيعات Ubuntu و Debian بالمقارنة مع CentOS و RHEL و OpenSUSE.
  • لا تتوفر الكناري المكدس في العديد من الأماكن ، وخاصة في التوزيعات التي تحتوي على حبات قديمة. لقد لوحظ بعض التقدم في توزيعات Centos و RHEL و Debian و Ubuntu الأخيرة.
  • باستثناء Debian و Ubuntu 18.04 ، فإن معظم التوزيعات تتمتع بدعم ضعيف من PIE.
  • لا يتم تطبيق الحماية من الاصطدام في المداخن بشكل سيئ في OpenSUSE و Centos 7 و RHEL 7 وتغيب عملياً عن البقية.
  • تحظى جميع التوزيعات التي تحتوي على حبات حديثة ببعض دعم RELRO ، مع تقدم Ubuntu 18.04 ، بينما يحتل دبيان المركز الثاني.

كما ذكرنا سابقًا ، فإن المقاييس في هذا الجدول متوسط ​​في جميع إصدارات الملف الثنائي. إذا نظرت فقط إلى أحدث إصدارات الملفات ، فستكون الأرقام مختلفة (على سبيل المثال ، راجع تقدم دبيان مع تطبيق PIE ). علاوة على ذلك ، فإن معظم التوزيعات عادةً عند حساب الإحصائيات تتحقق من حماية وظائف قليلة فقط في الكود الثنائي ، وفي تحليلنا يتم الإشارة إلى النسبة الحقيقية للوظائف المعززة. لذلك ، إذا تم حماية 5 من أصل 50 وظيفة في الملف الثنائي ، فسوف نعطيه تصنيفًا 0.1 ، وهو ما يتوافق مع 10٪ من الوظائف المعززة.


جدول 4. خصائص الحماية للملفات القابلة للتنفيذ المبينة في الشكل. 3 (تنفيذ الوظائف المقابلة كنسبة مئوية من إجمالي عدد الملفات القابلة للتنفيذ)


جدول 5. خصائص حماية المكتبات الموضحة في الشكل. 3 (تنفيذ الوظائف المقابلة كنسبة مئوية من إجمالي عدد المكتبات)

فهل هناك تقدم؟ هناك بالتأكيد: يمكن رؤيته من إحصائيات التوزيعات الفردية (على سبيل المثال ، دبيان ) ، وكذلك من الجداول أعلاه. كمثال في التين. يوضح الشكل 6 تنفيذ آليات الدفاع في ثلاثة توزيعات متتالية من Ubuntu LTS 5 (لقد حذفت إحصائيات حماية تصادم المكدس). نلاحظ أنه من الإصدار إلى الإصدار ، هناك المزيد والمزيد من الملفات التي تدعم الكناري المتراصة ، وأيضًا المزيد من الملفات الثنائية التي تحتوي على حماية RELRO كاملة.


التين. 6

لسوء الحظ ، لا يزال هناك عدد من الملفات القابلة للتنفيذ في توزيعات مختلفة لا تحتوي على أي من الحماية المذكورة أعلاه. على سبيل المثال ، عند النظر إلى Ubuntu 18.04 ، يمكنك رؤية ngetty binary (استبدال getty) ، بالإضافة إلى أصداف mksh و lksh ، ومترجم picolisp ، وحزم nvidia-cuda-toolkit (حزمة شائعة للتطبيقات المعجلة بواسطة GPU مثل أطر تعلم الآلة) و klibc -utils. وبالمثل ، يتم تسليم ثنائي mandos-client (أداة إدارية تسمح لك بإعادة تشغيل الأجهزة تلقائيًا مع أنظمة الملفات المشفرة) ، وكذلك rsh-redone-client (إعادة تطبيق rsh و rlogin) دون حماية NX ، على الرغم من أنهما يتمتعان بحقوق SUID :(. بالإضافة إلى ذلك ، العديد من الثنائيات suid ليس لديها حماية أساسية ، مثل الكناري المكدس (على سبيل المثال ، Xorg.wrap الثنائية من حزمة Xorg).

ملخص وملاحظات ختامية


في هذا المقال ، أبرزنا العديد من ميزات الأمان لتوزيعات Linux الحديثة. أظهر التحليل أن أحدث توزيع لـ Ubuntu LTS (18.04) لديه في المتوسط ​​أقوى حماية على مستوى نظام التشغيل والتطبيق بين توزيعات النواة الجديدة نسبيًا ، مثل Ubuntu 14.04 و 12.04 و Debian 9. ومع ذلك ، تمت مناقشة توزيعات CentOS و RHEL و OpenSUSE في مجموعة أدواتنا بشكل افتراضي ، يتم إصدار مجموعة من الحزم الأكثر كثافة ، وفي الإصدارات الحديثة (CentOS و RHEL) يكون لديهم نسبة أعلى من الحماية من الاصطدام بالمكدس مقارنةً بالمنافسين على Debian (Debian و Ubuntu). بمقارنة إصداري CentOS و RedHat ، نلاحظ حدوث تحسينات كبيرة في تطبيق الكناريات المكدسة و RELRO من الإصدارات 6 إلى 7 ، ولكن في المتوسط ​​يمتلك CentOS ميزات أكثر من RHEL. بشكل عام ، يجب أن تولي جميع التوزيعات اهتمامًا خاصًا لحماية PIE ، والتي يتم تنفيذها في أقل من 10٪ من الملفات الثنائية من مجموعة بياناتنا ، باستثناء Debian 9 و Ubuntu 18.04.

أخيرًا ، تجدر الإشارة إلى أنه على الرغم من قيامنا بالبحث يدويًا ، إلا أن هناك العديد من أدوات الأمان (على سبيل المثال ، Lynis و Tiger و Hubble ) التي تقوم بإجراء التحليل وتساعد على تجنب التكوينات غير الآمنة. لسوء الحظ ، حتى الحماية القوية في التكوينات المعقولة لا تضمن عدم وجود مآثر. وهذا هو السبب في أننا مقتنعون تمامًا بأنه من الضروري ضمان مراقبة موثوقة ومنع الهجمات في الوقت الفعلي ، مع التركيز على النماذج التشغيلية ومنعها.

Source: https://habr.com/ru/post/ar444418/


All Articles