Yum 安全模型 或者 为什么敌对代理可以在没有警告的情况下拒绝更新?

Yum 安全模型 或者 为什么敌对代理可以在没有警告的情况下拒绝更新?

我的一个朋友刚刚遇到了最奇怪的问题,他的 Fedora 20 无法更新到(甚至找不到)当前的内核 3.16.3(顺便说一句,也没有更新脆弱的打击版本)。在清除缓存、比较他和我的配置文件以及一番绞尽脑汁之后,我终于想起他正在使用 VPN,并要求他将其关闭并重试。在 VPN 之外它运行完美。我的猜测是 VPN 使用积极的缓存强制执行 http 代理。

yum这让我开始思考可以为用户提供的安全断言。显然,它无法检测对存储库数据库的重播攻击,因为他没有收到有关过时存储库状态的任何警告或错误消息。我假设存储库概述带有时间戳并定期签名或通过 HTTPS 获取(或者通过 HTTPS 获取数据库的哈希值以减少加密流量的带宽)。

我知道各个软件包上的签名都经过检查,因此我至少可以放心,任何不是由受信任方编写的软件包都不能安装在我的系统上。但是部分更新怎么样?恶意代理或镜像是否可以有选择地拒绝软件包更新?例如,永远不要更新易受攻击的 bash 软件包,而是转发所有其他更新,这样我就不会怀疑根本没有获得任何更新?

或者更糟糕的是,攻击者甚至可以选择性地降级包裹?例如,重新安装易受heartbleed影响的openssl软件包?

答案1

我是从 的角度来回答的apt,但我相信这对于 来说都是一样的yum

更新是通过 HTTP 或 FTP 获取的,而不是 HTTPS。这个想法是,有效负载不需要加密,只需不修改,因此通过索引上的 PGP 签名可以实现“足够”的安全性。但重放攻击是个问题!

为了可扩展,更新和索引必须从“哑镜像”系统获取,因此镜像无法执行每个连接的计算。理论上,可以使用第二个系统来获取索引,并仅对批量数据使用哑镜像。

显然,无法保证可以与服务器连接。如果您信任本地系统的时钟,您可以检查作为 PGP 签名一部分包含的时间戳。这需要一个小的一些额外的基础设施来保证签名每天重新生成,即使内容没有改变,但这对于检测陈旧的镜像来说是一个好主意。

对于问题的最后一部分 - 不,不可能强制降级。包管理的一个基本方面是,如果远程存储库包含比您当前拥有的版本更旧的版本,则它不会执行任何操作。

相关内容