首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
[AD_LAB-05001] OpenOffice DOC document Heap Overflow
来源:www.0x557.cn 作者:icbm 发布时间:2005-04-13  

[AD_LAB-05001] OpenOffice DOC document Heap Overflow

通告:[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



 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·发现Linux压缩格式漏洞 达第二最
·PHP COM组件调用绕过安全模式执
·最近发现的一个Distributed File
·Windows Firewall存在缺陷 黑客
·微软最新安全漏洞大揭秘
·DriverStudio Remote Control远
·Mozilla Firefox任意命令执行漏
·小榕的WIS漏洞补充篇及利用篇
·最新公布的动易4.03上传漏洞
·MolyX 漏洞分析
·CMailServer邮件系统附件下载模
·Linux 2.6.* 内核Capability LSM
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved