安全研究

安全漏洞
CDF库src/lib/cdfread64.c文件栈溢出漏洞

发布日期:2008-05-04
更新日期:2008-05-06

受影响系统:
NASA CDF 3.2
不受影响系统:
NASA CDF 3.2.1
描述:
BUGTRAQ  ID: 29045
CVE(CAN) ID: CVE-2008-2080

通用数据格式(CDF)是由NASA戈达德航天飞行中心开发的用于存储和操控标量和多维数据的数据格式。

CDF库在打开无效的CDF输入文件时存在栈溢出漏洞,允许攻击者在使用该库的应用程序环境中执行任意指令或导致整个应用程序崩溃。

漏洞存在于src/lib/cdfread64.c文件的以下代码中。Read32s_64函数将数据从文件读取到缓冲区,temp缓冲区大小为MAX_READ32s,但没有检查count参数,因此大于MAX_READ32s的参数可能会触发栈溢出。

/-----------

57  STATICforIDL Logical Read32s_64 (fp, buffer, count)
58  vFILE *fp;
59  Int32 *buffer;
60  int count;
61  {
62  #if defined(NETWORKbyteORDERcpu)
63    if (count < 1) return TRUE;
64    if (!READv64(buffer,(size_t)4,(size_t)count,fp)) return FALSE;
65  #else
66  #define MAX_READ32s CDF_MAX_DIMS        /* This must be the maximum of
67                                             CDF_MAX_DIMS and
MAX_VXR_ENTRIES
68                                           (and for any other uses of
69                                           `Read32s'). */
70    int i; Int32 temp[MAX_READ32s];
71    if (count < 1) return TRUE;
72    if (!READv64(temp,(size_t)4,(size_t)count,fp)) return FALSE;

- -----------/

ReadGDR64还在src/lib/cdfread64.c调用了Read32s_64函数:

/-----------

256     #if defined(STDARG)
257     STATICforIDL CDFstatus ReadGDR64 (vFILE *fp, OFF_T offset, ...)
258     #else
259     STATICforIDL CDFstatus ReadGDR64 (va_alist)
260     va_dcl
261     #endif
262     {

.
.
.

301           if (!Read32_64(fp,&(fp->GDR64->rNumDims))) return CRE;
302           if (!Read32_64(fp,&(fp->GDR64->NzVars))) return CRE;
303           if (!Read64_64(fp,&(fp->GDR64->UIRhead))) return CRE;
304           if (!Read32_64(fp,&(fp->GDR64->rfuC))) return CRE;
305           if (!Read32_64(fp,&(fp->GDR64->rfuD))) return CRE;
306           if (!Read32_64(fp,&(fp->GDR64->rfuE))) return CRE;
307           if (!Read32s_64(fp,fp->GDR64->rDimSizes,
308                          (int)fp->GDR64->rNumDims)) return CRE;

- -----------/

在307行使用fp->GDR64->rNumDims变量作为count参数调用了有漏洞的函数。由于这个变量是在301行从文件中加载的,因此是可控的。

<*来源:Alfredo Ortega
  
  链接:http://www.coresecurity.com/?action=item&id=2260
        http://cdf.gsfc.nasa.gov/CDF32_buffer_overflow.html
        http://secunia.com/advisories/30053/
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.coresecurity.com/?action=item&id=2260

建议:
厂商补丁:

NASA
----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://cdf.gsfc.nasa.gov/index.html

浏览次数:2676
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障