漏洞信息详情
Linux Kernel uselib()特权提升漏洞
- CNNVD编号:CNNVD-200504-062
- 危害等级: 中危
- CVE编号:
CVE-2004-1235
- 漏洞类型:
竞争条件
- 发布时间:
2005-01-07
- 威胁类型:
本地
- 更新时间:
2005-10-20
- 厂 商:
mandrakesoft - 漏洞来源:
Paul Starzetz pau… -
漏洞简介
Linux Kernel是开放源代码操作系统Linux的内核。
Linux二进制格式装载器(binary format loaders)uselib()函数存在缺陷,本地攻击者可以利用这个漏洞获得root用户权限。
Linux内核提供二进制格式装载器层来装载不同格式的程序如ELF或者a.out或其他的,内核也提供sys_uselib()函数装载对应的二进制程序。从binfmt_elf.c文件中对load_elf_library()的uselib函数分析,在对库的BRK段(VMA)处理上存在问题,此段通过current->mm->mmap_sem建立,当修改调用进程的内存布局时\’\’信号灯\’\'(semaphore)没有保持,这可以用来扰乱内存管理并提升特权。
部分源代码fs/binfmt_elf.c如下:
static int load_elf_library(struct file *file)
{
[904] down_write(¤t->mm->mmap_sem);
error = do_mmap(file,
ELF_PAGESTART(elf_phdata->p_vaddr),
(elf_phdata->p_filesz +
ELF_PAGEOFFSET(elf_phdata->p_vaddr)),
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE,
(elf_phdata->p_offset –
ELF_PAGEOFFSET(elf_phdata->p_vaddr)));
up_write(¤t->mm->mmap_sem);
if (error != ELF_PAGESTART(elf_phdata->p_vaddr))
goto out_free_ph;
elf_bss = elf_phdata->p_vaddr + elf_phdata->p_filesz;
padzero(elf_bss);
len = ELF_PAGESTART(elf_phdata->p_filesz + elf_phdata->p_vaddr + ELF_MIN_ALIGN – 1);
bss = elf_phdata->p_memsz + elf_phdata->p_vaddr;
if (bss > len)
do_brk(len, bss – len);
上面可以看到为了建立ELF二进制的数据段mmap_sem在调用do_brk()前释放,换句话说,查看mm/mmap.c文件中的sys_brk()可看出do_brk()必须以信号灯保持方式来调用。
再看下do_brk()代码:
[1094] vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
if (!vma)
return -ENOMEM;
vma->vm_mm = mm;
vma->vm_start = addr;
vma->vm_end = addr + len;
vma->vm_flags = flags;
vma->vm_page_prot = protection_map[flags & 0x0f];
vma->vm_ops = NULL;
vma->vm_pgoff = 0;
vma->vm_file = NULL;
vma->vm_private_data = NULL;
vma_link(mm, vma, prev, rb_link, rb_parent);
rb_link和rb_parent由find_vma_prepare()查询,很明显,如果kmem_cache_alloc()调用休眠,由于进程的VMA列表和VMA RB-tree可以被其他线程更改,新建立的VMA描述符可以被插入到其他位置。导致特权提升
参考网址
来源: BID
名称: 12190
链接:http://www.securityfocus.com/bid/12190
来源: REDHAT
名称: RHSA-2005:043
链接:http://www.redhat.com/support/errata/RHSA-2005-043.html
来源: FEDORA
名称: FLSA:2336
链接:https://bugzilla.fedora.us/show_bug.cgi?id=2336
来源: XF
名称: linux-uselib-gain-privileges(18800)
链接:http://xforce.iss.net/xforce/xfdb/18800
来源: TRUSTIX
名称: 2005-0001
链接:http://www.trustix.org/errata/2005/0001/
来源: FEDORA
名称: FEDORA-2005-013
链接:http://www.securityfocus.com/advisories/7806
来源: FEDORA
名称: FEDORA-2005-014
链接:http://www.securityfocus.com/advisories/7805
来源: www.securityfocus.com
链接:http://www.securityfocus.com/advisories/7804
来源: REDHAT
名称: RHSA-2005:092
链接:http://www.redhat.com/support/errata/RHSA-2005-092.html
来源: MISC
链接:http://isec.pl/vulnerabilities/isec-0021-uselib.txt
来源: CONECTIVA
名称: CLA-2005:930
链接:http://distro.conectiva.com.br/atualizacoes/index.php?id=a&anuncio=000930
来源: REDHAT
名称: RHSA-2005:017
链接:http://www.redhat.com/support/errata/RHSA-2005-017.html
来源: REDHAT
名称: RHSA-2005:016
链接:http://www.redhat.com/support/errata/RHSA-2005-016.html
来源: SUSE
名称: SUSE-SR:2005:001
链接:http://www.novell.com/linux/security/advisories/2005_01_sr.html
来源: MANDRAKE
名称: MDKSA-2005:022
链接:http://www.mandriva.com/security/advisories?name=MDKSA-2005:022
来源: DEBIAN
名称: DSA-1082
链接:http://www.debian.org/security/2006/dsa-1082
来源: DEBIAN
名称: DSA-1070
链接:http://www.debian.org/security/2006/dsa-1070
来源: DEBIAN
名称: DSA-1069
链接:http://www.debian.org/security/2006/dsa-1069
来源: DEBIAN
名称: DSA-1067
链接:http://www.debian.org/security/2006/dsa-1067
来源: SECUNIA
名称: 20338
链接:http://secunia.com/advisories/20338
来源: SECUNIA
名称: 20202
链接:http://secunia.com/advisories/20202
来源: SECUNIA
名称: 20163
链接:http://secunia.com/advisories/20163
来源: SECUNIA
名称: 20162
链接:http://secunia.com/advisories/20162
来源: BUGTRAQ
名称: 20050107 Linux kernel sys_uselib local root vulnerability
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110512575901427&w=2