Linux polkit权限提升漏洞修复方法(CVE-2021-4034)

该漏洞是由于pkexec 无法正确处理调用参数,从而将环境变量作为命令执行,具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞,从而获得受影响主机的root 权限。目前该漏洞的细节和PoC已公开,请相关用户尽快采取措施进行防护。

Polkit(PolicyKit)是类Unix系统中一个应用程序级别的工具集,通过定义和审核权限规则,实现不同优先级进程间的通讯。pkexec是Polkit开源应用框架的一部分,可以使授权非特权用户根据定义的策略以特权用户的身份执行命令。

参考链接:https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt

受影响版本

2009年5月至今发布的所有 Polkit 版本
注:Polkit预装在CentOS、Ubuntu、Debian、Redhat、Fedora、Gentoo、Mageia等多个Linux发行版上,所有存在Polkit的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 14.04 ESM:policykit-1-0.105-4ubuntu3.14.04.6+esm1
Ubuntu 16.04 ESM:policykit-1-0.105-14.1ubuntu0.5+esm1
Ubuntu 18.04 LTS:policykit-1-0.105-20ubuntu0.18.04.6
Ubuntu 20.04 LTS:policykit-1-0.105-26ubuntu1.2
Ubuntu 21.10:policykit-1-0.105-31ubuntu0.1
Debain:

:policykit-1 0.105-18+deb9u2
Debain stretch:policykit-1 0.105-18+deb9u2
Debain buster:policykit-1 0.105-25+deb10u1
Debain bullseye:policykit-1 0.105-31+deb11u1
Debain bookworm,bullseye:policykit-1 0.105-31.1

漏洞检测

Linux系统用户可以通过查看Polkit版本来判断当前系统是否在受影响范围内,主流Linux发行版命令如下:

CentOS:
rpm -qa polkit
polkit-0.112-18.el7_9.1.x86_64

Ubuntu:
dpkg -l policykit-1
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============================
ii policykit-1 0.105-20ubuntu0.18.0 amd64 framework for managing administrative policies and privileges

漏洞防护
官方升级
1、目前官方已发布补丁修复此漏洞,建议受影响用户及时安装进行防护。下载链接:https://gitlab.freedesktop.org/polkit/polkit/-/commit/a2bf5c9c83b6ae46cbd5c779d3055bff81ded683

2、目前主流Linux发行版均已发布安全补丁或更新版本修复此漏洞,建议用户尽快安装补丁或参照官方措施进行防护:

Linux发行版 官方通告
Ubuntu https://ubuntu.com/security/CVE-2021-4034
Debain https://security-tracker.debian.org/tracker/CVE-2021-4034
Redhat https://access.redhat.com/security/cve/CVE-2021-4034
Gentoo https://bugs.gentoo.org/show_bug.cgi?id=CVE-2021-4034
Mageia https://advisories.mageia.org/CVE-2021-4034.html


注:如CentOS、Ubuntu、Debian等使用包管理器更新Polkit的Linux发行版,可直接运行下列命令进行更新修复:

CentOS:
Yum clean all & yum makecache
yum update polkit -y

Ubuntu:
apt-get update
apt-get install policykit-1

Debian:
apt upgrate policyket-1

注意:修复后注意有容器docker环境的业务是否正常运作,如有time out 等网络报错,尝试重启,例如以下命令:

systemctl status polkit

systemctl restart polkit
systemctl restart docker

yum install -y setroubleshoot setools
yum reinstall polkit
systemctl start polkit 

4.2 临时防护措施
若受影响用户使用的操作系统还未发布修复程序,或暂时无法安装补丁更新,在不影响业务的情况下可使用以下措施进行临时防护。

执行下列系统命令移除 pkexec 的 suid位:
Chmod 0755 /usr/bin/pkexec

京ICP备11047313号-19 彩虹岛电子书