【安全漏洞】远程进入系统本地越权访问拒绝服务攻击嵌入恶意代码WEB数据接口其他类型

您现在的位置:首页 > 网络安全 > 安全漏洞 > 本地越权访问 OpenOffice rtl_allocateMemory()函数远程代码执行漏洞

OpenOffice rtl_allocateMemory()函数远程代码执行漏洞

来源: 作者: 日期:2008-08-27

【聚杰网本地越权访问】OpenOffice rtl_allocateMemory()函数远程代码执行漏洞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

评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: