Ubuntu Snaps 是否比官方存储库中的经典安装方法更安全?

信息安全 ubuntu 容器 安装
2021-08-30 05:28:41

今天,Ubuntu(和其他一些发行版)提供了一种安装软件的新方法,即snaps它是与所有依赖项一起打包的软件,以某种容器化方式运行并自动更新。这可能听起来像是绝对是一个更安全的选择,但是当您考虑它时,它实际上取决于几个因素,并且可能最重要的是:

  • 容器化听起来是件好事,但它究竟是一种什么样的容器化呢?它真的有帮助吗?另外,安装软件包时不会询问您要允许或禁止什么,所以我想应用程序本身决定了它想在系统上访问的任何内容。我想只有在应用程序受到开发人员(或打包它的人)正确限制的情况下,它可能会阻止利用某些漏洞,但它是否有助于抵御受损或恶意应用程序?
  • snaps 的维护似乎要好得多,它们似乎都是最新的(最新的分支和补丁),并且在新版本可用时更新得很快。官方 repos 中的软件总是旧版本(尽管希望已修补,但从版本号中看不出来),因此不清楚在 repos 中修补的速度和内容(如果有的话)。然而 snaps 和 repos 的问题是:到底是谁在维护软件,供应链在这两种情况下是否同样安全(或不安全)?我尝试在官方 repos 中检查维护者是否有几个流行的包,它总是“Ubuntu Developers”(不管那是什么意思)。如果您对 snap ( snap find <whatever>) 执行相同操作,您将看到许多不同的“发布者”(无论这意味着什么)。gimpffmpegandroid-studio还有很多其他的都是由“snapcrafters”出版的;vlc由带有绿色复选标记的“videolan”发布(经过验证的发布者,无论“验证”是什么意思,因为目前甚至没有办法验证,我猜它只是“Canonical 的朋友”);keepassxc由“keepassxreboot”发布;john-the-ripper由“claudioandre-br”发布,他在 GitHub 上似乎是一个开发者,他对官方的 John The Ripper 进行了分叉和修补。所以这一切都非常混乱。

所以问题是:snap 是比官方 repos 更安全的替代品吗?如果用户想安装,比如说,Keepassxc,从官方 repos 或 snap 安装它会更安全吗?或者用户在做出选择之前需要检查什么?

请注意,例如 Keepassxc 的最新版本是 2.6.6(来自官方网站),并且 snap 提供了 2.6.6 版本(因此很容易看到这是完全修补的),而 Ubuntu 的官方 repos 有 2.4.3+dfsg.1 -1build1(我想并希望它是一个旧版本,已针对安全问题进行了全面修补,但从名称中并不清楚)。您肯定会很想从 snap 中安装它,直到您记得 snap 是一个相对较新的东西,我不知道我对整个过程有多少信任。这就是让我问这个问题的原因。

1个回答

这里的安全性取决于您更信任的人*:Canonical 或应用程序开发人员。至少,您知道 Canonical 是一家合法公司,而不是故意制造恶意软件的公司(至少在传统意义上)。应用程序开发人员也可能是一些大公司,或者它可能是您从未听说过的开发人员,这很可能是合法的开发人员,但如果您以前从未听说过他们,您不一定能确定这一点。您也对他们编写安全软件的技能没有信心。

Snap 是您可以将一些信任从应用程序所有者转移到 Canonical 的一种方式。通过使用 snap,snap 以多种方式“沙盒”一个进程:例如,它在下面给出了自己的目录/tmp做工作而不是直接在你的主目录中操作,它可以做的仅限于你授予它使用权限的“接口”[1]。这类似于 iOS 和 Android 等移动设备处理沙盒的方式:当应用程序想要做某事时,说“写入您的主目录”,它们必须获得授予它们的权限(尽管在安装应用程序时,我不要相信有明确的提示这样做)。只是碰巧可能的权限比大多数移动操作系统通常允许授予的权限更广泛:例如,在 iOS 上禁止将文件写入容器化目录之外,但快照应用程序可以使用权限。

例如,如果开发人员编写了一个可以获取文件名并将其删除的程序,据说只有应用程序控制的文件,并且他的应用程序执行的操作接近rm -rf /home/username/foobar-app/{NameOfFile}并且输入卫生很差,那么可以想象一个坏演员可能会将文件的名称为../../../,删除整个系统。snap 将阻止没有权限修改其自己目录之外的文件的应用程序,从而阻止这种情况。

然而,Snap 有一些闭源组件,因此它确实依赖于您在一定程度上信任 Canonical(尽管我相信客户端组件,它们实际上是做安全工作的组件,是开源的)分发正确的软件到您,但我严重怀疑 Canonical 会通过将恶意软件注入您的软件而危及他们的声誉。

*您也可以信任开源应用程序本身,因为您通读了源代码,但就安全性而言,它类似于信任编写(并因此阅读)源代码的开发人员。