当前位置: 首页 > 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.lqws.cn/news/542935.html

相关文章:

  • 【C/C++】C++26新特性前瞻:全面解析未来编程
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_rmem 和 net.core.rmem_default 关系
  • 极客时间·AI 数据分析训练营(1期)·毕业总结
  • 免费AI助手工具深度测评:Claude4本地化部署与实战应用指南
  • 87.xilinx FPGA读取器件id方法
  • IDEA 插件开发:Internal Actions 与 UI Inspector 快速定位 PSI
  • Java反射机制讲解,利用疑问一步步刨析
  • Netty堆内存字节缓冲区深度解析
  • 数学:数学里面rank(A)是什么运算
  • UR机器人,如何设置 TCP
  • spring-security原理与应用系列:requestMatchers和authorizeRequests
  • Docker学习
  • Gitee 持续集成与交付(CI/CD)篇
  • IBW 2025: CertiK首席商务官出席,探讨AI与Web3融合带来的安全挑战
  • 线上问题之-OOM排查记
  • 【Docker基础】Docker容器管理:docker ps及其参数详解
  • RAG 多段检索 + 多段拼接 + Encoder 与 Decoder 原理详解
  • C++11 lambda
  • 【C++】命令模式
  • iOS App 上架常见问题解决方案:六大难点与实战工具分工详解
  • MCP-安全(代码实例)
  • 鸿蒙OH南向开发 小型系统内核(LiteOS-A)【文件系统】上
  • Web基础关键_003_CSS(一)
  • 3.web逆向之开发者工具调试
  • Guava Cache 本地项目缓存
  • JDBC 工具类:1.0到3.0版本
  • leetcode 295. 数据流的中位数
  • element-plus限制日期可选范围(这里以7天为例)
  • Unity 脚本自动添加头部注释
  • Qwen VLo :一个多模态统一理解与生成模型