1、漏洞描述:
在 polkit 的 pkexec 工具程序中发现了一个本地权限升级漏洞。
polkit 是用于在类Unix操作系统中控制系统范围特权的组件,它为非特权进程提供了与特权进程进行通信的有组织的方式。
polkit 的 pkexec 存在本地权限提升漏洞,已获得普通权限的攻击者可通过此漏洞获取root权限。
2、安全版本
所有的主流Linux版本均受影响
安全版本:
CentOS系列:
CentOS 6:polkit-0.96-11.el6_10.2
CentOS 7:polkit-0.112-26.el7_9.1
CentOS 8.0:polkit-0.115-13.el8_5.1
CentOS 8.2:polkit-0.115-11.el8_2.2
CentOS 8.4:polkit-0.115-11.el8_4.2
Ubuntu系列:
Ubuntu 20.04 LTS:policykit-1 - 0.105-26ubuntu1.2
Ubuntu 18.04 LTS:policykit-1 - 0.105-20ubuntu0.18.04.6
Ubuntu 16.04 ESM:policykit-1 - 0.105-14.1ubuntu0.5+esm1
Ubuntu 14.04 ESM:policykit-1 - 0.105-4ubuntu3.14.04.6+esm1
3、漏洞复现-POC
下载地址:https://github.com/berdav/CVE-2021-4034
使用centos7.6版本复现此漏洞
查看默认polkit版本,可以看到根据安全版本判断此版本存在该问题
自行创建普通账号,我是用的账号为test
上传POC 进行提权
4、修复
(1)临时解决方案
删除pkexec的SUID位:
chmod 0755 /usr/bin/pkexec
注:suid设置在umask值的第一位,suid的值为4,其作用是让执行该命令的用户以该命令拥有者(该组件的拥有者为root)的权限去执行
(2)升级polkit到安全版本
再次测试 已修复