安全研究
安全漏洞
安全漏洞
所有系统
AIX
BSD(eg,OpenBSD)
Digital Unix
HP-UX
IRIX
Linux
FreeBSD
SCO UNIX
SunOS
Solaris
Windows
所有类型
远程进入系统
本地越权访问
拒绝服务攻击
嵌入恶意代码
Web数据接口
其他类型
OpenOffice rtl_allocateMemory()函数远程代码执行漏洞
发布日期:
2008-08-27
更新日期:
2008-08-28
受影响系统:
OpenOffice OpenOffice 2.4.1
OpenOffice OpenOffice 2.4
描述:
BUGTRAQ ID:
30866
CVE(CAN) ID:
CVE-2008-3282
OpenOffice是个整合性的软件,包含了许多文字处理、表格、公式等办公工具。
OpenOffice.org的内存分配程序在64平台上存在计算错误。sal/rtl/source/alloc_global.c文件中的rtl_allocateMemory()函数接受sal_Size n参数。在x86_64等64位平台上,sal_Size被定义为无符长整形。这个请求的内存块大小之后内存对齐为size (type sal_Size),并使用size计算g_alloc_table[]数组的int索引:
int index = (size - 1) >> RTL_MEMALIGN_SHIFT;
但是,由于在64位系统上sizeof(int) == 4且sizeof(sal_Size) == 8,计算出的值可能不适合索引(当使用很大的参数调用rtl_allocateMemory()时会出现这种情况),存储在数组中的值会被环绕/截尾,导致数组为负数。
在使用数组之前,会检查其值没有超过固定的上限,但没有检查是否>= 0:
if (index < RTL_MEMORY_CACHED_LIMIT >> RTL_MEMALIGN_SHIFT)
在g_alloc_table[index]中使用负值会导致OpenOffice访问g_alloc_table[]数组之外的内存,精心创建的文档会导致OpenOffice崩溃或执行任意代码。
<*来源:Tomas Hoger (
thoger@redhat.com
)
链接:
https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=458056
http://scary.beasts.org/security/CESA-2008-006.html
https://www.redhat.com/support/errata/RHSA-2008-0835.html
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://scary.beasts.org/misc/pcx.odt
建议:
厂商补丁:
RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2008:0835-01)以及相应补丁:
RHSA-2008:0835-01:Important: openoffice.org security update
链接:
https://www.redhat.com/support/errata/RHSA-2008-0835.html
OpenOffice
----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.openoffice.org/issues/show_bug.cgi?id=92217
浏览次数:
2531
严重程度:
0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障
关于我们
公司介绍
公司荣誉
公司新闻
联系我们
公司总部
分支机构
海外机构
快速链接
绿盟云
绿盟威胁情报中心NTI
技术博客