اقترح ثيو دي رادت تغييرات لتقييد الوصول إلى نظام الملفات عبر وظيفة openat

اقترح ثيو دي رادت دمج آلية جديدة في نظام OpenBSD لتقليل مساحة الهجوم، وذلك بتوسيع استدعاء النظام openat. وقد تم إعداد رقع برمجية لنواة النظام ومكتبة libc وبعض التطبيقات في النظام الأساسي، تُضيف علامات إضافية إلى openat وopen، مما يُقيّد إمكانية الوصول إلى الدلائل العليا عبر "/." والوصول إلى المسارات المطلقة. لم تُدمج هذه التغييرات بعد في OpenBSD-current، وهي قيد المناقشة حاليًا بين المطورين.

تتصرف عائلة استدعاءات النظام openat(2) مثل open(2)، باستثناء أنه إذا كان مُعامل "path" نسبيًا، فإن الملف المراد فتحه يكون نسبيًا إلى الدليل المرتبط بواصف الملف "fd" وليس دليل العمل الحالي. على سبيل المثال، إذا مررت مسارًا مطلقًا إلى openat: int dirfd = open("/tmp", O_RDONLY | O_DIRECTORY); int hfd = openat(dirfd, "/etc/hosts", O_RDONLY);

ستتجاهل الدالة openat() "dirfd" ونتيجة لذلك سيتم معالجة المسار المطلق بشكل طبيعي.

لذا، فإن استبدال الدالة open() بالدالة openat() لا يُحسّن أمان البرنامج بحد ذاته. قد يُسرّع هذا الاستدعاء عملية تحليل المسار، ولكنه لا يُقيّد الوصول إلى نظام الملفات. توجد علامات تمنع استخدام المسارات المطلقة (على سبيل المثال، RESOLVE_BENEATH و/أو RESOLVE_IN_ROOT للدالة openat2 في Linux): يجب على المبرمج إضافتها إلى جميع الاستدعاءات المناسبة، وعندما يستحوذ المهاجم على التحكم في العملية، يمكنه استخدام طرق أخرى لفتح الملفات.

أثناء عمله على أداة openrsync، احتاج ثيو إلى تقييد قدراتها على اجتياز نظام الملفات، لكن ذلك لم يكن ممكنًا باستخدام دالتي reveal() و pledge(). ثم ابتكر آلية مشابهة لـ openat()، ولكن مع ميزات أمان تُكمّل دالتي pledge/unveil أو حتى تعمل في غيابهما.

تتلخص الفكرة الأساسية في جعل القيود جزءًا من مُعرِّف الدليل نفسه. ولتحقيق ذلك، نقترح استخدام علامة F_BELOW، التي يمكن ضبطها عبر fcntl()، أو علامة O_BELOW للدالة open(). يسمح مُعرِّف "dirfd" المُقيَّد بهذه الطريقة بالتنقل التنازلي فقط في شجرة الدليل: ستفشل استدعاءات openat() باستخدام مسار مطلق أو التنقل التصاعدي عبر "." مع ظهور خطأ ENOENT. في حالة هجوم تنفيذ التعليمات البرمجية، سيحتوي جدول مُعرِّفات الملفات الخاص بالعملية على مُعرِّفات "dirfd" أقل فعالية، مما يحد من نطاق الهجوم.

المصدر: opennet.ru

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster