找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1251|回复: 0

开源软件 OpenSSL 中存在单字节溢出漏洞

[复制链接]

286

主题

75

回帖

491

牛毛

一级牛人

車菿山偂^︶ㄣ咇侑潞﹏﹖.

积分
491
发表于 2007-12-30 10:49:32 | 显示全部楼层 |阅读模式 来自 内蒙古兴安盟乌兰浩特市
受影响系统:

OpenSSL Project OpenSSL 0.9.7m - 0.9.8e

描述:

--------------------------------------------------------------------------------

BUGTRAQ ID: 25***31

CVE(CAN) ID: CVE-2007-5135

OpenSSL是一种开放源码的SSL实现,用来实现网络通信的高强度加密,现在被广泛地用于各种网络应用程序中。

OpenSSL的SSL_get_shared_ciphers()函数中存在单字节溢出漏洞,远程攻击者可能利用此漏洞控制服务器。

ssl/ssl_lib.c文件中漏洞代码如下:



p=buf;

  sk=s->session->ciphers;

  for (i=0; i<sk_SSL_CIPHER_num(sk); i++)

      {

      /* Decrement for either the &#39;:&#39; or a &#39;\\0&#39; */

      len--;            [4]

      c=sk_SSL_CIPHER_value(sk,i);

      for (cp=c->name; *cp; )

          {

          if (len-- <= 0)        [1]

              {

              *p=&#39;\\0&#39;;      [5]

              return(buf);

              }

          else

              *(p++)= *(cp++);    [2]

          }

      *(p++)=&#39;:&#39;;          [3]

      }

  p[-1]=&#39;\\0&#39;;

  return(buf);



如果要触发单字节溢出,只需要用密码字符串填充缓冲区,使得len == 1且cp指向当前密码字符串的最后一个字符,然后内部for()循环的最后一轮会在[1]将len递减到0,将当前密码字符串的最后一个字节写入到缓冲区([2]),增加p指向到缓冲区的最后空闲字节。之后用“:”分隔符填充最后的空闲字节,增加p指向缓冲区后一个字节。现在如果仍有密码的话,就会再次陷入外部循环,在[4]将len减少到-1然后在[1]再次执行检查。这一次检查为真,终止的\\0字节在返回前写入到缓冲区后一个字节([5])。

<*来源:Moritz Jodeit (moritz@jodeit.org

链接:http://marc.info/?l=bugtraq&m=119091888624735&w=2

http://secunia.com/advisories/27394/

http://sunsolve.sun.com/pub-cgi/ ... e=0&nav=sec.sba

*>

建议:

--------------------------------------------------------------------------------

厂商补丁:

OpenSSL Project

---------------

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.openssl.org/
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5用户社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-11 02:32 , Processed in 0.114321 second(s), 23 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表