Linux Kernel 64位Personality处理本地拒绝服务漏洞

受影响系统:

Linux kernel 2.6.x

不受影响系统:

Linux kernel 2.6.33-rc6

描述:


BUGTRAQ  ID: 38027

Linux Kernel是开放源码操作系统Linux所使用的内核。

Linux Kernel在设置进程的personality时存在错误,本地用户在执行缺少ELF解释器的64位应用时可能触发分段错误,导致内核崩溃。

漏洞起因是fs/binfmt_elf.c文件中的load_elf_binary()函数,该函数在检查ELF解释器可用之前调用了SET_PERSONALITY(),将之前的32位进程转换为了64位进程。如果execve()成功,这不会导致问题,但在SET_PERSONALITY()之后由于无法找到解释器,open_exec()调用会失败,execve()几乎立即返回错误。在/proc/PID/maps中错误的映射了vsyscall页,而进程仍在运行。这时就会触发分段错误,内核会崩溃。

<*来源:Mathias Krause
  
  链接:http://marc.info/?l=linux-mm&m=126466407724382&q=p2
        http://secunia.com/advisories/38354/
*>

测试方法:


警 告

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

http://marc.info/?l=linux-mm&m=126466407724382&q=p5

建议:


厂商补丁:

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

http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.33-rc6.bz2

发表评论?

0 条评论。

发表评论