当前位置: 首页 > ops >正文

深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系

CVE-2021-3560 和 CVE-2021-4034 是 2021 年曝光的两个 Linux 本地权限提升漏洞,均涉及 Polkit 组件。由于它们影响广泛且利用门槛较低,迅速引起安全社区关注。本文将深入分析这两个漏洞的技术原理、影响范围、区别与联系,并结合实际案例,提供缓解措施及安全建议。


1. CVE-2021-3560:Polkit 认证绕过漏洞

1.1 漏洞原理

CVE-2021-3560 是一个 认证绕过漏洞,源于 Polkit 处理 DBus 消息时的逻辑缺陷。Polkit(PolicyKit)是 Linux 权限管理框架,通过 DBus 与客户端通信。当用户使用 pkexec 提权时,Polkit 需要验证其权限。

漏洞出现在 Polkit 处理 中断请求 时的逻辑错误:

  1. 用户发起特权请求(如 pkexec --user nobody)。
  2. 在 Polkit 处理该请求的过程中,攻击者通过 SIGTERM 终止进程。
  3. Polkit 未能正确清理状态,导致后续请求被误认为已通过认证,从而赋予 root 权限。

1.2 技术细节

漏洞位于 polkitd 处理 DBus 消息的逻辑中,涉及 GLib 的 GMainLoop 事件处理机制。由于 PolkitSubject 对象在认证中断后未释放,导致状态混淆。

攻击者可使用以下 PoC(概念验证代码)来利用该漏洞:

for i in {1..100}; do (pkexec --user nobody bash &); sleep 0.01; killall -9 pkexec; done

此代码利用竞态条件,不断中断 pkexec 进程,使得认证状态失效,从而绕过权限检查。

1.3 影响范围

  • 受影响版本:Polkit 0.113 至 0.118。
  • 受影响系统:Ubuntu 20.04、Debian 10、Fedora 34 等主流发行版。
  • CVSS 评分:7.8(高危)。
  • 利用门槛:需要本地用户权限,但无需特殊权限。
  • 修复方案:漏洞于 2021 年 6 月 3 日公开,0.119 版本修复了状态清理问题。

2. CVE-2021-4034:pkexec 本地提权漏洞

2.1 漏洞原理

CVE-2021-4034(“PwnKit”)是 pkexec 二进制文件中的 本地提权漏洞,源于参数处理错误。

pkexec 运行时:

  1. argc == 1(无参数),则 pkexec 试图解析参数。
  2. 由于缺少边界检查,pkexec 试图从环境变量加载动态库,如 GCONV_PATH
  3. 攻击者可伪造共享库,使其以 root 权限执行任意代码。

2.2 技术细节

pkexec 源码中的 main() 函数对 argv 处理不当:

int main(int argc, char *argv[]) {if (argc < 2) {char *path = g_find_program_in_path(argv[0]);setlocale(LC_ALL, ""); // 触发 GCONV_PATH 加载}
}

攻击者可以这样利用:

export GCONV_PATH=./malicious_dir
gcc -shared -fPIC -o malicious.so exploit.c
pkexec

pkexec 会加载恶意库 malicious.so,以 root 权限执行其中的代码。

2.3 影响范围

  • 受影响版本:Polkit 0.105 及之后所有版本(漏洞自 2009 年引入)。
  • 受影响系统:几乎所有 Linux 发行版(Ubuntu、Debian、CentOS、RHEL 等)。
  • CVSS 评分:7.8(高危)。
  • 利用门槛:本地用户可直接利用,无需竞态条件。
  • 修复方案:2022 年 1 月 25 日披露,0.120 版本修复该问题。

3. CVE-2021-3560 与 CVE-2021-4034 的区别与联系

3.1 主要区别

漏洞编号攻击目标触发方式技术要求影响范围
CVE-2021-3560Polkit DBus竞争条件需要精准时序影响 2019-2021 年的系统
CVE-2021-4034pkexec确定性利用仅需环境变量影响 2009 年以来所有系统

3.2 共同点

  • 都涉及 Polkit 权限管理机制。
  • 都可用于本地权限提升,从普通用户提权至 root。
  • 都已被黑客利用,成为实际攻击场景中的重要漏洞。
  • 都已通过软件更新修复,建议立即升级系统。

4. 防御与缓解措施

4.1 更新系统

  • CVE-2021-3560:升级至 Polkit 0.119 或更高。
  • CVE-2021-4034:升级至 Polkit 0.120 或更高。

4.2 临时缓解方案

  • 移除 pkexec 的 setuid 权限
    chmod u-s /usr/bin/pkexec
    
  • 禁用 Polkit 服务(适用于无 GUI 服务器)
    systemctl stop polkit && systemctl disable polkit
    

4.3 监控与检测

  • 检查 pkexec 的异常调用日志:
    journalctl -xe | grep pkexec
    
  • 使用 SELinuxAppArmor 限制 pkexec 访问权限。

5. 结论

CVE-2021-3560 和 CVE-2021-4034 展示了 Linux 权限管理的两个关键问题:

  • 认证绕过(CVE-2021-3560)
  • 输入验证不足(CVE-2021-4034)

其中,CVE-2021-4034 影响所有主流 Linux 发行版,危害更大。建议 Linux 用户立即更新系统,实施必要的防御措施,以防止本地提权攻击。

http://www.xdnf.cn/news/14674.html

相关文章:

  • SQL学习笔记4
  • python基于Django+mysql实现的图书管理系统【完整源码+数据库】
  • 基于springboot的火锅店点餐系统
  • 代码随想录|图论|09沉没孤岛
  • 中国双非高校经费TOP榜数据分析
  • 【数据结构】B树的介绍及其实现C++
  • 鸿蒙OS开发IoT控制应用:从入门到实践
  • EXCEL数据报表
  • 修改Docker-compose使Uptime-Kuma支持IPV6
  • 免费无广告PDFCreator:虚拟打印软件一键转 PDF/PNG/JPG
  • Solidity学习 - 未授权访问
  • 问卷调查 [oled]
  • 车载诊断架构--- 车载诊断中的引导式诊断
  • MySQL(1)——count()聚合函数
  • OkHttp 简单配置
  • 链表题解——两数相加【LeetCode】
  • .NET MAUI跨平台串口通讯方案
  • 永磁无刷电机旋转原理
  • 架构轻巧的kokoro 文本转语音模型
  • Apipost 和 Apifox 2025最新功能对比分析
  • 2-深度学习挖短线股-1-股票范围选择
  • [3D-portfolio] 版块包装高阶组件(封装到HOC) | Email表单逻辑 | 链式调用
  • 桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏
  • 基于SpringBoot和Leaflet的区域冲突可视化-以伊以冲突为例
  • Robyn高性能Web框架系列06:使用WebSocket实现产品智能助理
  • SQL学习笔记3
  • 图像质量对比感悟
  • 智表ZCELL产品V3.2 版发布,新增拖动调整行列功能,修复了插件引用相对路径等问题
  • 【C++11】右值引用和移动语义
  • Hive3.1.3加载paimon-hive-connector-3.1-1.1.1.jar报错UnsatisfiedLinkError