为什么 Ubuntu 默认启用 user.max_user_namespaces?

为什么 Ubuntu 默认启用 user.max_user_namespaces?

我正在研究近年来的内核漏洞,其中大约 80% 需要 user.max_user_namespaces 为正值。

此设置在 CentOS 6.X 系列中被禁用,但在所有最新的 Ubuntu LTS 版本中均已启用。

结论似乎是“Ubuntu 更容易被利用”,因为“user.max_user_namespaces”默认是启用的。

我想知道为什么 Ubuntu 不会禁用它?在默认设置中启用它有什么好处吗?

答案1

Ubuntu 启用该功能的时间比 Debian 长得多,但请参阅Debian 启用该功能的理由我认为这可能与 Ubuntu 的相同:

从 Linux 5.10 开始,所有用户都默认允许创建用户命名空间。这将允许 Web 浏览器和容器管理器等程序为不受信任或不太受信任的代码创建更受限制的沙箱,而无需以 root 身份运行或使用 setuid-root 助手。

以前的 Debian 默认将此功能限制为以 root 身份运行的进程,因为它会暴露内核中的更多安全问题。但是,随着此功能的实现日趋成熟,我们现在确信,启用它的风险被它提供的安全优势所抵消。

因此他们认为,由此提供的安全优势已经足够好,不值得考虑抛弃整个系统。

Ubuntu 已经意识到了安全问题,并正在努力使用 AppArmor 进行缓解

禁用非特权用户命名空间可能会阻止漏洞利用,但也会破坏合法使用和依赖访问它们的应用程序。

通过引入受限制的非特权用户命名空间,AppArmor 可用于选择性地允许或禁止单个应用程序的非特权用户命名空间。AppArmor 策略用于选择性地控制每个应用程序对非特权用户命名空间的访问,然后拒绝所有其他应用程序的访问。

(这篇文章还在其他地方提到了用户命名空间如何减少了对 setuid 的需求。)

根据宣布此事的博客文章,它在 23.10 的初始版本中默认被禁用,计划在获得更多数据后通过软件包更新启用。旧版本不会受到影响。

相关内容