Lucene search

K
seebugRootSSV:3934
HistoryAug 28, 2008 - 12:00 a.m.

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

2008-08-2800:00:00
Root
www.seebug.org
23

EPSS

0.029

Percentile

90.9%

BUGTRAQ ID: 30866
CVE ID: CVE-2008-3282
CNCVE ID:CNCVE-20083282

OpenOffice是一款开源的办公文字处理应用程序。
OpenOffice内存分配中存在一个数字截断错误,远程攻击者可以利用漏洞以应用程序权限执行任意指令。
sal/rtl/source/alloc_global.c中的rtl_allocateMemory()函数接受sal_Size n参数,在64位平台如x86_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,计算值不能匹配Index(这发生在当rtl_allocateMemory()调用超大参数时,如某些缺陷导致OpenOffice尝试使用负的大小分配内存块)。存储在index中的值被截断可造成index变负值。
在index使用之前,会对其是否超过固定上限进行检查,但是没有对其值是否>= 0进行检查:
if (index < RTL_MEMORY_CACHED_LIMIT >> RTL_MEMALIGN_SHIFT)
用于g_alloc_table[index]的负索引会导致OpenOffice访问g_alloc_table[]数组之外的内存,这可导致应用程序崩溃,如果直至指向攻击者控制的内存,可导致以应用程序权限执行任意指令。

RedHat Enterprise Linux Optional Productivity Application 5 server
RedHat Enterprise Linux Desktop Workstation 5 client
RedHat Enterprise Linux Desktop 5 client
OpenOffice OpenOffice 2.4.1
OpenOffice OpenOffice 2.4
可参考如下安全公告获得补丁信息:
<a href=“http://www.openoffice.org/issues/show_bug.cgi?id=92217” target=“_blank”>http://www.openoffice.org/issues/show_bug.cgi?id=92217</a>