从翻译人员那里:我在搜索实现桌面上自动软件更新的库时偶然发现了TheUpdateFramework。 一方面,下面介绍的软件更新系统的安全性方面的描述对我来说很有趣,也很详细。 另一方面-当然,除了学术研究之外,尽管在LinuxFoundation的支持下,您可以找到许多合适的解决方案。 您可以在评论中建议选项。

安全性
在以下情况下,我们可以认为软件更新系统“安全”:
- 她将及时发现最新的可用更新
- 更新系统下载的所有文件都是正确的,并且
- 检查或下载文件不会造成有害后果。
为此,需要针对许多潜在攻击的可行预防策略。
攻击与弱点
下面列出了一些在软件更新系统上的已知攻击,包括使这些攻击成为可能的弱点。 要设计安全的软件更新框架,您需要了解这些攻击并制定保护策略。 这些缺点中的某些缺点可能彼此相关,具体取决于特定软件更新系统的体系结构和实现。
- 安装自定义软件 。 攻击者可以响应于下载请求而替换任意文件,并将他想要的任何内容安装到客户端系统中,甚至无需确定此类操作是否非法。
- 攻击回滚更新 。 攻击者为软件更新系统提供了比客户端上当前安装的版本更旧的文件。 用户安装了可能包含漏洞的版本,而无法发现该版本已过时。 以后,攻击者可以利用这些漏洞。
- 倒带攻击 。 攻击者任意增加版本号,使其比当前值高得多,从而欺骗了软件更新系统,并迫使其认为任何后续的更新实际上都试图将软件版本回滚到客户端,使其恢复到先前的过时版本。 例如,在某些情况下,如果存在最大可能的版本号,则犯罪者可以使用此最大数量,以便更新系统永远无法安装新的更新。
- 无限冻结的攻击 。 攻击者继续将客户端已经看到的文件返回给软件更新系统。 结果,客户端对新软件版本一无所知。
- 无休止的数据攻击 。 响应下载请求,攻击者返回无尽的数据流,直接对客户端造成伤害(例如,填满磁盘或RAM)。
- 攻击反应迟钝 。 攻击者以非常慢的数据流响应客户端,最终导致客户端无法完成更新过程。
- 过度依赖的攻击 。 攻击者通知客户端,安装必需的软件还需要安装第三方软件( 嗨,mail.ru-大约Per。 )。 该第三方软件可能来自可靠的来源,但仍然具有攻击者可以利用的已知漏洞。
- 混合组合攻击 。 攻击者将包含该文件同时存在于同一修订版本中不存在的文件的存储库快照返回给客户端。 这可能导致安装过时版本的依赖项,以及其他更复杂的后果。
- 安装其他软件 。 攻击者将受信任的文件返回给客户端,这根本不是客户端想要安装的文件。
- 阻止更新的恶意镜像 。 攻击者控制其中一个存储库镜像,并可以使用它来防止客户端从其他未感染的镜像接收更新。
- 关键威胁漏洞 。 可以破坏系统中单个密钥(或多个密钥,其数量不超过指定阈值)的攻击者可以破坏客户端。 在信任单个联机密钥的情况下(例如,仅使用SSL加密保护更新时),以及在单个脱机密钥的情况下(对于大多数使用密钥进行签名的软件更新系统),都可能发生这些攻击。
安全原则
为了确保保护系统不受上述所有攻击的影响,更新框架(TUF)的体系结构和实现依赖于几个基本概念。 在元数据文档中可以找到有关TUF如何传输上述信息的详细信息。
信任度
信任下载的文件实际上意味着假设文件是由一方提供的,而没有易受攻击的体系结构解决方案。 在软件更新系统中,信任的两个经常难以捉摸的方面是:
- 不应永远授予信任。 如果未更新信任,则必须将其撤消。
- 不应平等地给予所有参与者信任。 这种类型的共享信任意味着您只能信任那些由根角色指定其成员提供的成员文件。
降低关键风险(抵制妥协)
加密签名是软件更新系统中安全性的重要组成部分。 这些签名中使用的密钥的安全性直接影响系统保护的客户端的安全性。 安全软件更新系统不应天真地认为私有密钥永远不会受到破坏,而应该预见如何保护客户端免受破坏这些密钥的可能性。 这是抵制妥协的基本原则。
密钥被泄露时保护客户端的安全包括:
- 快速安全地更换和召回钥匙。
- 对密钥的信任度最低,极有可能遭受破坏。 在妥协的情况下,在线存储或在自动化系统中使用的密钥不应立即对客户构成威胁。
- 使用多个键和阈值/仲裁签名。
廉正
确保更新框架(TUF)中的完整性不仅适用于单个文件,而且适用于整个存储库。 客户端应该验证单个文件是否正确是很明显的。 已经不是很明显了,但是对于客户来说,确保整个存储库的审计是正确的仍然非常重要。 例如,如果受信任的源提供了两个文件,则软件更新系统应看到两个文件的最新版本(而不仅仅是一个),并且一次只能看到存储库中存在的这两个文件的最新版本。
相关性
由于软件更新通常可以修复漏洞,因此软件更新系统获取最新的可用版本很重要。 攻击者可能试图迫使客户端安装该软件的过时版本,或者干脆说服客户端没有新的更新。
确保相关性是指:
- 切勿接受早于已安装文件的文件。
- 确定接收更新的可能问题。
值得注意的是,如果攻击者响应客户端请求,则并非总是能够成功进行更新。 但是,客户端必须能够确定其无法接收的更新的可能性。
实施安全
除安全体系结构外,TUF还可以应对实现漏洞,包括软件更新系统常见的漏洞。 在某些情况下,为此在更新元数据中包含其他信息。 例如,了解下载文件的预期大小将允许TUF限制下载数据的数量。 结果,防止了TUF受到上述无限数据攻击。