安全研究

安全漏洞
GNU glibc ld.so ELF头解析整数溢出漏洞

发布日期:2010-05-02
更新日期:2010-05-26

受影响系统:
GNU glibc 2.0.1 - 2.11.1
不受影响系统:
GNU glibc 2.11.1-2locris1
描述:
BUGTRAQ  ID: 40063
CVE ID: CVE-2010-0830

GNU C库是Gentoo Linux系统所使用的标准C库,为程序提供系统调用的基本功能和接口。

glibc库的ld.so动态加载器在处理恶意的ELF二进制程序时存在整数溢出漏洞。相关的漏洞代码位于elf/dynamic-link.h的elf_get_dynamic_info()函数中,该函数是从elf/rtld.c(ld.so的入口点)调用的,通过如下动态链接信息迭代:

ElfW(Dyn) *dyn = l->l_ld;
ElfW(Dyn) **info;

info = l->l_info;

while (dyn->d_tag != DT_NULL)
{
  if (dyn->d_tag < DT_NUM)
    info[dyn->d_tag] = dyn;
  ...

  dyn++;
}

dyn结构是直接从所处理二进制程序的ELF头读取的。d_tag成员为有符整数,因此dyn->d_tag < DT_NUM比较也为有符型。如果ELF二进制程序的该标签包含有负数索引,就可以通过检查,以当前dyn结构的地址写入任意内存位置。

<*来源:Dan Rosenberg
  
  链接:http://frugalware.org/security/662
        http://drosenbe.blogspot.com/2010/05/integer-overflow-in-ldso-cve-2010-0830.html
        http://www.ubuntu.com/usn/USN-944-1
*>

建议:
厂商补丁:

Ubuntu
------
Ubuntu已经为此发布了一个安全公告(USN-944-1)以及相应补丁:
USN-944-1:glibc, eglibc vulnerabilities
链接:http://www.ubuntu.com/usn/USN-944-1

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