最近的 UseRoaming SSH 漏洞的可利用性如何?

信息安全 SSH 已知漏洞 打开sh
2021-08-26 08:11:14

我最近听说OpenSSH 客户端CVE-2016-0777 和 CVE-2016-0778 )中有一个严重的错误,如果我理解正确可能会导致远程代码执行。一个积极的中间人利用它有多难?

2个回答

就像史蒂夫塞瑟所说,这不是中间人攻击


有多危险?

  1. 在某些情况下,缓冲区溢出攻击是可能的。
  2. 您的 SSH 私钥可能会泄露给攻击者。

根据页面:

SSH 漫游使客户端能够在 SSH 连接意外中断的情况下稍后恢复它,前提是服务器也支持它。OpenSSH 服务器不支持漫游,但 OpenSSH 客户端支持它(即使它没有记录)并且默认启用。

对于初学者,OpenSSH默认启用此功能。更糟糕的是,它在ssh_config(5)手册页中没有记录。

请注意,这是两个漏洞:

  1. CVE-2016-0777
    • 流氓 SSH 服务器可以利用信息泄漏(内存泄露)来诱骗客户端从客户端内存中泄露敏感数据,例如私钥。
  2. CVE-2016-0778
    • 缓冲区溢出(导致文件描述符泄漏),也可以被流氓 SSH 服务器利用,但由于代码中的另一个错误可能无法利用,并且只有在某些条件下(不是默认配置),当使用 ProxyCommand 时, ForwardAgent 或 ForwardX11。

关于缓冲区溢出攻击,请注意它仅在某些条件下易受攻击,即当您启用了 ProxyCommand、ForwardAgent 或 ForwardX11 时。这些是非默认选项,因此虽然在大多数情况下它可能不会被利用,但它可能的。

在缓冲区溢出攻击成功的情况下,假设 SSH 客户端可访问的所有内容都被破坏。


更多信息

我会阅读Qualys 分析本文将比我们大多数人(包括我自己)更详细地解释这种攻击。

可能导致远程代码执行

没有远程代码执行。中间没有人,因为它被马克清理了。Qualys 分析中已将所有内容解释为已链接。

但简而言之:

易受攻击的是客户端中漫游功能的实现如果连接被挂起,客户端存储未发送字节的缓冲区。易受攻击、制作不当的服务器可能会迫使客户端重新发送超过缓冲区中的内容,因此如果它实际上存储在周围的某些地址上(在正常情况下应该)可能会获取您的私钥

分析是针对特定版本(openssh-6.4)进行的,今天几乎没有使用,大多数用例并不直接适用于当前使用的版本。还有一些问题是特定于 BSD 系统的,其中内存归零没有按预期工作。我没有设法获得任何现有系统上的任何密钥。

最大的问题是甚至有这样的东西,未记录的功能,以这种形式很容易受到攻击。而且它已经存在了很长时间(2004 年推出)并且默认情况下它是打开的。这可能在过去被滥用,但不是在用户不知情的情况下(如果会话是交互式的)。如果你会看到

[connection suspended, press return to resume]

我想你会有点怀疑。