לצורך בידוד, נעשה שימוש בטכנולוגיות וירטואליזציה מסורתיות של מיכל לינוקס, המבוססות על שימוש בקבוצות cgroups, מרחבי שמות, Seccomp ו-SELinux. כדי לבצע פעולות מורשות להגדרת קונטיינר, Bubblewrap מופעל עם זכויות שורש (קובץ הפעלה עם דגל suid) ולאחר מכן מאפס את ההרשאות לאחר אתחול המיכל.
Активация в системе пространств имён идентификаторов пользователя (user namespaces), позволяющих использовать в контейнерах собственный отдельный набор идентификаторов, для работы не требуется, так как по умолчанию не работает во многих дистрибутивах (Bubblewrap позиционируется как ограниченная suid-реализация подмножества возможностей user namespaces — для исключения всех идентификаторов пользователей и процессов из окружения, кроме текущего, используются режимы CLONE_NEWUSER и CLONE_NEWPID). Для дополнительной защиты исполняемые под управлением
Bubblewrap программы запускаются в режиме PR_SET_NO_NEW_PRIVS, запрещающем получение новых привилегий, например, при наличии флага setuid.
בידוד ברמת מערכת הקבצים מתבצע על ידי יצירת מרחב שמות טעינה חדש כברירת מחדל, שבו נוצרת מחיצת שורש ריקה באמצעות tmpfs. במידת הצורך, מחיצות FS חיצוניות מחוברות למחיצה זו במצב "mount —bind" (לדוגמה, כאשר מופעלת עם האפשרות "bwrap —ro-bind /usr /usr", מחיצת /usr מועברת מהמערכת הראשית במצב קריאה בלבד). יכולות הרשת מוגבלות לגישה לממשק הלולאה עם בידוד מחסנית רשת באמצעות הדגלים CLONE_NEWNET ו-CLONE_NEWUTS.
ההבדל העיקרי מפרויקט דומה
Новый выпуск примечателен реализацией поддержки присоединения существующих пространств имён идентификаторов пользователей (user namespaces) и процессов (pid namespaces). Для управления подключением пространств имён добавлены флаги «—userns», «—userns2» и «—pidns».
Данная возможность не работает в режиме setuid и требует применения отдельного режима, который может работать без получения прав root, но требует активации
user namespaces в системе (по умолчанию отключены в Debian и RHEL/CentOS) и не исключает возможность
מקור: OpenNet.ru