Flatpak – 一场安全噩梦
不要与 Flatpack 混淆。20 多年来,Linux 一直被广泛使用,从服务器到嵌入式设备。然而,它在桌面空间方面一直处于欠缺状态。Windows 和 macOS 始终将 Linux 排除在市场之外,游戏主要是 Windows 的领域,而内容创作者则利用 macOS。在过去的十年中,Linux 桌面取得了显著改善:Flatpak、Wayland、Portals、PipeWire 和 FreeDesktop 都在努力使 Linux 成为更适合现代(桌面)系统的操作系统。不过,我不会讨论所有这些;正如你从标题中可以看出的,这将是关于 Flatpak 的! 历史 让我们快速回顾一下服务器空间。看到它们运行着十年甚至更久的内核和库并不罕见。这是有道理的,因为它们的启动时间较长,并且每次系统更新都有可能出现故障,需要进行调试;这会导致宝贵的正常运行时间丢失,尤其是对于像 Google 这样的大型服务。自然,它们发展出了一种快速修补系统中相关部分的方法,因此安全性并不是一个大问题。然而,它们运行的软件可能只能利用新库中的新功能,而不是老旧的、陈旧的软件。那么它们是如何解决这个问题的呢?容器。通常用于以一致和更安全的方式向多个客户交付软件,容器允许你将软件隔离到一个小盒子里,包含所有所需的依赖项,按指定版本,并对主机系统的访问有限。 现在 我们有 Android、macOS 和 iOS,它们对系统的访问受到限制,需要最终用户干预才能访问某些资源。但 Linux 桌面呢?2015 年,Flatpak 发布,将在服务器上使用的容器化技术应用于桌面系统。随之而来的是 Portals 和 Freedesktop SDK。这为开发者提供了一个一致且通用的平台和 API,这与之前的不同依赖版本、核心系统库和打包格式的战场有了巨大变化。 当然,在几十年的发行和开发情况保持不变后,这显然是一次过于巨大的变革。许多必要的 API 存在,但开发者需要抽出时间迁移到它们上面,一些用户(特别是讨厌 Flatpak 的用户)坚决拒绝帮助改善这种情况,坚持我们继续使用旧式方法,针对数千种不同系统重新打包软件。简单来说,自然地,没有人在理智的情况下会对此感兴趣。许多新应用程序开发者在创建应用时考虑了受限环境,并将软件交付到 Flathub,从而以快捷而安全的方式将软件送达最终用户。 应用程序隔离 那么老旧应用程序呢?毕竟你可以在 Flathub 上找到 10 年前的应用。这些应用程序催生了文章,如《Flatpak - 一场安全噩梦》,嘿,你可能认出这个名字!以及来自知名 FOSS 领域人士的各种回应,旨在反驳这些文章中的错误信息和攻击。对于这些应用程序,FUD(恐惧、不确定和怀疑)文章喜欢选择最糟糕的案例来说明 Flatpak 完全不值得推动。因此,我想对此进行说明。这些应用程序是在不受限制的环境中设计的,而它们所需的 API 要么在当时并不存在,要么没有更新以使用新 API。选择性地展示 Flatpak 沙箱“不是沙箱”的案例并不是一个有效的论点,单单表明应用程序本身不安全。当然,旧应用并不是唯一的罪犯。由于新 API 可能还不够成熟,更新和旧应用可能不得不依赖静态权限才能正常工作。对大多数新应用来说,这没问题,因为他们可以比旧应用更多地限制他们的权限。 Flatpak 是一个沙箱。而且 Flatpak 是安全的。这些应用程序并不安全。改变“沙箱”这个词的含义对任何人都没有帮助。只是因为某些应用使用的沙箱无法与 iOS 或 Android 相提并论,并不意味着它就不算沙箱。如果你想把责任推给 Flatpak,那就请随意。应用程序依赖静态权限这一事实表明,应用程序不安全,并依赖不一致的接口,在某些情况下,当前的 API 还没有足够改善以满足它们的用例。我们应该专注于改善这种情况,而不是试图摧毁它。如果你想要一个真实世界的例子,展示部分沙箱依然有效:那就是“fractureiser”恶意软件。即使该恶意软件在 Linux 上本来就不可用,它仍然是传统打包失败的一个例子。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡