技术解析

OpenSSH 出严重 Bug 了
0
2021-07-05 07:02:38
idczone
做噩梦惊醒,本来说看看 HN 定定神,然后就看到了置顶的那个 OpenSSH Bug
看了一圈讨论没搞清楚是个啥问题,但可以确定的是这货比较严重

给自家几台服务器简单部署了 Workaround 之后倒床去……

OpenSSH: client bug CVE-2016-0777 : http://undeadly.org/cgi?action=article&sid=20160114142733
HN 讨论: https://news.ycombinator.com/item?id=10901588
https://kn007.net/topics/wechat-official-account/
PS. Fix OpenSSH Security Bug CVE-2016-0777(Only Redhat/CentOS 7 Affected).
快 0 点的事情。。。

貌似要 openssh 大于 5.4 版本才有。
Since version 5.4, the OpenSSH client supports an undocumented feature called roaming

把 service sshd restart 去掉吧,免得误导人。

这个 Bug 是对客户端 (ssh) 有影响,不是服务端 (sshd)。所以一般只需要检查本地和跳板机。
受影响版本
5.4 至 7.1
验证
ssh -v [email&2>&1 > /dev/null | grep -i 'roaming'
如输出有 debug1: Roaming not allowed by server 则受此影响,否则无需操作
修复
echo -e 'Host *\nUseRoaming no' >> /etc/ssh/ssh_config
OS X 10.9 的路径是 /etc/ssh_config

改了设置要重启啊,改成 reload

所以收到影响的是本地的 SSH 而不是远程的 SSHD 是么?

这个是客户端 ssh 的 bug 为什么要重启 sshd ?

到底会有什么后果?
貌似会被恶意的主机利用获取客户端的信息哈?

我说不要误导人,其实我的意思是你被误导了。

service sshd reload 是不需要的,你说改了配置要重启,其实是我们改的只是 ssh_config 而不是 sshd_config 所以没有必要




原来如此,这是我的一个习惯。
而且以为改了配置,要重启。
感谢指正

简单地说 OpenSSH 客户端 (ssh) 支持 Roaming 这个未在文档上注明的试验性功能,它是在与服务器连接异常中断时恢复连接用的。
这个功能出了两个 BUG ,恶意主机(被入侵的主机)可以通过在服务端中断连接的方式诱导客户端从内存里泄露机密信息(私钥)给它。
所以要在客户端里把这个功能临时禁用掉,等待新版本发布后修正。
OpenSSH 服务端 (sshd) 不能支持客户端的这个功能 (-_-) ,所以验证的时候会提示“ Roaming not allowed by server ”。
参考
http://security.stackexchange.com/questions/110639/how-exploitable-is-the-recent-useroaming-ssh-problem
http://www.undeadly.org/cgi?action=article&sid=20160114142733

这是给本地客户端用的吧,而不是服务器

Roaming not allowed by server ,如果服务器端不支持这个特性才受影响?确定没写反?

这个漏洞不能获取 ssh-agent 的私钥,不能用于非 openssh 客户端(比如 putty ),,要先攻陷一台服务器或者让用户登录恶意服务器(中间人没用),还只能获取加密过的私钥,所以其实没那么严重。
这个 workaround 是用在客户端上的,也就是说是用来 patch 你自己电脑而不是服务器用的
我从最近全面转向 Yubikey ,自己的服务器用 OTP 登录,别人的服务器用智能卡公钥登录。无论哪种情况,都免疫这种攻击,因为内存里从来就没有私钥。

windows 上都用 putty
linux 上没几个人高兴一直输密码,大多是用 agent 的
如果你私钥不加密码那时你自己活该

刚 debian 的例行每日更新:
The following packages will be upgraded:
openssh-client openssh-server
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,364 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://security.debian.org/ wheezy/updates/main openssh-server amd64 1:6.0p1-4+deb7u3 [340 kB]
Get:2 http://security.debian.org/ wheezy/updates/main openssh-client amd64 1:6.0p1-4+deb7u3 [1,024 kB]

Mac OS X 下的修补方案是: echo 'Host *\nUseRoaming no' >> /etc/ssh_config
注意没有“-e ”!
注意没有“-e ”!
注意没有“-e ”!
重要的话讲三遍~~~

没写反,我们要禁用的是客户端的 Roaming 功能。
“ Roaming not allowed by server ” 是客户端提示信息,说服务端不支持这个特性。
如果禁用了这个功能,客户端就不会跟服务端协商说要用 Roaming ,自然就没有这个提示信息了。

openssh 抄袭 mosh 还抄出了 bug 。

为啥我在 man ssh_config 中没有找到 UseRoaming 这个选项

putty 也可以不输入密码就登录

但是 putty 没有这个 roaming 功能,所以免疫。这个是 openssh-client 的问题
就是因为没有,才有大问题。这是一个还没有完全实现的功能。很多人甚至不知道,却已经放入客户端发布(服务端不包相关代码)。还特么留了个溢出 bug

线上的 Xen 主机还有分部在各个机房的实体机很多都需要通过先登录到特定的服务器,然后在继续 ssh 登录到其他机器的方法来操作的,是怕这个地方出问题了

公网的 sshserver 做个 dns 劫持就能诱导拿到了。

Bitvise Tunnelier 受影响吗 如果是客户端问题的话

用 dropbear 的表示灰常蛋定~

我上面说了,不能,除非服务器沦陷
这个漏洞要断开已经建立的连接才能触发客户端 roaming
而服务器签名不对的话,是无法建立 ssh 连接的

这个 Mac OS X10.10 有影响吗?按照上面说的方法检测没发现问题,但是 openssh 版本在受影响范围

看成 openssl 吓了一跳

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服