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

发布日期:2010-02-10
更新日期:2010-02-02

受影响系统:
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
 
  链接:?l=linux-mm&m=126466407724382&q=p2
       
*>

测试方法:
--------------------------------------------------------------------------------

警 告

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

?l=linux-mm&m=126466407724382&q=p5

建议:
--------------------------------------------------------------------------------
厂商补丁:

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpgws.html