قبل عدة أيام كسر النبأ ذلك تم اكتشاف ثغرة أمنية في Flatpak (نظام إنشاء وتوزيع وتشغيل بيئات تطبيقات سطح المكتب المعزولة على Linux). مُصنف تحت CVE-2024-32462، جنبًا إلى جنب مع تصنيف CWE-88، تم اكتشاف الثغرة الأمنية سمح بالهروب من وضع الحماية عبر RequestBackground.
هذا الضعف يؤثر على إصدارات محددة معينة من Flatpak، ويمكن أن يكون تأثيره خطيرًا، نظرًا لأن التطبيق المصمم خصيصًا يمكن أن ينفذ تعليمات برمجية عشوائية خارج نطاق الحماية، مما يعرض معلومات المستخدم للخطر.
حول الثغرة الأمنية CVE-2024-32462
يذكر أن القابلية للتأثر يسمح بتطبيق ضار أو مخترق يتم توزيعها باستخدام تنسيق حزمة flatpak تجاوز وضع العزلة من منطقة الاختبار والوصول إلى ملفات النظام الرئيسية. تحدث هذه المشكلة فقط في الحزم التي تستخدم بوابات Freedesktop (xdg-desktop-portal)، المستخدمة لتسهيل الوصول إلى الموارد في بيئة المستخدم من التطبيقات المعزولة.
من الممكن تمرير واجهة سطر أوامر عشوائية إلى واجهة البوابة org.freedesktop.portal.Background.RequestBackground من تطبيق Flatpak. عادةً ما يكون هذا آمنًا، لأنه يمكنك فقط تحديد أمر موجود داخل بيئة وضع الحماية؛ ولكن عندما يتم تحويل كائن سطر أوامر مُصمم إلى -commandarguments و، يمكن أن يحقق التطبيق نفس التأثير المتمثل في تمرير الوسائط مباشرة إلى bwrapy، وبالتالي تحقيق هروب وضع الحماية.
الحل هو أن تستخدم Flatpak الوسيطة –to bwrap، مما يؤدي إلى إيقاف خيارات المعالجة، قبل إضافة الأمر المحدد من قبل المهاجم. تم دعم الوسيطة – منذ إصدار bubblewrap 0.3.0، وتتطلب جميع الإصدارات المدعومة من Flatpak الآن هذا الإصدار من bubblewrap على الأقل.
استغلال هذه الثغرة الأمنية يسمح لتطبيق في وضع الحماية باستخدام واجهة xdg-desktop-portal لإنشاء ملف «.سطح المكتب» بأمر يبدأ التطبيق من flatpak، مما يسمح بالوصول إلى الملفات الموجودة على النظام الرئيسي.
جوهر الثغرة الأمنية التي تسمح لك بالتهرب من وضع الحماية تكمن الحجة -يأمر de تشغيل flatpak، والتي من المتوقع أن تتلقى أمرًا للتشغيل في تطبيق Flatpak المحدد، بالإضافة إلى بعض الوسائط الاختيارية. من خلال التلاعب بالمعلمة «-يأمر«، والذي يستخدم لتمرير اسم البرنامج، كان من الممكن تمرير اسم الخيار، على سبيل المثال -ربط، وقد تم تفسير ذلك بشكل خاطئ على أنه خيار bwrap لتشغيل البرنامج المحدد داخل الحزمة، في بيئة معزولة.
مثال عملي على ذلك المذكورة أعلاه، لتشغيل الأداة المساعدة ls في بيئة حزمة معزولة، يمكنك استخدام شيء مشابه لما يلي:
"flatpak run --command=ls org.gnome.gedit"
والتي سوف تنفذ:
"bwrap ...lots of stuff... --bind / /host ls -l /host".
في هذه الحالة، لن يتم اعتبار الاسم "–bind" اسمًا للتطبيق المطلوب تشغيله، بل هو خيار bwrap.
على هذا النحو، تكمن الثغرة الأمنية في حقيقة أنه إذا كان اسم البرنامج يبدأ بالأحرف «-«، فإن الأداة المساعدة bwrap ستفسره على أنه خيار خاص بها. في الأصل، لم يكن إرسال الأوامر بهذه الطريقة أمرًا خطيرًا، حيث سيتم تشغيلها في بيئة معزولة عن الحزمة. ومع ذلك، لم يؤخذ في الاعتبار أن الأوامر التي تبدأ بـ "-" سيتم تفسيرها على أنها خيارات بواسطة الأداة bwrap. ونتيجة لذلك، يمكن استغلال واجهة xdg-desktop-portal لإنشاء ملف ".desktop" باستخدام أمر يستغل هذه الثغرة الأمنية.
تم دعم الوسيطة — منذ إصدار bubblewrap 0.3.0، وجميع الإصدارات المدعومة من Flatpak تتطلب بالفعل هذا الإصدار من bubblewrap على الأقل. يذكر ذلك أحد الحلول هل هذا الإصدار 1.18.4 من لم يعد xdg-desktop-portal يسمح لتطبيقات Flatpak بإنشاء ملفات جديدة .desktop للأوامر التي تبدأ بـ -.
أخيرًا، تجدر الإشارة إلى أنه تم تصحيح الثغرة الأمنية في الإصدارات المصححة من Flatpak 1.15.8 و1.14.6 و1.12.9 و1.10.9. بالإضافة إلى ذلك، تم اقتراح إصلاح أمني في إصدارات xdg-desktop-portal 1.16.1 و1.18.4.
يمكنك التحقق من إصدار Flatpak لديك عن طريق تشغيل الأمر التالي:
flatpak --version
في حال كنت تستخدم إصدارًا ضعيفًا أو إذا كنت تريد تحديث إصدار Flatpak الخاص بك، فما عليك سوى تنفيذ أحد الأوامر التالية:
أوبونتو/ديبيان ومشتقاته:
sudo apt upgrade flatpak
RHEL/Fedora ومشتقاته:
sudo dnf upgrade flatpak
آرتش لينوكس ومشتقاته:
sudo pacman -Syu flatpak
إذا كنت مهتم بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.