Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
kpatch-cve-2026-98432 — 适用于 AlmaLinux 和 Rocky Linux 8、9 和 10 上 CVE-2026-98432(以及 CVE-2026-99999)的 kpatch livepatch | Kitploit
工具/GitHubGitHub/nsrg-fmlorg/kpatch-cve-2026-98432
防御工具漏洞分析漏洞利用脚本与自动化实用工具与框架
GitHubnsrg-fmlorg/kpatch-cve-2026-98432

kpatch-cve-2026-98432

适用于 AlmaLinux 和 Rocky Linux 8、9 和 10 上 CVE-2026-98432(以及 CVE-2026-99999)的 kpatch livepatch

查看仓库
113天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

适用于 AlmaLinux 和 Rocky Linux 上 CVE-2026-98432 的 kpatch livepatch

日本語

Livepatch 模块,可在无需重启的情况下,在运行中的 AlmaLinux 或 Rocky Linux 8、9 或 10 主机(x86_64)上修复 CVE-2026-98432。对于同样缺少 CVE-2026-99999 修复的内核,同一模块也会一并修复该漏洞,因此无论主机内核缺少这两个漏洞中的哪一个,都只需要一个模块。

状态(2026-11-02):每个模块都已构建并完成加载测试;目前尚无任何模块发布,因此暂无可应用的内容。 接下来将进行发布,并在每个已发布模块上测试一行命令;在此之前,scripts/livepatch.sh 的表中没有任何模块,并会拒绝所有内核。

内核

684 个内核:380 个来自 AlmaLinux,304 个来自 Rocky Linux,版本从 8.3 到 10.2,列于 tools/kernels.tsv。这涵盖了其 SRPM 和 debuginfo 均位于发行版镜像(包括 vault)上的所有内核,仅限 x86_64,但 Rocky 的 5.14.0-611.41.1.el9_7 除外,其 debuginfo 不在任何镜像上。它包括 Rocky 唯一的一个 8.3 内核 4.18.0-240.22.1.el8(此前的 Rocky 仓库未覆盖该内核),以及两个发行版在此前仓库之后发布的内核,直至 4.18.0-553.180.1.el8_10(AlmaLinux)、5.14.0-687.61.1.el9_8 和 6.12.0-211.69.1.el10_2。AlmaLinux 10 的 x86_64_v2 变体未覆盖。

684 个内核中有 666 个同样缺少 CVE-2026-99999 的修复,其模块同时包含两者。其余 18 个已具备该修复(从 AlmaLinux 4.18.0-553.177.1.el8_10 和 Rocky 553.178.1.el8_10 起,以及两个发行版从 5.14.0-687.59.1.el9_8 和 6.12.0-211.67.1.el10_2 起),其模块仅包含 CVE-2026-98432 的更改。

测试内容

每个模块均在 CI 中构建,并于 2026-10-31 通过 scripts/livepatch.sh 在 VM 中应用到其随附内核(tools/loadtest.sh),每个发行版和次版本各运行一次,共 40 次运行;全部 684 个均输出 RESULT: PASS。在每次运行中:

  • inet_sock_destruct 和 tcp_v4_reqsk_destructor 被列为 vmlinux 的已修补函数。
  • 从设置了 IP 选项的套接字通过回环发起 2,000 个 TCP 连接,以及从原始套接字发送 2,000 个携带 IP 选项的裸 SYN,均无错误且无内核警告(tools/tcpopt.py)。这会驱动修复所更改的两个释放路径,且选项存在;没有 IP 选项时,它们仅释放 NULL。
  • 在模块包含 CVE-2026-99999 部分的情况下,它会在 vmlinux、nfnetlink_queue 和 xt_CHECKSUM 上生效(在 9 和 10 上还会在 nf_conntrack_bridge 上生效)。在 8 和 9 上(511 个内核,以及 Rocky 的 8.3),一个构造的帧被随附内核分片,并在应用模块后被丢弃。在 10 上(154 个内核),该帧在到达缺陷之前就被拒绝,因此该探测在 10 上无法说明任何问题。
  • 665 个内核拥有来自此前仓库的模块。先加载该模块,然后由新模块替换它:此前的补丁被禁用,其模块被卸载。
  • 随后模块被禁用并移除。

未测试:竞态本身。要在随附内核上展示 CVE-2026-98432 的存在以及应用模块后的消失,需要 KASAN 以及重传 SYN 与子进程释放的刻意交错;在这些 VM 中无法按需触发。也未在启用 Secure Boot 的情况下测试任何模块(模块未签名,会被拒绝),或通过 kpatch.service 在启动时加载。

移植是如何制作的

tools/mkdiffs.sh 移植某个次版本的每个内核 SRPM。它首先像 %prep 那样将 SRPM 自身的补丁应用到其 tarball(tools/prep.py):AlmaLinux 以这种方式携带自己的修复,其中包括 4.18.0-553.177.1.el8_10 中 CVE-2026-99999 的修复,而 10.2 的 6.12.0-211.69.1 是 Red Hat 的 211.56.1 tarball 加上 466 个补丁,因此针对裸 tarball 制作的移植会遗漏内核实际拥有的内容。然后对照 tools/ref/ 检查更改的行:CVE-2026-98432 的更改必须与上游一致,CVE-2026-99999 的更改在 8 或 9 上必须与 AlmaLinux 的补丁一致、在 10 上必须与上游一致,或者在内核已具备该修复的地方不存在。全部 684 个均匹配。如果树中的 kfree_rcu() 不会跳过 NULL 指针(两个指针通常都是 NULL),tools/port.py 也会停止。

8 和 9 使用 kpatch-build 构建,10 使用内核自带的 klp-build 构建;两者都构建替换补丁,这正是模块接管先前模块的方式。

CVE-2026-98432

上游修复为 torvalds/linux e3f33b0a1d89,“ipv4: free inet_opt and ireq_opt after an RCU grace period”。当 SYN 携带 IP 选项时,监听方会将这些选项保留在请求套接字(ireq_opt)上,并在不复制的情况下交给子套接字(inet_opt)。对同一请求重传的 SYN 可能在另一个 CPU 上以 SYN-ACK 应答,在 RCU 下读取这些选项,而与此同时子套接字被关闭,inet_sock_destruct() 用普通的 kfree() 释放它们:造成释放后使用。请求套接字迁移在 tcp_v4_reqsk_destructor() 中也有同样的问题。修复方案是用 kfree_rcu() 释放这两个指针。

两个发行版都尚未发布该修复:2026-10-27 时,AlmaLinux 和 Rocky Linux 8、9 和 10 的最新内核均未在其变更日志中提及该 CVE,且 4.18.0-305.3.1.el8_4、4.18.0-553.179.1.el8_10、5.14.0-687.61.1.el9_8 和 6.12.0-211.68.1.el10_2 的源码仍用 kfree() 释放这两个指针。

CVE-2026-99999

较早修复,各发行版分别由 nsrg-fmlorg/kpatch-alma-cve-2026-99999 和 nsrg-fmlorg/kpatch-rocky-cve-2026-99999 处理。两个发行版现在都发布包含该修复的内核,从 4.18.0-553.177.1.el8_10(AlmaLinux)或 553.178.1.el8_10(Rocky)、 5.14.0-687.59.1.el9_8 和 6.12.0-211.67.1.el10_2 起。若某内核缺少该修复,本仓库的模块会携带与先前模块相同的更改,并替换已加载的先前模块(在上述每个拥有先前模块的 665 个内核上均已测试)。

布局

路径说明
build.sh在发行版的容器内为单个内核构建模块
tools/kernels.tsvCI 构建的内核:发行版、次版本、内核版本
tools/select-kernels.py一次 CI 运行选取其中哪些
tools/mkdiffs.sh为某个次版本的所有内核生成移植,并对照 tools/ref/ 检查
tools/prep.py在移植前,像 %prep 那样将 SRPM 自带的补丁应用到其 tarball
tools/port.py更改本身,应用于内核树
tools/kpatchify.py将移植转换为送入 kpatch-build 的形式
tools/klp-overlay.sh、tools/klp-overlay-lds.py、tools/klp-overlay/将 10.2 的 klp-build 借给 10.0 和 10.1
tools/klpsymcheck.py对照已发布内核检查 klp-build 模块的符号
tools/loadtest.sh、tools/loadtest-guest.sh、tools/loadtest-bootprep.sh、tools/loadtest-bootinfo.sh在 VM 中启动已发布内核,并应用、检查、移除模块
tools/csum-probe.sh、tools/csum-inject.py在前后探测 CVE-2026-99999
tools/tcpopt.py在存在 IP 选项的情况下,驱动 CVE-2026-98432 更改的两个释放路径
tools/doccheck.py当某文件未在两个 README 中同时列出,或链接失效时失败
scripts/livepatch.sh在主机上应用、检查并移除已发布的模块
scripts/build-local.sh在你自己的机器上构建并负载测试单个内核的模块
.github/workflows/diffs.yml为两个发行版的每个次版本运行 tools/mkdiffs.sh
.github/workflows/build.yml构建并负载测试模块
.github/workflows/docs.yml运行 tools/doccheck.py
下载工具