所以我从我的团队成员那里得到了相互矛盾的信息。前提是,如果攻击者可以不断地从我的服务器请求 64 kb 的内存块,他们就可以获得我服务器的全部内存占用,从而将我使用的私钥从内存中取出。
那么,我用来登录的 SSH 私钥是否存储在内存中?我需要担心我的 SSH 密钥吗?
所以我从我的团队成员那里得到了相互矛盾的信息。前提是,如果攻击者可以不断地从我的服务器请求 64 kb 的内存块,他们就可以获得我服务器的全部内存占用,从而将我使用的私钥从内存中取出。
那么,我用来登录的 SSH 私钥是否存储在内存中?我需要担心我的 SSH 密钥吗?
不,OpenSSH 使用 OpenSSL 库的一个非常有限的子集,并且该子集不包括 Heartbleed 漏洞中涉及的代码(或任何其他 SSL/TLS 代码,就此而言)。
此外,Heartbleed 漏洞不允许应用程序读取其地址空间之外的内存,因此,例如,易受攻击的 Web 服务器无法访问并从 SSH 服务器获取密钥。
它不能重复得足够多:-)
不但是!如果您在主机上运行任何其他服务,例如OpenVPN,它使用 OpenSSL,它很容易受到攻击并且可以被利用。
当您使用 SSH 登录时,您的客户端拥有私钥,而服务器拥有公钥。因此,服务器上的任何漏洞都不会泄露您的私钥,因为服务器没有它。
服务器无法使用 Heartbleed 从您的客户端获取私钥,因为这是 SSH 实现,并且只有版本 1.0.1 到 1.0.1f 上的 OpenSSL SSL/TLS 连接易受攻击。任何类型的其他实现都没有这个问题,包括所有 SSH 实现。
现在,如果服务器在内存中的某个地方有自己的私有 SSH 密钥,则需要进行更深入的调查......但修复漏洞然后重新生成服务器的 SSH 密钥对会更便宜,因为没有证书颁发机构可以付费签署 SSH 密钥!
通常不会,但这取决于您的偏执程度以及易受攻击系统的具体情况。
就像其他人所说的那样,openssh 密钥不能被令人心碎的 openssl 服务器直接泄露。但是,如果信息泄露(比如 https 用户登录),那么攻击者可能会使用该密码来访问系统。从那里,如果您的用户 ssh 私钥不在本地文件系统上,则它是安全的。但是,如果攻击者使用该信息来获得 root 访问权限,就会发生更多麻烦(当然)。例如,他们现在可以解密您的 ssh 流量,并且如果您在系统上启用了 ssh 代理,则攻击者现在可以像您一样 ssh 到其他系统,但如果原始私钥不在该系统上,则无法恢复原始私钥。