OpenSSL SSL_get_shared_ciphers()函数单字节溢出漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

BUGTRAQ ID: 25831 OpenSSL是一种开放源码的SSL实现,用来实现网络通信的高强度加密,现在被广泛地用于各种网络应用程序中。 OpenSSL的SSL_get_shared_ciphers()函数中存在单字节溢出漏洞,远程攻击者可能利用此漏洞控制服务器。 ssl/ssl_lib.c文件中漏洞代码如下: p=buf; sk=s-&gt;session-&gt;ciphers; for (i=0; i&lt;sk_SSL_CIPHER_num(sk); i++) { /* Decrement for either the ':' or a '\0' */ len--; [4] c=sk_SSL_CIPHER_value(sk,i); for (cp=c-&gt;name; *cp; ) { if (len-- &lt;= 0) [1] { *p='\0'; [5] return(buf); } else *(p++)= *(cp++); [2] } *(p++)=':'; [3] } p[-1]='\0'; return(buf); 如果要触发单字节溢出,只需要用密码字符串填充缓冲区,使得len == 1且cp指向当前密码字符串的最后一个字符,然后内部for()循环的最后一轮会在[1]将len递减到0,将当前密码字符串的最后一个字节写入到缓冲区([2]),增加p指向到缓冲区的最后空闲字节。之后用“:”分隔符填充最后的空闲字节,增加p指向缓冲区后一个字节。现在如果仍有密码的话,就会再次陷入外部循环,在[4]将len减少到-1然后在[1]再次执行检查。这一次检查为真,终止的\0字节在返回前写入到缓冲区后一个字节([5])。 OpenSSL Project OpenSSL 0.9.7m - 0.9.8e 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href="http://www.openssl.org/" target="_blank">http://www.openssl.org/</a>

0%
暂无可用Exp或PoC
当前有0条受影响产品信息