Linux通用LInux高危漏洞(CVE-2024-1086)修复案例

一、漏洞描述

2024年3月28日,监 Linux kernel权限提升漏洞(CVE-2024-1086)的PoC/EXP在互联网上公开,该漏洞的CVSS评分为7.8,目前漏洞细节已经公开披露,美国网络安全与基础设施安全局(CISA)6月1日也更新了其已知漏洞(KEV)目录,要求联邦机构在 2024 年 6 月 20 日之前打上补丁,修复追踪编号为 CVE-2024-1086 的 Linux 内核权限提升漏洞。CVE-2024-1086 是一个高危 use-after-free 漏洞,于 2024 年 1 月 31 日首次披露,存在于 netfilter: nf_tables 组件中,相关漏洞代码于 2014 年 2 月的一项提交并入。攻击者可利用该漏洞可在本地进行提权操作,最高可获取目标服务器的root管理权限。该漏洞于2024年3月28日被公开披露,并在互联网上出现了相关的概念验证(PoC)和攻击工具。由于该漏洞的公开性,攻击者可能会利用这个漏洞进行恶意攻击,因此建议尽快采取修复措施。

漏洞原理:Linux内核版本v5.14 – v6.6的netfilter 子系统nf_tables组件中存在释放后使用漏洞,由于在nft_verdict_init()函数中,允许正值作为hook判决中的丢弃错误,因此当 “nf_hook_slow ()” 函数在NF_DROP一起发出类似于NF_ACCEPT的丢弃错误时,nf_hook_slow()函数可能会导致双重释放漏洞,本地低权限威胁者可利用该漏洞将权限提升为root。Netfilter 是 Linux 内核提供的一个框架,允许进行各种与网络有关的操作,如数据包过滤、网络地址转换(NAT)和数据包混淆。

影响范围: 该漏洞影响了使用Linux内核版本v5.14 – v6.6 版本(不包括分支修补版本 v5.15.149、v6.1.76和v6.6.15)的大多数Linux系统/内核:

3.15<= Linux kernel < 6.1.76
5.2<= Linux kernel < 6.6.15
6.7<= Linux kernel < 6.7.3
6.8:rc1 = Linux kernel

修复建议:

  • 升级Linux内核版本修复漏洞。Linux 多个稳定版目前已经修复,参考如下:
    v5.4.269 及更高版本;v5.10.210 及更高版本;v6.6.15 及更高版本;v4.19.307 及更高版本;v6.1.76 及更高版本;v5.15.149 及更高版本;v6.7.3 及更高版本
  • 若相关用户暂时无法进行更新,如果业务不需要,可以通过阻止加载受影响的 netfilter (nf_tables) 内核模块来缓解。
  • 如果无法禁用该模块,可在非容器化部署中,对用户命名空间进行限制。

在这里插入图片描述
关联资源:Notselwyn公告、nftables

二、复现验证及修复

1、漏洞复现过程(来源Github)

在这里插入图片描述

2、复现脚本

复现脚本exploit可检测内核v5.14 到(including) v6.6版,完成权限提升复现,但不包括v5.15.149>, v6.1.76>, v6.6.15>这些分支,它们已经完成补丁修复;

git clone https://github.com/Notselwyn/CVE-2024-1086 Cloning into 'CVE-2024-1086'...
remote: Enumerating objects: 2196, done.
remote: Counting objects: 100% (169/169), done.
remote: Compressing objects: 100% (88/88), done.
remote: Total 2196 (delta 87), reused 158 (delta 77), pack-reused 2027
Receiving objects: 100% (2196/2196), 2.10 MiB | 4.42 MiB/s, done.
Resolving deltas: 100% (762/762), done.
#安装
cd CVE-2024-1086
make  #报错
musl-gcc -I./include -I./include/linux-lts-6.1.72 -Wall -Wno-deprecated-declarations src/main.c src/env.c src/net.c src/nftnl.c src/file.c -o ./exploit -static ./lib/libnftnl.a ./lib/libmnl.a
make: musl-gcc: No such file or directory
make: *** [Makefile:25: _compile_static] Error 127
#安装
yum install musl-gcc musl-devel -y
CVE-2024-1086/exploit  #完成后会生成二进制文件./exploit  #输出如下
[ygcg@zq-fdfs-25 CVE-2024-1086]$ ./exploit 
[*] creating user namespace (CLONE_NEWUSER)...
[*] creating network namespace (CLONE_NEWNET)...
[*] setting up UID namespace...
[*] configuring localhost in namespace...
[*] setting up nftables...
[+] running normal privesc
[*] waiting for the calm before the storm...
[*] sending double free buffer packet...
[*] spraying 16000 pte's...
[*] checking 16000 sprayed pte's for overlap...
[+] confirmed double alloc PMD/PTE
[+] found possible physical kernel base: 00000006f1600000
[+] verified modprobe_path/usermodehelper_path: 00000006f2e56580 ('/sanitycheck')...
[*] overwriting path with PIDs in range 0->4194304...  
[!] verified modprobe_path address does not work... CONFIG_STATIC_USERMODEHELPER enabled? #执行完就跳出了,并未继续越权成功,可能对于内核:Linux 5.10.0-60.70.0.94.oe2203 并不管用#对于内核版本 > 6.4,还需要检查内核配置 CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y时,用该漏洞不影响
zcat /proc/config.gz|grep CONFIG_INIT_ON_ALLOC  #检查发现输出如下
\# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set
#检查LInux是否启用了CONFIG_USER_NS和CONFIG_NF_TABLES
zcat /proc/config.gz|grep CONFIG_USER_NS  #输出如下
CONFIG_USER_NS=y
zcat /proc/config.gz|grep CONFIG_NF_TABLES #输出如下
#=y:表示该功能被编译进内核中,始终可用。
#=m:表示该功能被编译为模块,可以根据需要加载或卸载。
#=n:表示该功能被禁用,不会编译进内核或作为模块。
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NF_TABLES_IPV4=y
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_TABLES_IPV6=y
CONFIG_NF_TABLES_BRIDGE=m
#启用nf_tables模块
modprobe nf_tables
#永久加载这个模块,可以将其添加到 /etc/modules-load.d/ 目录下的某个文件中:
echo nf_tables | sudo tee /etc/modules-load.d/nf_tables.conf #或写入modules.conf
#查看
lsmod|grep -i nf_tables
nf_tables             274432  25  #其中,274432:这是模块的大小,单位是字节。表示 nf_tables 模块占用了大约 274432 字节的内存空间。25表示有25个其他模块依赖于 nf_tables 模块。该行表示nf_tables 模块已加载
nfnetlink              20480  3 nf_conntrack_netlink,nf_tables
libcrc32c              16384  3 nf_conntrack,nf_nat,nf_tables

3、现场处理

现场使用的是云能的Euler V22.10 U2版 ,它基于openEuler 22.03 LTS SP2版本发布,内核版本:Linux 5.10.0-60.70.0.94.oe2203;现场用poc脚本测试并未越权成功,但是据网络相关经验表明,openEuler 22.03 LTS的内核5.10.0-60.18.0.50.oe2203.x86_64版本是可以越权成功的,案例中内核升级到了5.10.0-60.139.0.166.oe2203.x86_64,比现场版本高;现场内核验证结果如下所示:

在这里插入图片描述

#可用内核版本
yum check-update |grep kernel-*  #或yum check-update kernel,yum list available kernelkernel.x86_64                         5.10.0-136.49.0.127.10.oe2203.bclinux update    
kernel-devel.x86_64                   5.10.0-136.49.0.127.10.oe2203.bclinux update    
kernel-headers.x86_64                 5.10.0-136.49.0.127.10.oe2203.bclinux update    
kernel-tools.x86_64                   5.10.0-136.49.0.127.10.oe2203.bclinux update   
#查看可用补丁
yum search linux-kernel#非容器化部署中,可以通过将 user.max_user_namespaces 设置为 0 来禁用用户命名空间
echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf
sysctl -p /etc/sysctl.d/userns.conf
#禁止nf_tables模块
vi /etc/modprobe.d/nf_tables-blacklist.conf  #新增如下内容:
blacklist nf_tables
#验证
insmod nf_tables.ko.xz   #加载/usr/lib/modules/5.10.0-60.70.0.94.oe2203.bclinux.x86_64/kernel/net/netfilter/nf_tables.ko.xz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【UE5.3】笔记4-自定义材质蓝图

正常来说&#xff0c;我们都是拿到什么材质用什么材质&#xff0c;那么我们如何去创建自定义的材质呢&#xff1f; 首先&#xff0c;创建MyMaterials文件夹用来存放我们自制的材质&#xff1b; 然后&#xff0c;右键创建一个材质&#xff0c;起个名字&#xff0c;双击打开&am…

Linux-笔记 全志平台休眠功能初探

前言 全志平台支持的休眠功能主要包括两种模式&#xff1a;休眠模式和待机模式。这两种模式用于降低设备的功耗&#xff0c;并在需要时快速恢复工作状态。由于平台为T113&#xff0c;所以可以很方便的使用RTC来做唤醒源。唤醒源指的是能够让系统从休眠状态恢复到工作状态的信号…

【Linux】Linux基础开发工具(yum)

Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便…

不同材质的不锈钢氮气柜优缺点和使用场景分析

不锈钢氮气柜是一种用于存储对湿度敏感的物品的专用储藏设备&#xff0c;通过充入干燥的氮气来降低柜内湿度&#xff0c;保护存储物免受氧化或腐蚀。 根据不同的材质&#xff0c;不锈钢氮气柜可分为&#xff1a; 一、201不锈钢氮气柜&#xff1a; 201不锈钢因其较低的镍含量而成…

【第14章】探索新技术:如何自学SD3模型(找官方资料/精读/下载/安装/3款工作流/效果测试)ComfyUI基础入门教程

近期,也就是2024年6月12日,StabilityAI开源了最新的SD3模型的2B版本,而神奇的是,ComfyUI早在6月11号就已经适配了SD3!相比之下,SD WebUI 的更新速度却远远落后... 所以,如果想要尝试一些AI绘画领域的新技术,ComfyUI是一个非常值得投入时间学习的工具。 这节课,我们就…

防火墙虚拟系统

防火墙虚拟系统 防火墙虚拟系统的应用场景 大中型企业的网络隔离 通过防火墙的虚拟系统将网络隔离为研发部门、财经部门和行政部门。各部门之间可以根据权限互相访问&#xff0c;不同部门的管理员权限区分明确。 云计算中心的安全网关 通过配置虚拟系统&#xff0c;可让部署…

[XYCTF新生赛2024]-PWN:ptmalloc2 it‘s myheap plus解析(glibc2.35,堆中的栈迁移,orw)

查看保护 查看ida 思路&#xff1a; 泄露libc和堆地址就不多说了&#xff0c;fastbin duf也不解释了。这里主要是利用fastbin duf在environ附近创建堆块&#xff0c;泄露environ中的栈地址&#xff0c;然后就利用fastbin duf修改rbp和返回地址进行栈迁移了&#xff0c;迁移目标…

Xcode安装Simulator失败问题解决方法

Xcode安装Simulator_Runtime失败&#xff0c;安装包离线安装保姆级教程 Xcode更新之后有时候会提示要安装模拟器运行时环境&#xff0c;但是用Xcode更新会因为网络原因&#xff0c;我觉得基本上就是因为苹果服务器的连接不稳定导致的&#xff0c;更可气的是不支持断点续…

数据结构与算法笔记:高级篇 - 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?

概述 上篇文章我们讲到&#xff0c;如何用位图、布隆过滤器&#xff0c;来过滤重复数据。本章&#xff0c;我们再讲一个跟过滤相关的问题&#xff0c;如果过滤垃圾短信&#xff1f; 垃圾短信和骚扰电话&#xff0c;我想每个人都收到过吧&#xff1f;买房、贷款、投资理财、开…

Git 冲突处理指南:恢复 Git Reset

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

【Liunx-后端开发软件安装】Liunx安装FDFS并整合nginx

【Liunx-后端开发软件安装】Liunx安装nacos 文章中涉及的相关fdfs相关软件安装包请点击下载&#xff1a; https://download.csdn.net/download/weixin_49051190/89471122 一、简介 FastDFS是一个开源的轻量级分布式文件系统&#xff0c;它对文件进行管理&#xff0c;功能包括…

黑马点评06短信登录-用户请求和会话管理过程

用户请求发送&#xff1a; 用户的浏览器向服务器发送请求&#xff08;例如&#xff0c;访问网页或提交表单&#xff09;。请求头包含之前存储在浏览器中的Cookie&#xff0c;其中包括会话ID&#xff08;Session ID&#xff09;。 服务器接收请求&#xff1a; 服务器接收到用户的…

杭州代理记账报税全程托管专业实力全面指南

杭州代理记税报税服务可以为企业提供全程托管财务管理解决方案&#xff0c;确保企业的财务工作专业、高效、合规。以下是杭州代理记税报税服务全面指南&#xff1a; https://www.9733.cn/news/detail/185.html 一、代理记账报税服务的内容 基础服务&#xff1a; 每日记&#xf…

Python-井字棋

井字棋 1.设计登录界面1.1导入需要的工具包1.2窗口显示1.3登录界面图片显示1.6标签按钮输入框显示 2.登录功能实现2.1用户数据存储 2.2登录和注册2.2.1登录功能实现2.2.2注册功能实现 3.井字棋游戏3.1 导入需要的工具包3.2 窗口显示3.2 按钮标签显示3.3 棋盘设置初始状态3.4 游…

ChatUI:使用Gradio.NET为LLamaWorker快速创建大模型演示界面

Gradio.NET 是 Gradio 的.NET 移植版本。它是一个能够助力迅速搭建机器学习模型演示界面的库&#xff0c;其提供了简洁的 API&#xff0c;仅需寥寥数行代码就能创建出一个具备交互性的界面。在本篇文章中&#xff0c;我们将会阐述如何借助 Gradio.NET 为 LLamaWorker 快捷地创建…

新需求:如何实现一个ShardingSphere分库分表平台

大家好&#xff0c;目前我们正面对一个既具挑战又令人兴奋的任务——构建一套高效、稳定的数据处理系统&#xff0c;特别是一个结合了SpringBoot、ShardingSphere、MyBatisPlus和MySQL技术的综合数据分库分表平台。简单来说&#xff0c;我们要做的就是打造一个能轻松应对大数据…

企智汇软件:机电工程项目管理系统智能化管理,洞悉项目全貌!

在机电工程领域&#xff0c;项目管理的复杂性要求系统不仅要能够处理大量的数据和信息&#xff0c;还要能够提供实时的洞察和分析&#xff0c;以支持快速而明智的决策。企智汇机电工程项目管理系统正是为了满足这些需求而设计的&#xff0c;它通过一系列先进的功能&#xff0c;…

计算机专业课面试常见问题-计算机网络篇

目录 1. 计算机网络分为哪 5 层&#xff1f; 2. TCP 协议简述&#xff1f; 3. TCP 和 UDP 的区别&#xff1f;->不同的应用场景&#xff1f; 4. 从浏览器输入网址到显示页…

ES6深潜指南:解锁JavaScript类与继承的高级技巧,让您的代码更加优雅

前言 随着前端技术的迅猛发展&#xff0c;JavaScript已经成为构建现代Web应用不可或缺的编程语言。ES6&#xff08;ECMAScript 2015&#xff09;引入了许多期待已久的特性&#xff0c;其中类&#xff08;Classes&#xff09;和继承机制的引入&#xff0c;极大地增强了JavaScrip…

基于 elementUI / elementUI plus,实现 主要色(主题色)的一件换色(换肤)

一、效果图 二、方法 改变elementUI 的主要色 --el-color-primary 为自己选择的颜色&#xff0c;核心代码如下&#xff1a; // 处理主题样式 export function handleThemeStyle(theme) {document.documentElement.style.setProperty(--el-color-primary, theme) } 三、全部代…