Для ізоляції використовують традиційні для Linux технології контейнерної віртуалізації, засновані на використанні cgroups, просторів імен (namespaces), Seccomp і SELinux. Для виконання привілейованих операцій з налаштування контейнера Bubblewrap запускається з правами root (файл, що виконується c suid-прапором) з подальшим скиданням привілеїв після завершення ініціалізації контейнера.
Активація в системі просторів імен ідентифікаторів користувача (user namespaces), що дозволяють використовувати в контейнерах власний окремий набір ідентифікаторів, для роботи не потрібна, тому що не працює в багатьох дистрибутивах (Bubblewrap позиціонується як обмежена suid-реалізація підмножини можливостей user namespace всіх ідентифікаторів користувачів та процесів з оточення, крім поточного, використовуються режими CLONE_NEWUSER та CLONE_NEWPID). Для додаткового захисту виконувані під керуванням
Bubblewrap програми запускаються в режимі PR_SET_NO_NEW_PRIVS, що забороняє отримання нових привілеїв, наприклад, за наявності прапора setuid.
Ізоляція на рівні файлової системи проводиться через створення за промовчанням нового простору імен точок монтування (mount namespace), в якому за допомогою tmpfs створюється порожній кореневий розділ. У цьому розділі при необхідності прикріплюються розділи зовнішньої ФС у режимі «mount —bind» (наприклад, при запуску c опцією «bwrap —ro-bind /usr /usr» розділ /usr прокидається з основної системи в режимі тільки для читання). Мережеві можливості обмежуються доступом до loopback-інтерфейсу із ізоляцією мережевого стека через прапори CLONE_NEWNET та CLONE_NEWUTS.
Ключовою відмінністю від схожого проекту
Новий випуск примітний реалізацією підтримки приєднання існуючих просторів імен ідентифікаторів користувачів (user namespaces) та процесів (pid namespaces). Для керування підключенням просторів імен додані прапори "userns", "userns2" і "pidns".
Ця можливість не працює в режимі setuid і вимагає застосування окремого режиму, який може працювати без отримання прав root, але вимагає активації
user namespaces в системі (за замовчуванням відключено в Debian і RHEL/CentOS) і не виключає можливість
Джерело: opennet.ru