إصدار نظام الحزمة المستقلة Flatpak 1.12.0

تم نشر فرع مستقر جديد لمجموعة أدوات Flatpak 1.12 ، والذي يوفر نظامًا لبناء حزم قائمة بذاتها غير مرتبطة بتوزيعات Linux محددة وتعمل في حاوية خاصة تعزل التطبيق عن باقي النظام. يتم توفير الدعم لتشغيل حزم Flatpak لكل من Arch Linux و CentOS و Debian و Fedora و Gentoo و Mageia و Linux Mint و Alt Linux و Ubuntu. يتم تضمين الحزم مع Flatpak في مستودع Fedora ويتم الاحتفاظ بها في مدير تطبيقات جنوم الأصلي.

الابتكارات الرئيسية في فرع Flatpak 1.12:

  • إدارة محسنة لبيئات وضع الحماية المتداخلة المستخدمة في حزمة flatpak مع العميل لخدمة توصيل ألعاب Steam. في صناديق الحماية المتداخلة، يُسمح بإنشاء تسلسلات هرمية منفصلة لأدلة /usr و/app، والتي يتم استخدامها في Steam لتشغيل الألعاب في حاوية منفصلة بقسم /usr الخاص بها، معزولة عن البيئة مع عميل Steam.
  • تشترك جميع مثيلات الحزمة التي لها نفس معرف التطبيق (معرف التطبيق) في الدلائل /tmp و$XDG_RUNTIME_DIR. اختياريًا، باستخدام العلامة "-allow=per-app-dev-shm"، يمكنك تمكين استخدام الدليل المشترك /dev/shm.
  • تحسين الدعم لتطبيقات واجهة المستخدم النصية (TUI) مثل gdb.
  • تمت إضافة تنفيذ أسرع لأمر "ostree Prune" إلى الأداة المساعدة build-update-repo، وهي مُحسّنة للعمل مع المستودعات في وضع الأرشيف.
  • تم إصلاح الثغرة الأمنية CVE-2021-41133 في تنفيذ آلية البوابة، والمرتبطة بعدم حظر مكالمات النظام الجديدة المتعلقة بتركيب الأقسام في قواعد seccomp. سمحت الثغرة الأمنية للتطبيق بإنشاء صندوق حماية متداخل لتجاوز آليات التحقق من "البوابة" المستخدمة لتنظيم الوصول إلى الموارد خارج الحاوية.

    ونتيجة لذلك، يمكن للمهاجم، من خلال إجراء مكالمات النظام ذات الصلة بالتثبيت، تجاوز آلية عزل وضع الحماية والحصول على حق الوصول الكامل إلى محتويات البيئة المضيفة. لا يمكن استغلال الثغرة الأمنية إلا في الحزم التي توفر للتطبيقات إمكانية الوصول المباشر إلى مآخذ توصيل AF_UNIX، مثل تلك التي تستخدمها Wayland وPipewire وpipewire-pulse. في الإصدار 1.12.0، لم يتم القضاء على الثغرة الأمنية بشكل كامل، لذلك تم إصدار التحديث 1.12.1 في أعقابه.

تذكر أن Flatpak تتيح لمطوري التطبيقات تبسيط توزيع برامجهم غير المدرجة في مستودعات التوزيع العادية من خلال إعداد حاوية عالمية واحدة دون إنشاء تجميعات منفصلة لكل توزيع. للمستخدمين المهتمين بالأمن ، تسمح Flatpak بتشغيل تطبيق مشكوك فيه في حاوية ، مما يتيح الوصول فقط إلى وظائف الشبكة وملفات المستخدم المرتبطة بالتطبيق. بالنسبة للمستخدمين المهتمين بما هو جديد ، فإن Flatpak يسمح لك بتثبيت أحدث اختبار وإصدارات مستقرة من التطبيقات دون الحاجة إلى إجراء تغييرات على النظام. على سبيل المثال ، تم تصميم حزم Flatpak لـ LibreOffice و Midori و GIMP و Inkscape و Kdenlive و Steam و 0 AD و Visual Studio Code و VLC و Slack و Skype و Telegram Desktop و Android Studio ، إلخ.

لتقليل حجم الحزمة ، تتضمن فقط التبعيات الخاصة بالتطبيق ، وقد تم تصميم النظام الأساسي ومكتبات الرسوم (مكتبات GTK و Qt و GNOME و KDE ، وما إلى ذلك) كبيئات تشغيل نموذجية قابلة للتوصيل. يتمثل الاختلاف الرئيسي بين Flatpak و Snap في أن Snap يستخدم مكونات بيئة النظام الرئيسية والعزل بناءً على تصفية مكالمات النظام ، بينما تنشئ Flatpak حاوية منفصلة عن النظام وتعمل مع مجموعات وقت تشغيل كبيرة ، مما يوفر حزمًا نموذجية بدلاً من الحزم كاعتماديات . بيئات النظام (على سبيل المثال ، جميع المكتبات المطلوبة لتشغيل برامج جنوم أو كيدي).

بالإضافة إلى بيئة النظام النموذجية (وقت التشغيل) المثبتة من خلال مستودع خاص ، يتم توفير التبعيات الإضافية (الحزمة) المطلوبة لكي يعمل التطبيق. في المجموع ، يشكل وقت التشغيل والحزمة حشو الحاوية ، بينما يتم تثبيت وقت التشغيل بشكل منفصل وربطه بعدة حاويات في وقت واحد ، مما يجعل من الممكن تجنب تكرار ملفات النظام الشائعة للحاويات. يمكن أن يحتوي نظام واحد على عدة أوقات تشغيل مختلفة مثبتة (جنوم ، كيدي) أو عدة إصدارات من نفس وقت التشغيل (جنوم 3.40 ، جنوم 3.42). تستخدم الحاوية التي تحتوي على تطبيق كتبعية الارتباط بوقت تشغيل محدد فقط ، دون مراعاة الحزم الفردية التي تشكل وقت التشغيل. يتم حزم جميع العناصر المفقودة مباشرة مع التطبيق. عندما يتم تشكيل الحاوية ، يتم تثبيت محتويات وقت التشغيل كقسم / usr ، ويتم تثبيت الحزمة في دليل / app.

يتم تشكيل تعبئة وقت التشغيل وحاويات التطبيق باستخدام تقنية OSTree ، حيث يتم تحديث الصورة بشكل ذري من وحدة تخزين تشبه Git ، مما يسمح لك بتطبيق طرق التحكم في الإصدار على مكونات التوزيع (على سبيل المثال ، يمكنك التراجع عن النظام بسرعة إلى الحالة السابقة). يتم ترجمة حزم RPM إلى مستودع OSTree باستخدام طبقة rpm-ostree خاصة. لا يتم دعم التثبيت والتحديث المنفصلين للحزم داخل بيئة العمل ، ولا يتم تحديث النظام على مستوى المكونات الفردية ، ولكن بشكل عام ، مما يؤدي إلى تغيير حالته ذريًا. يتم توفير الأدوات لتطبيق التحديثات بشكل تدريجي ، مما يلغي الحاجة إلى استبدال الصورة تمامًا مع كل تحديث.

البيئة المعزولة التي تم إنشاؤها مستقلة تمامًا عن التوزيع المستخدم ، ومع إعدادات الحزمة المناسبة ، لا يمكنها الوصول إلى ملفات وعمليات المستخدم أو النظام الرئيسي ، ولا يمكنها الوصول مباشرة إلى المعدات ، باستثناء الإخراج عبر DRI ، والوصول إلى النظام الفرعي للشبكة. يتم تنفيذ تنظيم إخراج وإدخال الرسومات باستخدام بروتوكول Wayland أو من خلال إعادة توجيه مقبس X11. يتم إنشاء التفاعل مع البيئة الخارجية على أساس نظام المراسلة DBus وواجهة برمجة التطبيقات الخاصة بواجهة برمجة التطبيقات.

للعزل، يتم استخدام طبقة Bubblewrap وتقنيات المحاكاة الافتراضية لحاوية Linux التقليدية، بناءً على استخدام مجموعات cgroups ومساحات الأسماء وSeccomp وSELinux. يستخدم PulseAudio لإخراج الصوت. في هذه الحالة، يمكن تعطيل العزل الذي يستخدمه مطورو العديد من الحزم الشائعة للوصول الكامل إلى نظام الملفات وجميع الأجهزة الموجودة في النظام. على سبيل المثال، تأتي GIMP وVSCodium وPyCharm وOctave وInkscape وAudacity وVLC مع وضع عزل محدود يتيح الوصول الكامل إلى الدليل الرئيسي.

إذا تم اختراق الحزم التي يمكنها الوصول إلى الدليل الرئيسي، على الرغم من وجود علامة "وضع الحماية" في وصف الحزمة، يحتاج المهاجم فقط إلى تغيير الملف ~/.bashrc لتنفيذ التعليمات البرمجية الخاصة به. هناك مشكلة منفصلة وهي التحكم في التغييرات على الحزم والثقة في منشئي الحزم، الذين غالبًا ما لا يرتبطون بالمشروع الرئيسي أو التوزيعات.

المصدر: opennet.ru

إضافة تعليق