众所周知,OpenSSL 版本 1.0.1 到 1.0.1f(含)中存在 heartbleed 漏洞。那么为什么使用存在漏洞的 OpenSSL 1.0.1ssh
进行sshd
编译(12.04 -> OpenSSL 1.0.1,14.04 -> OpenSSL 1.0.1f)?当然libssl.so
是最新的,但如果我运行
ldd `which ssh`
# or
ldd `which sshd`
没有任何链接指向未损坏的 OpenSSL 版本。但如果我运行
sshd -V
# Under Ubuntu 12.04 it says:
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
# Under Ubuntu 14.04 it says:
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2, OpenSSL 1.0.1f 6 Jan 2014
他们明确表示,它们是用损坏的版本编译的。https://launchpad.net/ubuntu/+source/openssh在心跳错误发布期间没有提及任何更新。
那么我如何确定sshd
没有使用受影响的 OpenSSL 版本。如果没有使用,为什么他们明确表示他们使用的是受影响的版本?
答案1
Heartbleed 仅影响 SSL/TLS 连接,而不是 OpenSSL 库中的每个加密函数,并且 sshd 根本不使用 SSL/TLS,因此即使使用受影响的 OpenSSL 版本进行编译,也不会受到 Heartbleed 的影响。请参阅这个问题和答案。