发布 OpenSSH 8.9,消除 sshd 中的漏洞

经过六个月的开发,OpenSSH 8.9 发布了,这是一个用于通过 SSH 2.0 和 SFTP 协议工作的开放客户端和服务器实现。 新版本的 sshd 修复了一个可能允许未经身份验证的访问的漏洞。 该问题是由身份验证代码中的整数溢出引起的,但只能与代码中的其他逻辑错误结合使用。

在当前形式下,当启用特权分离模式时,无法利用该漏洞,因为其表现形式被特权分离跟踪代码中执行的单独检查所阻止。 权限分离模式自 2002 年 OpenSSH 3.2.2 起默认启用,并自 7.5 年发布 OpenSSH 2017 起强制启用。 此外,在从版本 6.5(2014)开始的 OpenSSH 便携式版本中,通过包含整数溢出保护标志的编译来阻止该漏洞。

其他变化:

  • sshd 中 OpenSSH 的便携版本已经删除了对使用 MD5 算法进行哈希密码的本机支持(允许与外部库(例如 libxcrypt 进行链接)返回)。
  • ssh、sshd、ssh-add 和 ssh-agent 实现一个子系统来限制添加到 ssh-agent 的密钥的转发和使用。 该子系统允许您设置规则来确定如何以及在何处可以在 ssh-agent 中使用密钥。 例如,要添加只能用于验证连接到主机 scylla.example.org 的任何用户、连接到主机 cetus.example.org 的用户 perseus 以及连接到主机 charybdis.example.org 的用户 medea 的密钥通过中间主机 scylla.example.org 进行重定向,您可以使用以下命令: $ ssh-add -h "[电子邮件保护]» \ -h «scylla.example.org» \ -h «scylla.example.org>[电子邮件保护]» \ ~/.ssh/id_ed25519
  • 在 ssh 和 sshd 中,混合算法已默认添加到 KexAlgorithms 列表中,该列表确定选择密钥交换方法的顺序。[电子邮件保护]“(ECDH/x25519 + NTRU Prime),在量子计算机上难以选择。 在 OpenSSH 8.9 中,在 ECDH 和 DH 方法之间添加了此协商方法,但计划在下一版本中默认启用。
  • ssh-keygen、ssh 和 ssh-agent 改进了对用于设备验证的 FIDO 令牌密钥(包括用于生物识别身份验证的密钥)的处理。
  • 向 ssh-keygen 添加了“ssh-keygen -Y match-principals”命令,以检查 allowednamelist 文件中的用户名。
  • ssh-add 和 ssh-agent 提供将受 PIN 码保护的 FIDO 密钥添加到 ssh-agent 的功能(PIN 请求在身份验证时显示)。
  • ssh-keygen 允许在签名生成期间选择哈希算法(sha512 或 sha256)。
  • 在 ssh 和 sshd 中,为了提高性能,网络数据被直接读取到传入数据包的缓冲区中,绕过堆栈上的中间缓冲。 将接收到的数据直接放入通道缓冲区是以类似的方式实现的。
  • 在 ssh 中,PubkeyAuthentication 指令扩展了支持的参数列表 (yes|no|unbound|host-bound),以提供选择要使用的协议扩展的功能。

在未来的版本中,我们计划将 scp 实用程序的默认设置更改为使用 SFTP,而不是旧的 SCP/RCP 协议。 SFTP 使用更可预测的名称处理方法,并且不对另一主机端的文件名中的 glob 模式使用 shell 处理,这会产生安全问题。 特别是,当使用 SCP 和 RCP 时,服务器决定将哪些文件和目录发送给客户端,客户端仅检查返回的对象名称的正确性,这在客户端没有进行适当检查的情况下,允许服务器传输与请求的文件名不同的其他文件名。 SFTP协议不存在这些问题,但不支持“~/”等特殊路径的扩展。 为了解决此差异,OpenSSH 的先前版本为 SFTP 服务器实现中的 ~/ 和 ~user/ 路径引入了新的 SFTP 协议扩展。

来源: opennet.ru

添加评论