CVE-2022-0847(Dirty Pipe)

本文介绍了Linux内核中的DirtyPipe漏洞(CVE-2022-0847),该漏洞允许攻击者通过本地权限提升,覆盖任意可读文件。漏洞源于splice()系统调用在处理匿名管道时,未能正确初始化页面的PIPE_BUF_FLAG_CAN_MERGE属性,导致数据可以跨页面写入。攻击者需具备读取权限,且满足特定条件才能利用。文章提供了漏洞利用步骤和exploit示例,以及受影响的内核版本范围。

简介

2022年03月07日,国外安全研究员Max Kellermann披露了一个Linux内核本地权限提升漏洞 CVE-2022-0847。攻击者通过利用此漏洞可进行任意可读文件重写,将普通权限用户提升到 root权限。该漏洞原理类似于 CVE-2016-5195(Dirty Cow),因此作者将此漏洞命名为“Dirty Pipe”。

漏洞作者原文:https://dirtypipe.cm4all.com

影响范围

  • Linux内核版本大于等于5.8,或小于5.16.11,5.15.25,5.10.102

漏洞原理

  • 页面(Page):CPU管理的最小内存单位, 一个页面通常为4kB大小, linux内存管理的最底层的一切都是关于页面的, 文件IO也是如此, 如果程序从文件中读取数据, 内核将先把它从磁盘读取到专属于内核的页面缓存(Page Cache)中, 后续再把它从内核区域复制到用户程序的内存空间中;
  • 管道(Pipe):一种用于单向进程间通信的工具, 它包含一个输入端和一个输出端, 程序将数据从一段输入, 从另一端读出; 在内核中, 为了实现这种数据通信, 需要以页面(Page)为单位维护一个环形缓冲区(通过pipe_buffer实现), 它通常最多包含16个页面, 且可以被循环利用,如果最近的写入没有完全填满页面,则后续写入可能会附加到该现有页面而不是分配新页面。;
  • 零拷贝(Zero-copy):如果每一次都把文件数据从内核空间拷贝到用户空间, 将会拖慢系统的运行速度, 也会额外消
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值