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

深入剖析 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.lryc.cn/news/576261.html

相关文章:

  • 智能助手(利用GPT搭建智能系统)
  • Vivado 五种仿真类型的区别
  • Javaweb - 6 BOM 编程 和 DOM 编程
  • python打卡day56
  • VUE使用过程中的碰到问题记录
  • 【深度学习新浪潮】MoE技术入门(简要版)
  • Linux基本指令篇 —— tac指令
  • Apache Kafka 面试应答指南
  • 黑马JVM解析笔记(五):深入理解Java字节码执行机制
  • python训练day43 复习日
  • 10【认识文件系统】
  • 基于springboot的火锅店点餐系统
  • 遥感图像语义分割1-安装mmsegmentation
  • 人工智能-基础篇-2-什么是机器学习?(ML,监督学习,半监督学习,零监督学习,强化学习,深度学习,机器学习步骤等)
  • Python Selenium 滚动到特定元素
  • .NET MAUI跨平台串口通讯方案
  • 【github】从本地更新仓库里的文件笔记
  • C++基础:动态内存分配、输入输出与命名空间详解
  • 如何构建个人AIagent
  • 命名数据网络 | 签名(Signature)
  • 视觉疲劳检测如何优化智能驾驶的险情管理
  • 杭州西湖断桥不断:3D扫描还原‘残雪‘视觉骗局
  • 从0到100:房产中介小程序开发笔记(中)
  • 为什么python处理csv文件将某个值替换成另一个值并另存后,csv文件的大小减小了一半
  • 详解HashMap底层原理
  • 三、java项目自动部署流水线搭建
  • Java--数组
  • 如何使用免费软件写论文?六个免费论文生成软件使用指南
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)
  • Class2基础优化算法