news 2026/4/21 11:05:52

从CVE-2021-4034到CVE-2021-3156:手把手复现Linux两大本地提权漏洞(附修复方案)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从CVE-2021-4034到CVE-2021-3156:手把手复现Linux两大本地提权漏洞(附修复方案)

从CVE-2021-4034到CVE-2021-3156:Linux本地提权漏洞深度实战指南

凌晨三点,安全团队的告警系统突然亮起红灯——又一台服务器被标记存在高危漏洞。作为运维负责人,你必须在最短时间内判断风险等级、验证漏洞真实性并制定修复方案。本文将带你深入两个近年来影响最广泛的Linux本地提权漏洞:Polkit的PwnKit(CVE-2021-4034)和Sudo的堆溢出(CVE-2021-3156)。不同于简单的漏洞描述,我们会从实战角度还原完整的漏洞分析过程,包括:

  • 如何快速搭建漏洞验证环境
  • 两种漏洞利用技术的本质差异
  • 企业环境中最有效的临时缓解措施
  • 长期修复方案的选择与验证

无论你是安全研究人员需要复现漏洞细节,还是系统管理员负责应急响应,这篇文章都将提供可直接落地的技术方案。

1. 漏洞背景与影响范围

2021年对Linux安全来说是充满挑战的一年。两个影响深远的本地提权漏洞相继曝光,分别击穿了系统权限管理的两大核心组件:Polkit和Sudo。虽然最终效果都是获取root权限,但它们的攻击路径和技术原理却大相径庭。

CVE-2021-4034(PwnKit)关键特征:

  • 影响组件:Polkit的pkexec
  • 漏洞类型:环境变量注入
  • 利用条件:任何非特权用户
  • CVSS评分:7.8(高危)
  • 特殊优势:无需任何用户凭证

CVE-2021-3156(Baron Samedit)关键特征:

  • 影响组件:Sudo
  • 漏洞类型:堆缓冲区溢出
  • 利用条件:需在sudoers列表中
  • CVSS评分:7.0(高危)
  • 特殊限制:需要知道用户密码

影响范围对比表:

维度CVE-2021-4034CVE-2021-3156
默认存在漏洞的版本2009年后的所有Polkit版本Sudo 1.8.2 - 1.8.31p2
主要受影响发行版CentOS/RHEL 6-8, Ubuntu 14-21CentOS 6-8, Ubuntu 18-20
利用复杂度简单(公开PoC直接可用)中等(需特定参数构造)
横向移动风险极高(蠕虫级漏洞)有限(需账户凭证)

实际案例:某云服务商在PwnKit披露后24小时内就监测到批量扫描行为,48小时后出现自动化攻击工具。相比之下,Sudo漏洞更多被用于针对性攻击。

2. 漏洞原理深度解析

2.1 PwnKit(CVE-2021-4034)技术细节

Polkit的设计初衷是为系统提供精细化的权限管理,但正是这个安全组件自身出现了致命缺陷。漏洞根源在于pkexec对参数处理的逻辑错误:

// 有问题的参数处理逻辑 if (argc == 0) { // 错误地认为argv[1]是环境变量 envp = argv[1]; }

攻击者可以通过精心构造的环境变量实现任意代码执行。具体攻击链如下:

  1. 通过execve调用pkexec并传递空参数数组
  2. pkexec错误地将环境变量当作参数读取
  3. 注入的GCONV_PATH变量触发动态链接器加载恶意.so
  4. 恶意库中的构造函数函数以root权限执行

关键验证命令:

# 构造恶意环境变量 export GCONV_PATH=/tmp/exploit # 触发漏洞 execve /usr/bin/pkexec []

2.2 Sudo堆溢出(CVE-2021-3156)工作机制

与Polkit不同,Sudo漏洞源于经典的缓冲区溢出问题。当处理命令行参数时,特殊构造的输入会导致堆内存越界:

// sudoers.c中的问题代码 if (user_details.uids[0] == (uid_t)-1) { // 错误的长度计算导致溢出 memcpy(dest, src, incorrect_length); }

利用这个漏洞需要满足三个条件:

  1. 目标用户在sudoers列表中
  2. 知道该用户密码
  3. Sudo版本在受影响范围内

典型攻击向量:

# 触发溢出的特殊参数格式 sudo -u '#-1' $(perl -e 'print "A" x 1000')

3. 漏洞复现实战指南

3.1 实验环境准备

建议使用虚拟机搭建测试环境,以下是推荐配置:

组件PwnKit测试环境Sudo漏洞测试环境
操作系统Ubuntu 20.04 LTSCentOS 7.9
漏洞软件版本polkit-0.105-26ubuntu1sudo-1.8.23-10.el7
内核版本5.4.0-91-generic3.10.0-1160.el7.x86_64

环境搭建步骤:

  1. 安装基础系统(禁用自动更新)
  2. 安装特定版本软件包:
    # Ubuntu安装旧版polkit sudo apt install policykit-1=0.105-26ubuntu1 # CentOS安装旧版sudo sudo yum install sudo-1.8.23-10.el7
  3. 验证版本:
    # 检查polkit版本 pkexec --version # 检查sudo版本 sudo --version

3.2 PwnKit复现步骤

  1. 下载公开PoC:
    git clone https://example.com/pwnkit-exploit.git cd pwnkit-exploit make
  2. 执行漏洞利用:
    ./exploit
  3. 验证结果:
    whoami # 应显示root

常见问题解决:

  • 如果遇到"permission denied",检查pkexec的SUID位:
    ls -l /usr/bin/pkexec
  • 编译错误可能是缺少gcc或make,安装开发工具包:
    sudo apt install build-essential

3.3 Sudo漏洞复现方法

  1. 准备利用代码(Python示例):
    import os payload = 'A' * 1000 os.system(f'sudo -u \\#-1 {payload}')
  2. 执行并观察崩溃日志:
    dmesg | tail -n 20
  3. 完整利用需要构造ROP链(略)

4. 修复方案与防护措施

4.1 临时缓解方案

对于PwnKit:

# 移除pkexec的SUID位 chmod 0755 /usr/bin/pkexec # 验证防护效果 ./exploit # 应失败

对于Sudo漏洞:

# 限制sudo命令长度 echo 'Defaults pwfeedback' >> /etc/sudoers

4.2 永久修复方案

各发行版升级命令:

发行版PwnKit修复命令Sudo漏洞修复命令
Ubuntusudo apt install policykit-1sudo apt install sudo
CentOSsudo yum update polkitsudo yum update sudo
RHELsudo dnf upgrade polkitsudo dnf upgrade sudo

验证修复:

# 检查polkit版本 rpm -q polkit # 应 >= 0.116-7 # 检查sudo版本 sudo --version # 应 >= 1.9.5p2

4.3 深度防御建议

  1. 实施最小权限原则:

    • 定期审核sudoers文件
    • 使用visudo进行语法检查
  2. 系统加固措施:

    # 启用内核防护 echo 1 > /proc/sys/kernel/randomize_va_space
  3. 监控与检测:

    • 审计pkexec和sudo的异常调用
    • 监控/etc/passwd和/etc/shadow的异常修改

在一次金融系统的渗透测试中,我们发现虽然系统已经修补了Sudo漏洞,但由于未清理测试账户,攻击者仍然可以利用弱密码和残留的sudo权限进行提权。这提醒我们漏洞修复后的清理工作同样重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 11:05:51

思源黑体TTF:重新定义开源字体的技术美学

思源黑体TTF:重新定义开源字体的技术美学 【免费下载链接】source-han-sans-ttf A (hinted!) version of Source Han Sans 项目地址: https://gitcode.com/gh_mirrors/so/source-han-sans-ttf 在数字设计的世界里,字体不仅是文字的载体&#xff0…

作者头像 李华
网站建设 2026/4/21 11:05:47

创意工作需要一个能够充分支持它的环境

🎨 创意工作需要一个能够充分支持它的环境。✅ Curtain e-locker 易锁,现已支持 CorelDRAW 2025、Roland VersaWorks 7 和 Nero AI Image Upscaler,让创意团队可以不受安全工具的干扰,持续高效地开展工作。• 对于 IT 人员&#x…

作者头像 李华
网站建设 2026/4/21 11:02:16

进度管理软件选购参考:8款各有侧重的工具

进度猫:以甘特图为核心的轻量级可视化利器 进度猫是一款以甘特图为向导的轻量级项目管理软件,主打“让项目管理一目了然”。它基于甘特图进行任务拆分和进度管理,系统会自动更新任务进度并用颜色标识不同状态,帮助项目经理及时识别…

作者头像 李华
网站建设 2026/4/21 10:58:13

企业云盘权限体系设计:从RBAC到ABAC的技术演进与实战落地

前言 企业云盘选型时,权限管理是IT管理员最头疼的环节之一。 “这个文件夹让不让市场部看?” “财务的文件研发能不能访问?” “外包人员要不要单独建账号?” “供应商来审计的时候,临时权限怎么给?” 每家…

作者头像 李华