انتشار Bubblewrap 0.4.0، لایه ای برای ایجاد محیط های ایزوله

در دسترس новый выпуск инструментария حباب کش 0.4.0, предназначенного для организации работы изолированных окружений в Linux и функционирующий на уровне приложений непривилегированных пользователей. На практике Bubblewrap используется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Код проекта написан на языке Си и توزیع شده توسط под лицензией LGPLv2+.

برای جداسازی، از فناوری‌های مجازی‌سازی کانتینر لینوکس سنتی بر اساس استفاده از cgroups، namespaces، Seccomp و SELinux استفاده می‌شود. برای انجام عملیات ممتاز برای پیکربندی یک کانتینر، Bubblewrap با حقوق ریشه (یک فایل اجرایی با پرچم suid) راه‌اندازی می‌شود و پس از مقداردهی اولیه کانتینر، امتیازات را بازنشانی می‌کند.

Активация в системе пространств имён идентификаторов пользователя (user namespaces), позволяющих использовать в контейнерах собственный отдельный набор идентификаторов, для работы не требуется, так как по умолчанию не работает во многих дистрибутивах (Bubblewrap позиционируется как ограниченная suid-реализация подмножества возможностей user namespaces — для исключения всех идентификаторов пользователей и процессов из окружения, кроме текущего, используются режимы CLONE_NEWUSER и CLONE_NEWPID). Для дополнительной защиты исполняемые под управлением
Bubblewrap программы запускаются в режиме PR_SET_NO_NEW_PRIVS, запрещающем получение новых привилегий, например, при наличии флага setuid.

جداسازی در سطح فایل سیستم با ایجاد یک فضای نام mount جدید به طور پیش فرض انجام می شود که در آن یک پارتیشن خالی ریشه با استفاده از tmpfs ایجاد می شود. در صورت لزوم، پارتیشن‌های خارجی FS در حالت mount —bind به این پارتیشن متصل می‌شوند (به عنوان مثال، هنگام راه‌اندازی با گزینه bwrap —ro-bind /usr /usr، پارتیشن /usr از سیستم اصلی ارسال می‌شود. در حالت فقط خواندنی). قابلیت‌های شبکه محدود به دسترسی به رابط Loopback با جداسازی پشته شبکه از طریق پرچم‌های CLONE_NEWNET و CLONE_NEWUTS است.

تفاوت کلیدی با پروژه مشابه فایر جیل, который также использует модель запуска с применением setuid, является то, что в Bubblewrap прослойка для создания контейнеров включает только необходимый минимум возможностей, а все расширенные функции, необходимые для запуска графических приложений, взаимодействия с рабочим столом и фильтрации обращений к Pulseaudio, вынесены на сторону Flatpak и выполняются уже после сброса привилегий. Firejail же объединяет в одном исполняемом файле все сопутствующие функции, что усложняет его аудит и поддержание безопасности на سطح مناسب.

Новый выпуск примечателен реализацией поддержки присоединения существующих пространств имён идентификаторов пользователей (user namespaces) и процессов (pid namespaces). Для управления подключением пространств имён добавлены флаги «—userns», «—userns2» и «—pidns».
Данная возможность не работает в режиме setuid и требует применения отдельного режима, который может работать без получения прав root, но требует активации
user namespaces в системе (по умолчанию отключены в Debian и RHEL/CentOS) и не исключает возможность بهره برداری به طور بالقوه остающихся آسیب پذیری ها для обода ограничений «user namespaces». Из новых возможностей Bubblewrap 0.4 также отмечается возможность сборки с Си-библиотекой musl вместо glibc и поддержка сохранения информации о пространствах имён в файл со статистикой в формате JSON.

منبع: opennet.ru

اضافه کردن نظر