Snap和Flatpak应用程序安全吗?它们是否是“官方”的,经过批准或测试适用于特定的发行版版本?

我不喜欢在我的发行版官方仓库之外安装应用程序。

Linux的安全性很大程度上依赖于一个精心策划和测试的软件仓库,以确保与当前发行版版本的库兼容性、稳定性和安全性。

有一次,我安装了一个华丽的终端仿真器,模拟复古的绿色或琥珀色磷光监视器,这个应用程序在我的系统中造成了混乱,我不得不重新安装Ubuntu。

我对使用PPA也感到犹豫。

我只信任极少数的外部来源、PPA,或从网站下载的软件包。

但现在,在Ubuntu专业网站上,SnapFlatpak似乎非常流行。

  • 安装Snap应用程序或Flatpak应用程序安全吗?
  • 是否有官方仓库支持这些应用程序?
  • 如何处理这些非apt的东西的稳定性?

2在软件商店中,你会发现很多的快照。我觉得与普通应用相比,快照似乎有些欠缺。它们运行良好,但有时不能完成你期望的某些操作。我认为Canonical支持快照,而其他Linux群体使用Flatpak,因此它们是官方的,而不是一些第三方的花招。 - crip659
你能把这个转化为一个答案,并且可能稍微充实一下,以便对那些自问同样问题的人有所帮助吗? - Tulains Córdova
1对于@crip659所说的内容进行扩展,其中一个可能成为问题的Flatpak是Steam,一些游戏在Flatpak版本中无法正常运行。Snap和Flatpak的一些问题可以通过更改权限来解决,但大部分情况下它们都能正常工作,你可能会发现有个别应用程序在非Snap或Flatpak版本上受到限制,但我认为这种情况很少见。 - TrailRider
1Snap软件包对开发者来说非常方便,这就是它的全部。它们解决了一个古老的问题:“在我的机器上可以运行”。通过让开发人员以一种复制自己机器环境的方式交付应用程序,他们不再需要承担完整文档、列出所有依赖等责任。难怪它们受到如此大力推广。安全性的问题在于Snap架构试图如何笨拙地保护主机免受可怕而危险的开发者的影响。尽量避免使用。 - Stephen Boston
2https://www.omgubuntu.co.uk/2018/10/new-website-claims-flatpak-is-a-security-nightmare - nutty about natty
2我会像瘟疫一样避开它们...因为它们都有最大的问题:它们包含了开发人员不信任真正操作系统的所有库("对于奇妙应用程序,我们需要确切的 libxyz 1.3.2.28 版本,不能是旧版也不能是新版")。现在想象一下(这并不难),如果 libxyz 版本低于 1.3.8 存在一个关键漏洞(带有 CVE 等)。你如何更新系统上的 libxyz?很简单,使用命令 apt install libxyz。但是这个 flatpak/snap 仍然是 1.3.2.28 版本,无法进行更新。你只能更新整个 snap/flatpak... 如果有更新的话。 - Jürgen A. Erhard
请参阅https://security.stackexchange.com/questions/259088/does-flatpak-enforce-cryptographic-authentication-and-integrity-validation-by-de - Michael Altfield
另请参阅https://github.com/flatpak/flatpak.github.io/issues/520 - Michael Altfield
2个回答

Snaps有一个https://snapcraft.io/仓库。这是由Canonical运营的,他们也是构建Ubuntu的同一批人。
Flatpaks在https://flathub.org/上有一个官方仓库。Flatpaks是由Redhat开发的,但我不知道他们是否管理flathub仓库。
稳定性
当然,个别软件包的稳定性取决于构建的质量,并且受到维护者的控制。
Snaps和Flatpaks都完全使用它们所需的依赖项在沙盒中构建,但两者处理方式略有不同。
Snaps构建一个挂载点,系统将程序存档挂载并从那里运行。
Flatpaks在系统范围(全局)安装时构建在/var/flatpak/中,在本地端构建在~/.var/app中。它们会挂载这些位置并运行它们。
关于稳定性的好消息是,如果你在任何一个应用程序中遇到问题,它是被隔离的,不会通过安装引起与其他已安装应用程序冲突的库而使系统变得不稳定。

两者都是独立的应用程序,包含了所有运行所需的信息。这就是使它们与发行版无关并允许在支持它们的任何Linux系统上安装的原因(如flatpak或snap)

安全性

这个问题有点模糊。

Snaps只有官方仓库。有一起恶意软件进入仓库的报道,但很快就被发现并移除了。那是一个加密货币挖矿软件,会将一些挖到的货币发送给应用程序维护者而用户不知情。即使如此,该应用程序没有其他不良影响,并且据我所知,它无法访问用户的主文件夹。

Flatpaks:如果您使用官方仓库,其安全性应与Snaps相当,没有完美的东西,但任何进入的东西如果是恶意软件,且通过了初始提交审核,将会被迅速注意到并移除。

我个人怀疑任何像病毒这样明显具有恶意的东西都不会进入Snap或Flatpak的仓库,而像前述的加密货币挖矿应用程序那样具有欺骗性的不良行为的东西也不会长时间留在其中。

总的来说,我认为两者都是安全的,但它们都不如官方的Ubuntu源那样本质上安全,但这也适用于PPA。添加任何Ubuntu官方源之外的源都不太安全。
我必须在这里提出一个警告,还有其他Flatpak仓库存在。其中大多数是为了合法的程序而设立的,他们只是想托管自己的仓库而不使用flathub。这些完全不受flathub的质量控制,只有在你信任程序开发者的情况下才应该添加。这同样适用于添加snap仓库,但我认为目前没有除了官方Snap仓库之外的其他仓库。
至于flatpaks和snaps是否安全可靠的问题
总体而言,只要你坚持使用官方仓库,仔细阅读你想安装的软件包的描述,并且不安装任何看起来有点可疑的东西,它们是安全的。
这两种方式都是用户安全地(尽可能安全,超出发行版官方软件包源的范围)安装无法通过其他方式获得的软件并使其“正常工作”的好方法。
例如,我已经安装了Spotify的Snap版本和Teamspeak 3的Flatpak版本。虽然Spotify可以通过ppa安装,但使用Snap可以避免在apt中混杂着我可以不使用的PPA。
对于Teamspeak,我只能使用一个.run文件来解压文件夹,然后将提取出的文件夹放在主目录中,并点击sh文件或使用命令行启动。虽然我以前这样做过,然后创建了一个桌面启动器来启动它,然后将该启动器添加到我的~/local/share/applications文件夹中进行启动。但是,只需一步安装Flatpak并使其正常工作就容易得多。
一次我从外部仓库安装了一个模拟复古绿色/琥珀色荧光屏的时髦终端仿真器。这个应用程序给我的系统带来了严重的破坏,我不得不重新安装Ubuntu。
针对你提出问题之前的那部分:
我怀疑PPA完全破坏你的Ubuntu安装的原因是它引入了新的依赖库,而你的本地程序无法使用这些依赖库,或者它覆盖了你已安装的库,并替换为过时得无法被Ubuntu本地程序使用的旧版本库。
Snaps和Flatpaks的好处在于它们会将它们运行所需的任何库文件都放在自己的文件夹中。Snaps和Flatpaks是自包含的,不会触及任何系统文件或库。
这样做的缺点是,这些程序可能比非Snaps或Flatpaks版本要大,但折衷的是你不必担心它会影响其他任何东西,甚至不会影响其他Snaps或Flatpaks。如果应用程序由于引入了错误的库文件或其他任何原因而损坏,你只需卸载它,它就会完全消失。

1请注意,将软件包发布到Snapcraft的人可能不是官方开发者,因此建议与原始开发者核实是否在Snapcraft上发布。 - DrakaSAN
1有趣,我没意识到Snap得到了Canonical的支持。现在我明白为什么这么多发行版开始正式支持它们了。 - GammaGames
1Snaps只有一个仓库,即由Canonical运营的snapcraft.io,无法设置其他仓库。Flatpak允许自定义仓库(例如elementary OS计划在未来拥有自己的flatpak仓库)。关于安全性,请参阅此帖子中有关Xorg注意事项的内容。 - jena
@jena 谢谢,我原以为 Snaps 不允许第三方软件源,但我不能确定。 - TrailRider
每个Snap应用程序都包含自己的依赖关系,这会使它们在磁盘上占用更多空间吗?例如,使用apt安装gnome-calculatorgnome-logs是否比使用Snap安装它们占用更少的空间? - SaTa
1@SaTa 是的,Snaps比发行版的本地软件包要大,因为它们会拉取所有的依赖项。这在某种程度上得到了缓解,因为一些常见的依赖项,如主题元素和光标,会被安装。不幸的是,无论是Snaps还是Flatpaks,在库方面都不会共享依赖项。如果一个需要libfoo2,而另一个需要libfoo2,你将不得不在每个Snap中安装它们。增加的大小只有在以下情况下才真正重要:1.您的磁盘几乎已满;2.您安装了许多Snaps。如果适度使用,大小并不成为问题。 - TrailRider
https://www.omgubuntu.co.uk/2018/10/new-website-claims-flatpak-is-a-security-nightmare - nutty about natty
请你能否更新你的精彩回答,针对这个链接进行评论:https://www.omgubuntu.co.uk/2018/10/new-website-claims-flatpak-is-a-security-nightmare - nutty about natty
2@nuttyaboutnatty 那篇文章已经有2年了,如果我没记错的话,那个创建该网站的人可能是一位前RHEL员工,或者有其他私心,所以他很难是一个公正的消息来源。如果你访问链接页面https://flatkill.org,你会发现它只是一个单页,并不真正算是一个“网站”。它对作者几乎没有任何信息,甚至连名字都没有。我不确定这个人是如何被追踪到证明他有偏见的。实质上,这个“网页”只是对flatpak的攻击,我不会提及它,也不会给予它任何信任。 - TrailRider
1我并不是任何类型的粉丝,也不是说Flatpak是完美无缺的,但任何人都可以发布这样的页面,如果他甚至没有在上面写上他(或她,实话说我不确定)的名字或任何联系信息,那它就不是一个可信的来源。当我发表我的回答时,我确实知道那个页面,但我觉得不值一提,如果作者对自己的“作品”没有足够的信心来署名,我也不会相信它。 - TrailRider
1关于flatkill.org,你为什么关心作者或者它是单页还是一个网站呢?真正重要的是其中提到的技术论点。它们是否有效? - Pablo Bianchi
同意,请解决技术问题,而不是针对作者。然而,我认为这些也不好 - 例如 flatpak 并不适用于沙盒化,你应该使用 firejail。我的问题是 @TrailRider 和其他人:你们提到了 "flathub 的质量控制" - 具体是如何工作的?如何确保软件包的完整性(即确保哈希值与官方构建的哈希值相匹配,这些官方构建可以在其他地方下载和/或是可再现的),请参考 https://github.com/flathub/flathub/issues/1498 - mYnDstrEAm

对于不同的应用程序来说,情况有很大的不同。你可以找到好的和维护良好的应用程序:

但是有很多垃圾、过时或不安全的应用程序。 在安装应用程序之前,您必须检查作者、快照版本的当前版本/最新更新以及主流版本的相同内容,还有权限(它可能是具有所有危险权限的“经典”应用程序)。
对于PPA也是一样的,它们没有任何可信的质量控制。

实际上,如果你使用Xorg,Snaps的权限对你来说并没有太多作用。请参考这个链接 - jena