Linux内核的内存子系统在处理写时拷贝(Copy-on-Write,缩写为COW)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,进而可以获取整个系统的最高权限。漏洞详情如下:

https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails

漏洞验证程序

POC链接地址如下:

https://github.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c

受影响的范围

该漏洞从Linux内核版本>=2.6.22以后就开始存在,影响全版本Linux,直到2016年10月18日才修复。其中Red Hat、Debian和Ubuntu三个发行版的受影响及修复情况见如下链接:

漏洞分析

COW=Copy On Write写时复制,当程序准备写一块映射的区域,则会生成一块映射的复制,对此区域的任何修改都不会写回原来的文件。在通常的情况下,如果在COW时候发生了缺页异常,则处理缺页异常的函数handle_mm_fault()函数则会停止页表写入并重试COW。

通常情况下,当一个程序写一个内存页,且这个物理页不可写的时候,会触发异常,因为当前物理页在用户空间,不在内核空间中。所以调用handle_pte_fault,这个函数经过一系列的判断,发现是因为内存页不可写导致的异常,则会调用do_wp_page来完成写时复制(COW)。不过,父子进程是以匿名映射来共享内存的,所以只需要完成reuse_swap_page即可。但是,会丢失FOLL_WRITE标志位。

如果另一个线程不停的告诉内核这个物理页不再需要、可以释放,当内核释放掉那个物理页后,handle_mm_fault在处理一个读错误(!pte_present)从而获得一个pagecache也就是文件的缓存。从而破坏私有映射完成只读文件的写入。

作者在修复代码中是这样处理的,在解除映射的时候检查了COW状态和页表的脏位(dirty bit),如下图所示:

作者在代码中增加了一个COW的标识来表示COW是否完成,设置COW位为未完成。而且,当程序要写一块内存时,必须满足以下条件:

这块内存可写或者完成COW而且脏位被设置。这样就保证了程序不会在没有COW的情况下完成写操作。

LINUX内核本地提权漏洞修复建议

使用绿盟科技的远程评估系统RSAS进行安全评估。

短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。

中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发。

长期服务:基于行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)。

绿盟科技声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

相关文章请参看

Post Views:

886

绿盟科技 linux漏洞,绿盟科技发布LINUX内核本地提权漏洞技术分析与防护方案相关推荐

  1. Dirty Pipe – Linux 内核本地提权漏洞

    一.漏洞简介 CVE-2022-0847 是存在于 Linux内核 5.8 及之后版本中的本地提权漏洞.攻击者通过利用此漏洞,可覆盖重写任意可读文件中的数据,从而可将普通权限的用户提升到特权 root ...

  2. win10注入漏洞跳出计算机,win10操作系统本地提权漏洞

    2018年8月27日,安全研究人员在github上公布了最新的win10x64版的本地提权漏洞,并且在推特上对其提权的demo进行了演示.在github上的SandboxEscaper上有着完整的漏洞 ...

  3. linux自动更新漏洞,Linux爆本地提权漏洞 请立即更新udev程序

    Linux的udev程序再爆本地提权漏洞,本地用户可以轻易获得root权限,请立即更新udev程序.(2.4内核系统不受影响) 修复方法(修复前请备份重要数据): debian用户请执行apt-get ...

  4. Linux爆本地提权漏洞 请立即更新udev程序

    Linux的udev程序再爆本地提权漏洞,本地用户可以轻易获得root权限,请立即更新udev程序.(2.4内核系统不受影响) 修复方法(修复前请备份重要数据): debian用户请执行apt-get ...

  5. sqlite字段是否存在_【漏洞预警】Linux内核存在本地提权漏洞(CVE20198912)

    更多资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn) 漏洞背景 近日,Linux git中发布一个commit补丁,该补丁对应的漏洞是一个本地 ...

  6. 【CVE-2021-4043】Linux本地提权漏洞复现

    实验步骤 文章目录 实验步骤 CVE-2021-4043 Linux本地提权漏洞 实验背景 实验环境 漏洞复现 构造payload 用gcc编译后上传到阿里云 执行payload 漏洞修复 CVE-2 ...

  7. Linux 系统安全 - 近期发现的 polkit pkexec 本地提权漏洞(CVE-2021-4034)修复方案

    时间: 20220-1-25 事件: qualys 安全研究人员披露 CVE-2021-4034 polkit pkexec 本地提权漏洞细节. 漏洞描述: polkit pkexec 中对命令行参数 ...

  8. 绿盟科技发布OpenSSL高危漏洞技术分析与防护方案 G20成员国美国、中国、德国受影响较大...

    近日,OpenSSL官方发布了版本更新,修复了多个OpenSSL漏洞,这次更新所修复的漏洞中,有两个危害等级较高的为CVE-2016-6304和CVE-2016-6305.绿盟科技对此漏洞进行了技术分 ...

  9. 开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 7月份,一名匿名研究员向 ZDI 报告了 FreeBSD 中的一个本地提权漏洞.它位于 FreeBSD 的文件传输协议守护进程 (ft ...

最新文章

  1. android wear 兼容问题,【悲剧了】仅 1/4 安卓手机兼容 Android Wear - 爱应用
  2. C++实现有哨兵的双向循环链表
  3. 联合索引和多个单列索引选择
  4. handler post r 同一个线程的疑惑
  5. 安卓 外部存储/ExternalStorage 的使用
  6. 使用openssl生成ssl(https)证书
  7. SAP 采购订单价格确定过程
  8. MyBatis中获取对应日期的记录的mapper语句
  9. P1135 奇怪的电梯(BFS/DFS)
  10. 【Intellij Idea】设置JDK
  11. leetcode169. 多数元素
  12. java 蓝桥杯算法提高 字符串匹配(题解)
  13. jquery_ui_api中文
  14. 【安全牛学习笔记】离线密码破解
  15. “拖延症”的良方-对于追求完美,自制力差,情绪化的人很受用
  16. 旧文 2012.12.07 关于和赛扶
  17. 计算机组成原理百道必考大总结(下)
  18. JavaSE知识点(1)
  19. 2-2_Selecting_data_and_analysis_part1
  20. SpringBoot--日志配置--application.yml

热门文章

  1. html做幸运数字游戏,手把手教你1分钟算出自己的幸运数字
  2. linux 安装 vundle
  3. LaTex 中关于字体的一些问题(针对 ubuntu 系统,中文字体)
  4. GTHE3开发记录1
  5. 质量工具大总结(建议收藏备忘)
  6. 体感互动ar交互大屏设计方案
  7. 阶乘计算(Java版)
  8. C++中内置变量的初始化
  9. linux修改网卡重命名,网卡名称更改
  10. 汇编语言实验八-《汇编语言-王爽老师》