文章首发于:
火线Zone社区(https://zone.huoxian.cn/)
前言
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
如果文章中的漏洞出现敏感内容产生了部分影响,请及时联系作者,望谅解。
一、漏洞简述
本次研究漏洞为 CVE-2021-4034,该漏洞是由于pkexec 无法正确处理调用参数,从而将环境变量作为命令执行,具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞,从而获得受影响主机的root 权限。
polkit介绍
polkit是一个授权管理器,其系统架构由授权和身份验证代理组成,pkexec是其中polkit的其中一个工具,他的作用有点类似于sudo,允许用户以另一个用户身份执行命令。
polkit 提供了一个授权 API,供特权程序(“ MECHANISMS ” )使用,通常通过某种形式的进程间通信机制为非特权程序( “ SUBJECTS ”)提供服务。
在这种情况下,该机制通常将主体视为不受信任。对于来自主体的每个请求,该机制需要确定该请求是否被授权,或者它是否应该拒绝为主体提供服务。使用 polkit API,一种机制可以将此决定转交给受信任的一方:polkit 权威。
polkit 权限被实现为系统守护进程 polkitd (8),它本身没有什么特权,因为它以 polkitd系统用户身份运行。机制、主体和认证代理使用系统消息总线与授权机构进行通信。
除了作为授权之外,polkit 还允许用户通过验证管理用户或客户端所属会话的所有者来获得临时授权。这对于机制需要验证系统的操作员确实是用户还是管理用户的场景很有用
plokit基本组成
-
polkit— 授权管理器
-
polkitd— polkit 系统守护进程
-
pkcheck— 检查一个进程是否被授权
-
pkaction— 获取有关已注册操作的详细信息
-
pkexec— 以另一个用户身份执行命令
-
pkttyagent— 文本认证助手
二、漏洞检测
Linux下受漏洞影响Polkit版本范围为 2009年5月至今发布的所有 Polkit 版本。
在CentOS、Ubuntu、Debian、Redhat、Fedora、Gentoo、Mageia等。
多个Linux发行版上预装有Polkit,即所有存在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:
-
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
可以通过以下命令查看版本信息,判断是否可利用:
CentOS:
rpm -qa polkit
Ubuntu:
dpkg -l policykit-1
图1 漏洞检测
可以看到目前版本受此漏洞影响。
三、漏洞复现
目前POC已公开,如下:
https://github.com/berdav/CVE-2021-4034
首先下载POC,通过以下命令
git clone https://github.com/berdav/CVE-2021-4034.git
进入POC目录,使用make命令
图2 make命令
注:若出现以下情况,属于环境未安装gcc
图3 缺少gcc,make失败
之后使用./cve-2021-4034命令进行利用,可以看到成功进行提权。
图4 提权利用
由普通用户权限至root权限。
四、漏洞修复
目前各Linux发行版官方均已给出安全补丁,建议用户尽快升级至安全版本,或参照官方说明措施进行缓解,CentOS、Ubuntu及Debian用户可参考以下链接:
-
https://ubuntu.com/security/CVE-2021-4034
-
https://access.redhat.com/security/cve/CVE-2021-4034
-
https://security-tracker.debian.org/tracker/CVE-2021-4034
截止到目前2022/01/27, CentOS目前已提供安全更新包。
下载地址:http://mirror.centos.org/centos/7/updates/x86_64/Packages/
结束语
本文主要介绍了CVE-2021-4034 Linux Polkit权限提升漏洞的复现过程,漏洞主要利用pkexec 无法正确处理调用参数,从而将环境变量作为命令执行,具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞,从而获得受影响主机的root 权限。
【火线Zone云安全社区群】
进群可以与技术大佬互相交流
进群有机会免费领取节假日礼品
进群可以免费观看技术分享直播
识别二维码回复【社区群】进群
【火线zone社区周激励】
2022.4.4~ 2022.4.10公告
【相关精选文章】
火线Zone是[火线安全平台]运营的云安全社区,内容涵盖云计算、云安全、漏洞分析、攻防等热门主题,研究讨论云安全相关技术,助力所有云上用户实现全面的安全防护。欢迎具备分享和探索精神的云上用户加入火线Zone社区,共建一个云安全优质社区!
如需转载火线Zone公众号内的文章请联系火线小助手:hxanquan(微信)
// 火线Zone //
微信号 : huoxian_zone
点击阅读原文,加入社区,共建一个有技术氛围的优质社区!
原文始发于微信公众号(火线Zone):CVE-2021-4034 Linux Polkit权限提升漏洞复现
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论