
Snapscope 已成为最受关注的工具之一。 在 Snap 生态系统中,这样做是有充分理由的:它将我们每天从 Snap Store 安装的软件包的安全性置于显微镜下进行审视。在人们几乎理所当然地认为软件商店里的所有内容都是安全的环境下,拥有一个能够揭示真正漏洞的独立扫描器可以改变许多用户的看法。
它远非一个企业项目, Snapscope 最初是艾伦·波普的个人倡议。这位在 Ubuntu 社区颇具知名度的人物曾在 Canonical 工作多年,他的提议既简单又强大:只需输入 Snap 软件包的名称或其开发者的名字,即可获得一份基于已知漏洞的详细安全报告。所有这一切都秉持着非常清晰的原则:“不加评判,只陈述事实。”
背景:Snap、安全性和透明度的必要性
当我们谈到 GNU/Linux 的安全性时, 许多用户认为从官方存储库或商店安装是安全的。 Snap Store 通常被视为完全安全的代名词。然而,过去几年的经验表明,绝对安全并不存在,无论是 Snap 还是其他任何格式。Canonical 致力于预防问题,但过时、维护不善或存在安全漏洞的依赖项的软件包总有可能被漏网。
对于 Snap 来说,有一个重要的细微差别: 并非只有官方项目团队才能发布软件包。任何符合最低要求的开发者或公司都可以将他们的应用程序上传到 Snap Store。这为各种各样的软件(目前已经非常丰富)打开了大门,但也意味着我们对这些软件包的信任必须辅以审核机制。
这时Snapscope就派上用场了。 这个工具试图回答的核心问题很简单。每个 Snap 包里都包含什么?它的实际安全状况如何?与其盲目信任,不如参考基于全球公认漏洞数据库的分析。
Snapscope是什么?它的幕后推手是谁?
Snapscope 是一个 Web应用程序 专注于分析 Snap 软件包的 CVE 和漏洞 它广为人知。它由 Alan Pope(社区中被称为“Popey”)开发,他曾是 Canonical 的员工,也是自由软件界的常客。它并非 Ubuntu 的官方产品,而是一个旨在提高 Snap 生态系统透明度的个人项目。
该网站的运作方式非常简单: 您输入 Snap 包或编辑器的名称。 在搜索引擎中输入(组织或开发者)名称,系统将使用安全分析工具启动扫描。扫描结果将生成一份报告,其中包含所有检测到的漏洞,并按严重程度进行分类,同时提供更多信息的链接。
此外,Snapscope还有一个有趣的特性: 艾伦评论说,他是在Vibelympics的背景下对网站进行“氛围编码”的。Chainguard 的一项倡议,鼓励开发者创建创意十足、节奏明快的项目,并将奖金捐赠给慈善机构。虽然其起源相对轻松有趣,但该项目对管理员、开发者和高级用户而言却具有非常重要的实用价值。
技术基础:使用 Grype 和 CVE 进行分析
Snapscope 的核心依赖于 Grype是一款专门用于漏洞分析的开源工具。 在容器镜像和文件系统中,Grype 会将软件包内容(尤其是库和依赖项)与 CVE 数据库进行比对,以检测潜在的安全漏洞。
分析Snap时, 检测到的漏洞按严重程度分组。风险等级分为严重、高、中、低四个级别,同时还包括已知已利用漏洞 (KEV) 列表中列出的漏洞。这有助于快速评估风险是仅存在于理论层面,还是漏洞利用程序已实际传播。
实际上,每个包裹的报告都显示 漏洞标识符(CVE-ID)、其严重性以及外部链接 提供更全面的信息。也就是说,您不仅能看到问题的存在,还能了解问题的具体内容、受影响的版本,以及在很多情况下,安全经理建议采取哪些缓解措施。
目前, Snapscope专注于x86_64架构的软件包该工具在该平台上最为成熟。Alan 暗示未来可能会添加更多架构,但目前的首要任务是在最广泛使用的桌面和服务器平台上保持可靠的分析性能。
Snapscope网站的实用功能
除了对包裹进行一次性扫描之外, Snapscope 网站集成了多个实用工具,方便用户进行探索和审计。 来自 Snap 商店:
- 按软件包名称或开发者/组织搜索您可以直接输入 Snap 名称(例如,一个知名的应用程序)或发布者名称,并查看所有已分析的相关软件包。
- 最近扫描的包裹列表首页会显示最近分析中扫描过的 Snap,帮助您了解哪些内容最常被评论。
- 漏洞数量最多的软件包排名图表会突出显示检测到的 CVE 最多的软件包,这可以为在生产环境中使用这些 Snap 的管理员和用户提供早期预警。
- 每个 CVE 的详细信息链接每个条目都允许访问外部资源,以了解故障的背景、影响以及是否存在补丁或缓解措施。
- 能够将包裹排队等待重新扫描如果有人想要获得更新的分析结果,他们可以强制对特定的 Snap 进行新的扫描,这在漏洞数据库最近更新时非常有用。
所有这些都以……的形式呈现。 界面相当清晰简洁。无需注册或复杂配置。任何拥有浏览器的人都可以访问该网站,搜索 Snap,并立即查看其“安全状况”。
为什么大多数漏洞并非 Snap 格式的错
Snapscope强调的关键点之一是: 检测到的大多数漏洞都与软件包中包含的库有关。并非指 Snap 格式本身。作为独立的应用程序,Snap 通常使用特定版本的依赖项,而不是使用系统版本。
这种设计具有明显的优势: 它允许现代应用程序在旧版发行版上运行。或者说,旧版应用程序即使核心库发生重大变化,也能在新系统上继续运行。此外,它还赋予 Snap 维护者对应用程序运行环境的更多控制权。
然而,它也有不太友好的一面: 如果 Snap 中嵌入的库存在安全漏洞只有软件包维护者才能更新和重新构建 Snap 包。仅仅更新操作系统或系统库是不够的,因为存在漏洞的副本嵌入在软件包内部。
换句话说, 这个问题并非Snap独有。如果将同一个存在漏洞的库版本直接包含在 DEB 包、AppImage、Flatpak 或任何其他格式中,都会造成危险。区别在于,在 Snap 格式中,系统更新周期和软件包自身更新周期之间的解耦更加明显。
Canonical 试图通过所谓的措施来缓解这种情况。 “基础快照”,该组共享关键组件 许多软件包用于减少重复代码并简化关键库的维护。然而,这并不能完全消除风险,因为每个软件包仍然存在各自的依赖关系。
安全、沙箱和风险认知
查看 Snapscope 报告可能会给人一种印象,即 这些按扣有很多安全漏洞。然而,重要的是要结合实际情况来看待这些数据。首先,许多列出的漏洞仅限于一些库,这些库虽然存在漏洞,但仅在非常特定的场景中使用,或者已经采取了缓解措施。
此外,Snap 的安全模型还包含 相当严格的限制和沙盒机制这意味着,即使 Snap 中的漏洞被利用,只要用户没有手动放宽权限,其影响通常也仅限于软件包的隔离环境中。
但这并不意味着所有问题都神奇地解决了,但是…… 是的,它降低了许多漏洞的潜在影响。真正的问题不在于格式本身,而在于维护:多年未更新的软件包、过时的库,或者作为测试上传但从未再次审核过的 Snap 文件。
事实上,估计 Snap Store 中大量包裹多年无人问津。许多内容只是简单的“Hello World”消息或开发者测试格式的实验,这些内容被发布出来,任何人都可以访问。Snapscope 有助于突出显示这些情况,鼓励维护者审查并清理他们的帖子。
透明度和可审计性:Snapscope 的真正价值
艾伦·波普在谈到Snapscope时反复强调的信息之一是: 该工具并非旨在证明 Snap 格式的安全性低于其他格式。这凸显了可审计性的重要性:能够检查软件包中包含的内容,并了解它存在哪些漏洞。
Snapscope 这类工具的存在令人惊叹。 之所以能够做到这一点,正是因为 Snap 的运行相当透明。可以使用标准安全工具分析内容,与公开的 CVE 进行交叉引用,并以易于开发人员和高级用户阅读的格式呈现。
从这个意义上讲,Snapscope 的功能是: 一个向维护者提供静默反馈的渠道虽然该网站不会做出明确的“判断”,但看到你的软件包被列为漏洞最多的软件包之一,或者检查你的 Snap 软件包是否多年未被扫描,可能会促使你进行更新。
这一观点与社区中反复出现的另一个思考相呼应: 反馈并不总是攻击。多年来,当用户抱怨 Snap 格式的启动速度比其他格式慢时,部分回应带有防御性质,将批评归咎于“黑粉”。随着时间的推移,人们逐渐意识到这确实是一个性能问题,并对此进行了调查和改进。如今,在许多情况下,Snap 的速度已经与“原生”软件包不相上下。
Snapscope完美契合了这种动态: 它并没有说Snap不安全。它提供的是有助于改进安全性的数据。重复一句口号(“它很安全,相信它”)和展示一份包含 CVE 编号、日期和版本信息的具体报告之间的区别非常显著,尤其对于需要证明技术决策合理性的用户和公司而言更是如此。
实际应用:谁最能从Snapscope中受益
虽然任何人都可以出于好奇上网搜索包裹, Snapscope 对于三个配置文件尤其有用 在 GNU/Linux 生态系统中非常明确。
首先, 管理安装了多个 Snap 的系统管理员对他们来说,拥有一个能够快速检查关键软件包安全状态的工具至关重要。他们可以查看哪些应用程序待处理的 CVE 最多,确定迁移或替换的优先级,甚至可以决定是继续使用 Snap 还是选择其他格式。
其次, Snap 软件包开发者和维护者 他们发现 Snapscope 是一个得力的助手。它让他们能够一目了然地看到哪些漏洞会影响软件包中包含的库,并提供更新依赖项和发布新补丁所需的信息链接。此外,任何人都可以请求新的扫描,这有效地促使软件保持最新状态。
第三, 用户关注安全问题 用户如果想在安装任何软件之前了解风险,可以在点击 Snap Store 中的“安装”按钮之前,使用 Snapscope 快速检查软件包的健康状况。此举的目的并非制造恐慌,而是为用户提供做出明智决策的工具。
与其他格式的关系以及 Canonical 的作用
经常被误解的观点之一是: Snapscope 可以证明 Snap 格式比其他格式更差或安全性更低。事实并非如此:在 Snap 中检测到的相同易受攻击的库,可以打包到 DEB、AppImage、Flatpak 甚至容器中,Grype 仍然能够将其标记出来。
事实上,如果配置相同类型的分析,则 传统 DEB 包或容器图像漏洞的数量和类型可能都非常相似。不同之处在于,目前该工具专注于 Snap,因为这是 Alan Pope 最熟悉的生态系统。
我代表 Canonical, 该公司一直致力于缩小攻击面和提高性能。 该格式在桌面和服务器上均有应用,例如: Linux 软件近期面临的挑战前面提到的“基本击球”、开球时间的改善以及严格的封锁都是这项持续努力的一部分。
一些评论家还指出了以下几个方面: Snap Store 的专有后端或自动更新政策这甚至导致像 Linux Mint 这样的发行版默认限制了 Snap 的使用。在这种情况下,像 Snapscope 这样的外部工具可以起到桥梁作用:它提供客观数据,让每个用户自行决定使用这种格式的价值所在。
艾伦评论说: 您无法直接将您的作品整合到 Snap Store 中。因为那样就需要对 Canonical 的基础设施进行更改,而他并不具备这些权限。不过,他表示 Canonical 可以自由地从该项目中借鉴想法或代码,并将其整合或改进,无论是以公共服务的形式,还是以其他类型的内部审计工具的形式。
工具的更新、重新扫描和未来发展
关于 Snapscope,一个有趣的细节是: 它允许您多次重新扫描同一个数据包。乍一看这似乎是多余的,但仔细想想却很有道理:漏洞数据库一直在更新,所以即使 Snap 没有改变,今天的扫描结果也可能与上周的扫描结果不同。
这解释了为什么 网络上出现了多个针对同一软件包版本的分析请求。每次新的扫描都会受益于安全数据源中最新的信息,从而有可能发现以前未列出的问题。
关于未来的改进,艾伦表示有兴趣 能够扫描同一 Snap 的不同版本和渠道 (例如,Firefox 和 Thunderbird 等应用程序的稳定版、测试版、Edge 版或 ESR 版)。目前,由于底层工具的功能限制,这项功能还受到一些问题的关注,并且已有相关的 pull request 来添加对特定版本选择的支持。一旦这项功能成熟,我们计划将其集成到 Snapscope 中。
与此同时,该项目仍然是 正在进行中的工作,目前已经非常有用随着社区成员使用它、报告问题和提出改进建议,其范围和准确性有望不断提高,就像漏洞数据库本身一样。
Snapscope 将自身定位为揭示 Snap 包裹实际安全性的关键工具。它既不哗众取宠,也不盲目维护某种格式,而是提供清晰的数据,帮助识别过时的库,鼓励维护者改进工作,并为用户和管理员提供实用的工具,以便他们做出明智的决策。在一个关于性能、代码库信任度和更新模型等问题争论不休的生态系统中,拥有这样一个独立的扫描器意义重大。