Linux kernel是美国Linux基金会发布的开源操作系统Linux所使用的内核。NFSv4 implementation是其中的一个分布式文件系统协议。 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页,而进程仍在运行。这时就会触发分段错误,内核会崩溃。
Linux kernel是美国Linux基金会发布的开源操作系统Linux所使用的内核。NFSv4 implementation是其中的一个分布式文件系统协议。 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页,而进程仍在运行。这时就会触发分段错误,内核会崩溃。