Lucene search

K
seebugRootSSV:20589
HistoryMay 26, 2011 - 12:00 a.m.

Erlang/OTP SSH库随机数生成漏洞

2011-05-2600:00:00
Root
www.seebug.org
62

0.003 Low

EPSS

Percentile

63.0%

Bugtraq ID: 47980
CVE ID:CVE-2011-0766

Erlang是一种通用的面向并发的编程语言,OTP是包装在Erlang中的一组库程序。
Erlang/OTP ssh库依靠强大的加密随机数实现多个加密操作,但是库使用的RNG加密不够强壮,而且使用了可预测种子数据而进一步削弱了加密强度。RNG(Wichman-Hill)没有与熵源进行混合处理。
库中所有ssh连接的种子使用当前时间(大约微秒分辨率),通过观察从这个库建立的连接时间,可猜测三个RNG种子中前两个组成部分,第三个可通过尝试每个可能的值(1…1000000)暴力破解恢复。
利用库以明文kexinit消息发送的16字节随机会话cookie可更方便的猜测准确种子,此cookie是RNG序列中的17-32字节。
如果能恢复会话RNG种子,攻击者可以简单的执行SSH库一样的DH密钥更换操作,并恢复会话密钥。此外,如果SSH库用于服务端连接并使用了DSA主机密钥,可从kex_dh消息中恢复私钥。私钥签名值k可从RNG种子中获取(序列中170-190字节),因此利用kex_dh_reply消息中的公告DSA密钥数据,通过转换签名操作可恢复私钥部分。

erlang.org Erlang/OTP R14B02
erlang.org Erlang/OTP R14B01
erlang.org Erlang/OTP R14B
erlang.org Erlang/OTP R14A
厂商解决方案
Erlang/OTP R14B03已经修复此漏洞,建议用户下载使用:
http://www.erlang.org/download.html
用户也可参考供应商提供的如下安全补丁:
https://github.com/erlang/otp/commit/f228601de45c5b53241b103af6616453c50885a5