من المخطط نقل آلية عزل التعهد إلى Linux

مؤخرا مؤلف مكتبة كوزموبوليتان سي القياسية ومنصة Redbean التي تم الإعلان عنها من خلال أ أعلنت ، تنفيذ تعهد () آلية العزل لينكس.

كان كذلك تم تطويره في الأصل بواسطة مشروع OpenBSD y يسمح لك بحظر انتقائي ان ال وصول التطبيقات إلى مكالمات النظام غير المستخدمة (يتم تشكيل نوع من القائمة البيضاء لمكالمات النظام للتطبيق ويحظر المكالمات الأخرى). على عكس آليات التحكم في الوصول إلى syscall المتاحة على Linux ، مثل seccomp ، تم تصميم آلية التعهد من الألف إلى الياء لتكون سهلة الاستخدام قدر الإمكان.

أظهرت المبادرة غير الناجحة لعزل التطبيقات في بيئة OpenBSD الأساسية باستخدام آلية systrace أن العزل على مستوى مكالمات النظام الفردية معقد للغاية ويستغرق وقتًا طويلاً.

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

على سبيل المثال ، الفئات المعروضة هي stdio (الإدخال / الإخراج) ، rpath (قراءة الملفات فقط) ، wpath (كتابة الملفات) ، cpath (إنشاء الملفات) ، tmppath (العمل مع الملفات المؤقتة) ، إنت (شبكة المقابس) ، يونكس (مقابس يونكس) ) ، ونظام أسماء النطاقات (تحليل DNS) ، و getpw (الوصول للقراءة إلى قاعدة بيانات المستخدم) ، و ioctl (استدعاء ioctl) ، و proc (التحكم في العملية) ، و exec (عمليات بدء التشغيل) ، والمعرف (التحكم في الأذونات).

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

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

التعهد هو مثل الفاكهة المحرمة التي نتوق إليها جميعًا عندما يقول رئيسنا إنه يجب علينا استخدام أشياء مثل Linux. لماذا هذا مهم؟ ذلك لأن التعهد () يجعل الأمن مفهومًا في الواقع. لم يكن لدى لينكس أبدًا طبقة من الأمان يمكن لمجرد البشر فهمها.

أخذ مطورو منافذ تعهد Linux إشارة من FreeBSD وبدلاً من إجراء تغييرات في التعليمات البرمجية ، قاموا بإعداد أداة مساعدة إضافية من موقع تعهد تسمح لك بتطبيق القيود دون تغيير رمز التطبيق. على سبيل المثال ، لتشغيل الأداة المساعدة curl مع الوصول فقط إلى فئات استدعاء نظام stdio و rpath و inet و threadstdio ، ما عليك سوى تشغيل "./pledge.com -p 'stdio rpath inet thread' curl http://example.com» .

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

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

لا يتطلب التنفيذ أي تغييرات في kernel: يتم ترجمة قيود الأداة إلى قواعد SECCOMP BPF ومعالجتها باستخدام آلية عزل مكالمات النظام الأصلي في Linux. على سبيل المثال ، استدعاء الوعد ("stdio rpath" ، 0) سيتحول إلى مرشح BPF

أخيرًا ، إذا كنت مهتمًا بمعرفة المزيد عنها ، يمكنك الرجوع إلى التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.