تم الإعلان عن اقتراح آلية لعزل التطبيقات لنظام FreeBSD ، على غرار استدعاءات النظام foldde و reveal التي طورها مشروع OpenBSD.
يتم العزل في plegde عن طريق حظر الوصول إلى مكالمات النظام التي لا يستخدمها التطبيق والكشف عن طريق فتح الوصول بشكل انتقائي فقط إلى مسارات ملفات معينة يمكن للتطبيق العمل معها. بالنسبة للتطبيق ، يتم تكوين نوع من القائمة البيضاء لاستدعاءات النظام ومسارات الملفات ، ويحظر جميع المكالمات والمسارات الأخرى.
يكمن الفرق بين `pledge` و`unveil` ، المُطورتين لنظام FreeBSD ، في توفير طبقة إضافية تسمح بعزل التطبيقات مع الحد الأدنى من التغييرات أو بدون أي تغييرات على شفرتها البرمجية. تجدر الإشارة إلى أنه في نظام OpenBSD، تهدف `pledge` و`unlock` إلى التكامل التام مع البيئة الأساسية، ويتم تنفيذهما بإضافة تعليقات توضيحية خاصة إلى شفرة كل تطبيق.
لتبسيط تنظيم الحماية ، تسمح لك المرشحات بتجنب التفاصيل على مستوى مكالمات النظام الفردية ومعالجة فئات استدعاءات النظام (الإدخال / الإخراج ، قراءة الملف ، كتابة الملف ، المقابس ، ioctl ، sysctl ، بدء العمليات ، إلخ) . يمكن استدعاء وظائف تقييد الوصول في رمز التطبيق حيث يتم تنفيذ إجراءات معينة ، على سبيل المثال ، يمكن إغلاق الوصول إلى المقابس والملفات بعد فتح الملفات الضرورية وإنشاء اتصال بالشبكة.
يهدف مطور نسخة FreeBSD من أداتي folding و unlocking إلى توفير إمكانية عزل التطبيقات المختلفة. ولتحقيق ذلك، يقترح أداة Curtain التي تسمح بتطبيق قواعد مُعرّفة في ملف منفصل على التطبيقات. يتضمن التكوين المقترح ملفًا يحتوي على الإعدادات الأساسية التي تُحدد فئات استدعاءات النظام ومسارات الملفات النموذجية الخاصة بتطبيقات معينة (مثل تطبيقات الصوت والشبكات والتسجيل، إلخ)، بالإضافة إلى ملف يحتوي على قواعد الوصول لتطبيقات محددة.
يمكن استخدام الأداة المساعدة Curtain لعزل معظم الأدوات المساعدة وعمليات الخادم والتطبيقات الرسومية وحتى جلسات سطح المكتب بأكملها التي لم يتم تعديلها. يتم دعم مشاركة الستارة مع آليات العزل التي يوفرها نظاما Jail و Capsicum الفرعيان.
يُمكن تطبيق العزل المتداخل ، حيث ترث التطبيقات المُشغّلة القواعد التي وضعها التطبيق الرئيسي، مع إضافة قيود منفصلة إليها. كما تُحمى بعض عمليات النواة (أدوات تصحيح الأخطاء، وPOSIX/SysV IPC، وPTY) بآلية حاجز تمنع الوصول إلى كائنات النواة التي أنشأتها عمليات أخرى غير العملية الحالية أو الرئيسية.
يمكن لأي عملية ضبط عزلها الخاص عن طريق استدعاء Curtainctl أو استخدام الدالتين pledge() و reveal() المتوفرتين في مكتبة libcurtain، على غرار ما هو موجود في OpenBSD. ويُستخدم الأمر sysctl 'security.curtain.log_level' لتتبع عمليات القفل أثناء تشغيل التطبيق.
يتم تمكين الوصول إلى بروتوكولات X11 و Wayland بشكل منفصل عن طريق تحديد خياري "-X" / "- Y" و "-W" عند بدء الستار ، لكن دعم التطبيقات الرسومية لم يتم استقراره بعد بشكل كافٍ ولديه سلسلة من المشكلات التي لم يتم حلها ( تظهر المشكلات بشكل أساسي عند استخدام X11 ، ويكون دعم Wayland أفضل بكثير). يمكن للمستخدمين إضافة قيود إضافية عن طريق إنشاء ملفات القواعد المحلية (~ / .curtain.conf). علي سبيل المثال،
يتضمن التنفيذ وحدة mac_curtain kernel للتحكم في الوصول الإلزامي (MAC) ، ومجموعة من التصحيحات لنواة FreeBSD مع تنفيذ برامج التشغيل والفلاتر الضرورية ، ومكتبة libcurtain لاستخدام وظائف plegde والوظائف المكشوفة في التطبيقات ، وستارة الأداة المساعدة ، وتوضح التكوين ومجموعة من الاختبارات والتصحيحات لبعض برامج مساحة المستخدم (على سبيل المثال ، لاستخدام $ TMPDIR لتوحيد العمل مع الملفات المؤقتة). كلما كان ذلك ممكنًا ، يحاول المؤلف تقليل عدد التغييرات التي تتطلب تصحيح النواة والتطبيقات.
وأخيرًا، إذا كنت مهتمًا بمعرفة المزيد ، يمكنك العثور على التفاصيل في الرابط التالي.