存储库列表安全吗?有HTTPS版本吗?

Cha*_*iam 28 updates apt repository

存储库更新安全吗?

作为开发人员方面的小脑瓜,我无法理解为什么存储库列表http://security.ubuntu.com和其他http(不安全的)站点在/etc/apt/sources.list. 如果没有证书链匹配,这将显示为“向任何响应者询问要更新的软件包列表”而不是“询问 ubuntu.com 站点...”

任何网络都可以选择欺骗更新站点,这是提供本地缓存和审查副本的常见做法吗?

tho*_*ter 33

简而言之,是的,它们是安全的,因为用于签署文件的公钥加密。

APT 下载的所有文件都有一个签名,允许根据存储在您计算机上的公钥来验证下载的文件,因为它是由 Ubuntu 签名的,并且只有 Ubuntu 签名。这将验证您收到的文件是否在某个阶段得到了 Ubuntu 的授权,并且此后没有被修改或篡改。

Ubuntu(以及使用相同系统的Debian)提供了有关其工作原理的技术说明。

由于使用 HTTP 而不是 HTTPS,是的,窃听者可以看到您正在下载哪些文件,但在这种情况下,您不太可能关心隐私。修改包以注入有害代码的中间人尝试仍然会失败,因为它会破坏签名机制。

这种签名机制中的一个可能问题是它不能保证您获得的是最新版本的包(实际上,有时镜像更新很慢)。为了帮助缓解这个问题,签名的发布文件包含一个“有效期至”日期,在该日期之后它引用的所有文件都应该被视为过时。中间人在此有效期内用存档的未修改早期版本替换存档并导致您的 APT 相信没有更新是合理的。但是他们不能对包进行任何任意修改,也不能回到过去某个时间点。

在这种分布式环境中,签名机制提供了比 HTTPS 更好的安全性,其中文件被镜像到许多不受 Ubuntu 控制的服务器上。从本质上讲,您只需要信任 Ubuntu,而不是镜像,因此您需要证明文件最初来自 Ubuntu 并且此后没有被修改 - 无需验证镜像的身份。

请注意,当您将非官方存储库添加到源列表(例如 PPA)时,您将收到未经 Ubuntu 签名的文件。APT 应该警告您这一点,因为它们尚未通过与您计算机上安装的任何由 Ubuntu 授权的公钥匹配的证书进行签名。

  • Alice 运行 Ubuntu。Bob 控制 Alice 的 Internet 连接。Bob 不能将坏包放入 Alice 的安装中,因为每个包都经过签名。在 Ubuntu 中发现了一些巨大的安全漏洞。Alice 尝试找到更新的包,但 Bob 从 Alice 的更新检查中删除了所有提及该包的内容。Alice 攻击了一个系统管理员,然后通过 HTTPS 从 ubuntu.com 中提取更新检查,以验证她通过安全链接连接到真实网站。现在 Alice 看到了安全更新,而 Bob 无法隐藏它。 (6认同)
  • 这当然是正确答案。但我觉得奇怪的是,似乎没有人担心窃听者会按顺序编译您已安装的所有软件包的列表,包括您已更新的软件包和尚未更新的软件包,以针对已知的攻击进行攻击。这些包中的安全漏洞。 (4认同)
  • 呃,如果没有办法验证一个镜像或者主站点是最新的,那么就没有办法知道是否有可用的更新,安全更新或其他。也就是说,没有可用更新的安全列表。 (3认同)
  • 不确定“没有可用更新的安全列表”是什么意思,但发布文件和包列表*已*签名。只是它不会验证您的镜像是否是最新的。 (2认同)

Nik*_*olm 21

这里评价最高的答案显然已经过时了。从那以后,由于包验证错误,在 apt 中发现了 2 个严重的远程代码执行漏洞。安全公告在这里这里

这比担心隐私/信息泄漏和过时的软件包版本要糟糕得多;这允许以 root 身份执行任意代码,完全安全失败。问题是:如果使用 https 而不是 http,这些攻击就会被阻止。

这证明纵深防御原则在这里和其他任何地方一样适用。正如这些漏洞所表明的那样,许多关于 https 在 apt 上下文中没有提供或提供最低安全好处的说法是完全不正确的。

那么问题就变成了 https 的安全优势是否值得在缓存、增加开销等方面付出代价。我无法回答这个问题,但至少我认为 Ubuntu/Canonical/Launchpad 应该为其存储库提供可选的 https 端点.

  • 安全也与隐私有关,HTTPS 意味着至少会更难确定您正在运行哪些软件包和版本。 (4认同)

Izz*_*zno 10

APT 下载的所有文件都有一个签名,允许根据存储在您计算机上的公钥来验证下载的文件,因为它是由 Ubuntu 签名的,并且只有 Ubuntu 签名。这将验证您收到的文件是否在某个阶段得到了 Ubuntu 的授权,并且此后没有被修改或篡改。

Ubuntu(以及使用相同系统的 Debian)提供了有关其工作原理的技术说明。

由于使用 HTTP 而不是 HTTPS,是的,窃听者可以看到您正在下载哪些文件,但在这种情况下,您不太可能关心隐私。修改包以注入有害代码的中间人尝试仍然会失败,因为它会破坏签名机制。

这种签名机制中的一个可能问题是它不能保证您获得的是最新版本的包(实际上,有时镜像更新很慢)。为了帮助缓解这个问题,签名的发布文件包含一个“有效期至”日期,在该日期之后它引用的所有文件都应该被视为过时。中间人在此有效期内用存档的未修改早期版本替换存档并导致您的 APT 相信没有更新是合理的。但是他们不能对包进行任何任意修改,也不能回到过去某个时间点。

在这种分布式环境中,签名机制提供了比 HTTPS 更好的安全性,其中文件被镜像到许多不受 Ubuntu 控制的服务器上。从本质上讲,您只需要信任 Ubuntu,而不是镜像,因此您需要证明文件最初来自 Ubuntu 并且此后没有被修改 - 无需验证镜像的身份。

请注意,当您将非官方存储库添加到源列表(例如 PPA)时,您将收到未经 Ubuntu 签名的文件。APT 应该警告您这一点,因为它们尚未通过与您计算机上安装的任何由 Ubuntu 授权的公钥匹配的证书进行签名。

来源:存储库列表安全吗?有HTTPS版本吗?

  • 事实上,apt ([1](https://www.debian.org/security/2016/dsa-3733)、[2](https://www.debian.org/security/2019/ dsa-4371)) 允许以 root 身份执行任意代码,如果使用 https 而不是 http,则将被阻止。这证明纵深防御原则在这里和其他任何地方一样适用。**声称 https 不提供安全优势或提供最低安全优势的说法完全是错误的。** (9认同)
  • 我能想到的一些中间人攻击:重放旧的软件列表,以便不安装安全补丁,观察安装了哪些软件,下载了哪些更新的软件包,甚至订阅了哪些 PPA。 (4认同)