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

受影响系统:

GNU glibc 2.0.1 – 2.11.1

不受影响系统:

GNU glibc 2.11.1-2locris1

描述:
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

发表评论?

0 条评论。

发表评论