CVE-2019-13272Linux本地内核提权

介绍

在5.1.17之前的Linux内核中,kernel / ptrace.c中的ptrace_link错误地处理了想要创建ptrace关系的进程的凭据记录,这允许本地用户通过利用父子的某些方案来获取root访问权限 进程关系,父进程删除权限并调用execve(可能允许攻击者控制)。

Linux执行PTRACE_TRACEME函数时,ptrace_link函数将获得对父进程凭据的RCU引用,然后将该指针指向get_cred函数,但是,对象struct cred的生存周期规则不允许无条件的将RCU引用转换为稳定引用。

PTRACE_TRACEME获取父进程的凭证,使其能够像父进程一样执行父进程能够执行的各种操作,如果恶意低权限子进程使用PTRACE_TRACEME并且该子进程的父进程具有高权限,该子进程可获取其父进程的控制权并且使用其父进程的权限调用execve函数创建一个新的高权限进程。

范围

内核<5.1.17

利用

查看内核版本uname -r,查看当前用户和uid。

CVE-2019-13272Linux本地内核提权

 

将利用脚本下载到机器上:sudo git clone https://github.com/bcoles/kernel-exploits.git

到CVE-2019-13272文件夹,用gcc编译c文件。

CVE-2019-13272Linux本地内核提权

 

然后运行exp文件。

以ubuntu为例,执行过程中虽然提示有个error,但已提权成功,如下图。

CVE-2019-13272Linux本地内核提权

 

修复

1,修复补丁:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6994eefb0053799d2e07cd140df6c2ea106c41ee

2,升级内核到最新版本。


                                                                           网络攻防知识星球推荐,欢迎加入。

圈内会分享关于信息搜集、web渗透、内网安全、代码审计等东西,另外物联网安全也是趋势,我们平时的学习资料总结都会进行分享。

整体来说就是网络攻防这个大层面,或者说是网络安全,在这里我们创建一个纯净的技术交流平台,和密圈内的兄弟一块交流学习。

                                                                                       CVE-2019-13272Linux本地内核提权