Bubblewrap是一个工具 什么有效 在Linux上组织沙盒工作 并运行 在非特权用户的应用程序级别。 实际上,Flatpak项目将Bubblewrap用作中间层,以隔离从软件包启动的应用程序。
为了隔离,Linux使用虚拟化技术 基于使用cgroup,名称空间,Seccomp和SELinux的传统容器。 要执行特权操作以配置容器,Bubblewrap将以root特权(带有suid标志的可执行文件)启动,然后在初始化容器后重置特权。
无需在系统上启用用户名称空间,从而允许您在容器中使用自己的ID集,因为默认情况下,它不适用于许多发行版。
关于Bubblewrap
Bubblewrap被定位为有限的suida实现 从用户名称空间功能的子集中排除当前环境之外的所有用户和进程ID,请使用以下模式 CLONE_NEWUSER和CLONE_NEWPID.
为了提供额外的保护, 在Bubblewrap中运行的程序在以下模式下启动 PR_SET_NO_NEW_PRIVS, 禁止新的特权, 例如,带有setuid标志。
默认情况下,通过创建新的安装名称空间来完成文件系统级别的隔离,在该名称空间中,使用tmpfs创建一个空的根分区。
如有必要,外部FS部分将附加到《挂载–bind»(例如,以选项«开始bwrap –ro-bind / usr / usr',/ usr部分以只读模式从主机转发)。
网络功能仅限于环路接口访问 通过指示器与网络堆栈隔离反向 CLONE_NEWNET和CLONE_NEWUTS。
与类似的Firejail项目的主要区别在于, 它也使用setuid启动器,在Bubblewrap中 容器层仅包含最低限度的必要特征 Flatpak附带了启动图形应用程序,与桌面交互以及对Pulseaudio进行过滤调用所需的所有高级功能,并在重置权限后运行。
另一方面,Firejail将所有相关功能组合到一个可执行文件中,使您的审核复杂化,并将安全性维持在适当的水平。
Bubblewrap基本有效 由 在临时文件系统上创建一个空的装载名称空间 沙盒处理完成后将销毁该文件。
通过使用开关,用户可以通过从主机系统挂载所需目录的链接来在挂载名称空间中构建所需的文件系统环境。
泡泡纸0.4.0
目前Bubblewrap的版本为0.4.0(最近发布)。 项目代码是用C编写的,并根据LGPLv2 +许可进行分发。
新版本 在实现对加入名称空间和进程的支持方面值得注意 现有用户(pid名称空间)。
已添加标志“ -userns”,“-userns2”和“ -pidns”以控制名称空间的连接。
此功能在setuid模式下不起作用,并且需要一种无需root特权即可工作的单独模式,但是需要在系统上启用用户名称空间(在Debian和RHEL / CentOS上默认禁用),并且不排除潜在利用漏洞的可能性。其余漏洞受到“用户命名空间”限制的限制。
在Bubblewrap 0.4的新功能中, 还观察到使用musl C库而不是glibc进行构建的可能性, 并支持将名称空间信息以JSON格式保存到统计文件中。
可以在Github上查询Bubblewrap代码及其相关文档, 链接是这个.