X11 下的 snap 安全性

X11 下的 snap 安全性

随着 16.04 LTS 的 snap 包发布,博客文章著名 Linux 内核贡献者和核心操作系统开发人员 Matthew Garrett 表示:

...Snap 运行不受限制,几乎可以访问整个系统

如果使用 snap 的目的是为了强制将应用程序与整个系统隔离,那么为什么它们能够访问系统并不受限制地运行?是否应该提交错误报告?是否会采取任何措施来解决这个问题?

答案1

这特别适用于使用 X11 的 snap。换句话说,snap 是不是运行不受限制,但如果 snap 的限制包括对 X 的访问,那么是的:它可以访问 X。它不涉及不使用unity7x11接口的 snap。该博客文章中描述的问题是 X 的一个众所周知的限制,也是开发替代技术(例如 Mir)的原因之一。

古斯塔沃·尼迈耶 (Gustavo Niemeyer) 曾写过很好的博客文章讨论了这个问题。为了便于后人理解和完整性,我将在此引用:

有安全意识的人会发现 X11 实际上并不是一个安全协议。当我们向应用程序授予此权限时,可能会发生许多系统滥用行为。其他接口(如 home)将使 snap 能够访问用户 $HOME 目录中的每个非隐藏文件(那些不以点开头的文件),这意味着恶意应用程序可能会窃取个人信息并通过网络发送(假设它还定义了网络插件)。

有些人可能会对此感到惊讶,但这是对 Snap 和 Snappy 作为软件平台的作用的误解。当您从 Ubuntu 存档安装软件时,这是对 Ubuntu 和 Debian 开发人员的信任声明。当您从各自的存档安装 Google 的 Chrome 或 MongoDB 二进制文件时,这是对这些开发人员的信任声明(这些开发人员在您的系统上有根权限!)。Snappy 并没有消除对这种信任的需求,因为一旦您授予某个软件访问您的个人文件、网络摄像头、麦克风等的权限,您就需要相信它不会恶意使用这些权限。

Snappy 在该图中被限制的目的是为了实现一个软件生态系统,该生态系统可以以清晰可观察的方式精确控制允许什么以及允许谁做什么,此外,它还提供了我们在 Linux 世界中学会欣赏的程序性谨慎,而不是取而代之。阻止人们使用系统中的所有相关资源只会迫使他们使用相同的软件而不是不太安全的机制,而不是解决问题。

而我们今天所拥有的仅仅是个开始。这些界面很快就会变得更加丰富和细粒度,包括资源选择(例如哪个串行端口?),其中一些将完全消失,取而代之的是更安全的选择(例如 Unity 8)。

答案2

问题不在于 snap,而在于 X11,这是一项已有 30 年历史的技术,在设计时没有考虑太多安全问题。

要“解决问题”,您只需摆脱 X11。没有它的系统(例如服务器)现在可以从 snap 隔离中受益。新的和平号它将取代 xserver,希望能够尽快解决 X11 的安全问题。

欢迎阅读 Matthew Garrett 的博客文章满足你的好奇心。上面写着:

这里的问题是 X11 窗口系统。X 没有不同级别的应用程序信任概念。任何应用程序都可以注册以接收来自任何其他应用程序的击键。任何应用程序都可以将假按键事件注入输入流。受强大安全策略限制的应用程序可以简单地在另一个窗口中键入。无法访问您的任何私人数据的应用程序可以等到您的会话空闲时,打开不受限制的终端,然后使用 curl 将您的数据发送到远程站点。只要 Ubuntu 桌面仍然使用 X11,Snap 格式就无法为您提供任何有意义的安全性。

相关内容