| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
OpenOffice DOC document Heap Overflow
OpenOffice DOC document Heap Overflow
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-25 10:55:45

通告:[AD_LAB-05001] OpenOffice DOC文档处理堆溢出漏洞
Class: 设计错误
DATE:30/3/2005
CVE编号:CAN-2005-0941
受威胁的系统:
    <=OpenOffice OpenOffice 1.1.4
    -OpenOffice OpenOffice 2.0dev
未受威胁的系统:
        目前未知
厂商:
       www.openoffice.org

1.漏洞描述:
      OpenOffice是一款办公处理软件,支持多种操作系统。在解析.DOC文件的文件头时存在着一个堆溢出。

2.技术描述
    问题出在StgCompObjStream::Load()函数,在读取DOC文档格式信息的时候,内存是根据用户提供的长度来分配的。
用户提供的是一个32位整数,分配内存的时候,使用的是16位的短整数,但是在读取信息的时候,是根据32位整数长度来读的,
如果用户提供一个很大的32位整数,就可能导致堆溢出,从而在释放内存的时候发生写指针操作。具体问题看下面的代码注解。
BOOL StgCompObjStream::Load()
{
    memset( &aClsId, 0, sizeof( ClsId ) );
    nCbFormat = 0;
    aUserName.Erase();
    if( GetError() != SVSTREAM_OK )
        return FALSE;
    Seek( 8L );        // skip the first part
    INT32 nMarker = 0;
    *this >> nMarker;
    if( nMarker == -1L )
    {
        *this >> aClsId;
        INT32 nLen1 = 0;
        *this >> nLen1; //我们可以控制的32位整数
        sal_Char* p = new sal_Char[ (USHORT) nLen1 ]; //取16位短整数分配内存
        if( Read( p, nLen1 ) == (ULONG) nLen1 ) //按32整数来读取,如果读取失败,会释放内存,这时可能发生堆溢出
        {
            aUserName = String( p, gsl_getSystemTextEncoding() );
            ....
            nCbFormat = ReadClipboardFormat( *this );
        }
        else
            SetError( SVSTREAM_GENERALERROR );
        delete [] p; //释放内存,堆溢出发生造成写指针操作
    }
    return BOOL( GetError() == SVSTREAM_OK );
}

如果我们提供一个0x10000018的整数给nLen1,那么只分配0x18大小的内存, Read( p, nLen1 )读取的时候,还是按0x10000018来读取,
这个时候,读操作会失败,但是读取的内容已经大于分配的内存,从而覆盖到了下一个内存块。因为读失败了,会直接跳到delete [] p;,
由于下一个内存块被覆盖到了,free当前内存块的时候,可能导致写地址操作。
我们已经成功触发此漏洞.
    这个漏洞可能还影响StartOffice。


3.相关测试程序可从如下地址获得:
https://www.0x557.cn/~air/vul3.doc


4.感谢
     AD-LAB实验室发现并公布了此漏洞,具体的技术分析由Airsupply完成
     感谢启明星辰技术信息有限公司积极防御实验室的伙伴和丰收项目小组。


5.声明
- -----------

The information in this bulletin is provided "AS IS" without warranty of any
kind. In no event shall we be liable for any damages whatsoever
including direct,
indirect, incidental, consequential, loss of business profits or special
damages.

Copyright 1996-2005 VENUSTECH. All Rights Reserved. Terms of use.

VENUSTECH Security Lab
VENUSTECH INFORMATION TECHNOLOGY CO.,LTD(http://www.venustech.com.cn)

Security
Trusted {Solution} Provider
Service

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    Clam Anti-Virus PE文件
    Novell Client nwspool.
    Xerox WorkCentre及Work
    ZENworks Asset Managem
    Linux Kernel get_fdb_e
    Citrix Presentation Se
    Novell Client SRVLOC.S
    Sophos Anti-Virus多个拒
    Sophos Anti-Virus SIT文
    Sophos Anti-Virus CPIO

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览