Linux Kernel uselib()特权提升漏洞

漏洞信息详情

Linux Kernel uselib()特权提升漏洞

漏洞简介

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描述符可以被插入到其他位置。导致特权提升

漏洞公告

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.kernel.org/

参考网址

来源: 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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享