今日精选 ·绝对解密 XP系统中隐藏的10个秘密 ·Windows系统文件详解【大全】 ·配置Windows Server 2008高级防火墙 ·带你现场体验专业服务器机房 ·屏蔽五项功能 让Windows XP极速狂飙 ·木马免杀技术大盘点 ·如何让无线路由信号更强更广 ·各大路由器默认密码(完美汇总经典版) ·如何构建安全的入侵检测系统 ·电脑故障维修判断指导大全(联想内部文件) >>>>
编程开发  Java | .Net | C/C++ | Delphi | VC/VB | XML | ASP | PHP
数据库  Oracle | Mysql | DB2 | Sql server
应用方案 无线网络方案 | 有线网络方案 

网管天地  网吧管理 | 路由器 | 交换机 | 服务器
网络安全  黑客技术 | 病毒漏洞 | 网站安全 | 服务器安全 | 入侵防御 | 防火墙
操作系统 Linux/Unix | Windows 
您现在的位置: 企业网络安全 >> 文章·资讯 >> 最新资讯 >> 病毒漏洞 >> 文章正文
Firefly媒体服务器Content-Length字段堆溢出漏洞
作者:佚名 文章来源:本站原创 点击数: 更新时间:2008-4-25 11:24:40
受影响系统:
Firefly Media Server < 0.2.4.2

不受影响系统:
Firefly Media Server 0.2.4.2

描述:
Firefly是Roku SoundBridge和iTunes所使用的开源媒体服务器。

Firefly的src/webserver.c文件的ws_getpostvars()函数中存在堆溢出漏洞,如果远程攻击者向服务区发送了带有负数Content-Length值的POST请求的话就可以触发这个溢出,导致拒绝服务或执行任意指令。

以下是src/webserver.c文件中的漏洞代码:

   707  int ws_getpostvars(WS_CONNINFO *pwsc) {
   708      char *content_length;
   709      unsigned char *buffer;
   710      uint32_t length;
   711      uint32_t ms;
            ....
   715      content_length = ws_getarg(&pwsc->request_headers,"Content-Length");
            ....
   722      length=atoi(content_length);
   723      ws_dprintf(L_WS_DBG,"Thread %d: Post var length: %d\n",
   724              pwsc->threadno,length);
   725
   726      buffer=(unsigned char*)malloc(length+1);
            ....
   739      if(!io_read_timeout(pwsc->hclient, buffer, &length, &ms)) {
            ....
   757
   758      if(!ws_getgetvars(pwsc,(char*)buffer)) {
   759          /* assume error was set already */
   760          free(buffer);
   761          ws_dprintf(L_WS_LOG,"Could not parse get vars\n");
   762          return FALSE;
   763      }
   764
   765      free(buffer);

这里的相对变量为uint32_t类型的length,在715行content_length指向了用户在HTTP POST请求中所提供的Content-Length值,这个值在722行使用atoi转换为整数。由于长度类型为uint32_t,值-1会将length设置为UINT_MAX,然后使用这个长度值分配堆上空间,在malloc调用添加+ 1就会触发整数溢出。如果Content-Length: -1的话,传送给malloc的(UINT_MAX + 1)缓冲区大小为0,导致malloc分配可能的最小块,但不会失败。

在739行会对缓冲区执行定时的读取,src/io.c的io_read_timeout()函数结束对io_read的调用,将length字节数读到缓冲区,向length写回读字节的计数,因此可能出现堆溢出,导致在765行释放已破坏的缓冲区时服务器崩溃。

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

http://sourceforge.net/project/showfiles.php?group_id=98211&package_id=105189&release_id=593465

免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
文章录入:security    责任编辑:security 
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |