OpenSSL多个拒绝服务漏洞
发布日期:2008-05-28
更新日期:2008-05-29
受影响系统:OpenSSL Project OpenSSL 0.9.8g
OpenSSL Project OpenSSL 0.9.8f
不受影响系统:OpenSSL Project OpenSSL 0.9.8h
描述:
BUGTRAQ ID:
29405
CVE(CAN) ID:
CVE-2008-0891,
CVE-2008-1672
OpenSSL是一种开放源码的SSL实现,用来实现网络通信的高强度加密,现在被广泛地用于各种网络应用程序中。
OpenSSL在处理畸形的连接时存在漏洞,远程攻击者可能利用此漏洞导致服务器程序崩溃。
当用以下命令行运行OpenSSL时:
openssl s_server -key path_to_key \
-cert path_to_certificate \
-www `openssl ciphers 'ALL:COMPLEMENTOFALL'`
如果接收到的Client Hello报文中服务器名称扩展将server_name设置为0x00且名称长度为1,则程序在325行的ssl/t1_lib.c文件检测到错误的主机名并结束握手,之后试图释放已经释放的指针,导致OpenSSL出现分段错误崩溃。openssl程序默认不允许处理TLS扩展,必须在编译时明确地启用。
在用以下命令行运行openssl时:
openssl s_client -connect localhost:4433 -cipher \
`openssl ciphers 'ALL:COMPLEMENTOFALL'` -debug -msg
openssl向服务器发送Client Hello消息,服务器用Server Hello消息响应(选择了TLS_DH_ANON_WITH_RC4_128_MD5密码组),然后是Server Hello Done消息(忽略Server Key Exchange消息)。ssl3_get_key_exchange()允许忽略Server Key Exchange消息,但s->session->sess_cert为空且ssl3_get_server_done()没有执行任何检查,客户端状态机器继续执行到ssl3_send_client_key_exchange()且没有检查s->session->sess_cert的有效性便试图引用(s3_clntl.c:1970)。如果客户端使用特殊的密码组连接到了恶意的服务器,服务器就会导致客户端崩溃。
<*来源:Codenomicon
链接:
http://secunia.com/advisories/30405/
http://www.openssl.org/news/secadv_20080528.txt
http://cert.fi/haavoittuvuudet/2008/advisory-openssl.html
http://security.gentoo.org/glsa/glsa-200806-08.xml
*>
建议:
厂商补丁:
OpenSSL Project
---------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.openssl.org/source/openssl-0.9.8h.tar.gz
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200806-08)以及相应补丁:
GLSA-200806-08:OpenSSL: Denial of Service
链接:
http://security.gentoo.org/glsa/glsa-200806-08.xml
所有OpenSSL用户都应升级到最新版本:
# emerge --sync
# emerge --ask --oneshot --verbose ">=dev-libs/openssl-0.9.8g-r2"
浏览次数:2845
严重程度:0(网友投票)