Lucene search

K
seebugRootSSV:3348
HistoryMay 29, 2008 - 12:00 a.m.

OpenSSL多个拒绝服务漏洞

2008-05-2900:00:00
Root
www.seebug.org
21

0.132 Low

EPSS

Percentile

95.0%

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)。如果客户端使用特殊的密码组连接到了恶意的服务器,服务器就会导致客户端崩溃。

OpenSSL Project OpenSSL 0.9.8g
OpenSSL Project OpenSSL 0.9.8f
OpenSSL Project

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

<a href=“http://www.openssl.org/source/openssl-0.9.8h.tar.gz” target=“_blank”>http://www.openssl.org/source/openssl-0.9.8h.tar.gz</a>