1 背景
公司和项目组同时发起了Linux polkit本地权限提升漏洞,给定了时间和任务,开始着手处理。
2 漏洞描述
在 polkit 的 pkexec 程序中发现了一个本地权限提升漏洞。pkexec 应用程序是一个 setuid 工具,旨在允许非特权用户根据预定义的策略以特权用户身份运行命令。由于当前版本的 pkexec 无法正确处理调用参数计数,并最终会尝试将环境变量作为命令执行。攻击者可以通过控制环境变量,从而诱导 pkexec 执行任意代码。利用成功后,可导致非特权用户获得管理员权限。CVE-2021-4034
polkit 的 pkexec 存在本地权限提升漏洞,已获得普通权限的攻击者可通过此漏洞获取root权限。
目前漏洞POC已被泄露,攻击者利用该漏洞可导致恶意用户权限提升等危害
该漏洞CVSS评分:7.8
危害等级:高危
3 影响范围
2009年5月至今发布的所有 Polkit 版本
Polkit预装在CentOS、Ubuntu、Debian、Redhat、Fedora、Gentoo、Mageia等多个Linux发行版上,所有存在Polkit的Linux系统均受影响。
4 漏洞检测
Linux系统用户可以通过查看Polkit版本来判断当前系统是否在受影响范围内,主流Linux发行版命令如下:
本篇主要针对Centos版本为例进行操作
CentOS:
#rpm -qa polkit
5 修复措施
主流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
修复方法为将polkit版本升级至不受影响的版本,
查看polkit版本
rpm -qa polkit
以下以具备互联网接入和不具备互联网接入的情况进行操作。
5.1 在线修复
针对具备接入互联网的操作系统进行的修复方法,推荐方法
# 清除YUM缓存
yum clean all
# 把服务器的包信息下载到本地电脑缓存起来
yum makecache
# 在线升级polkit版本
yum update polkit -y
5.2 离线修复
官网下载离线安装包
拷贝至离线服务器
rpm -ivh polkit-0.112-26.el7_9.1.x86_64.rpm
查看
rpm -qa polkit
以上为单台升级,如果涉及到维护多台服务器参考以下方法
将需要维护的服务器的信息维护到hosts文件
# 拷贝至目标服务器
ansible upserver -m copy -a "src=/root/polkit-0.112-26.el7_9.1.x86_64.rpm dest=/root/polkit-0.112-26.el7_9.1.x86_64.rpm"
# 查看目标服务器polkit版本
ansible upserver -m shell -a "rpm -qa polkit"
# 升级
ansible upserver -m yum -a "name=/root/polkit-0.112-26.el7_9.1.x86_64.rpm state=installed"
升级完毕后使用查看命令查看验证升级后的polkit版本
5.3 拿来即用
下载漏洞补丁和升级脚本
以下为官网下载完毕的一个polkit版本和一个升级脚本,将需要升级的服务器的信息维护到/etc/ansible/hosts
文件中,执行脚本升级即可