返回资讯中心
外部精选
软件工程
#开发者实时流

Ubuntu 内核曝高危 UAF 漏洞,红帽建议用 nftables 规则临时拦截

来源标题:A CVE-2026-98432 firewall rule for Ubuntu, with or without Docker

Ubuntu 26.04 的 linux 包受 CVE-2026-98432 影响,这是内核处理带 IP options 的 IPv4 TCP 连接时的释放后使用漏洞,Ubuntu 评级为 High,修复仍在进行中。红帽建议在 input hook 上用 nftables 规则丢弃带 IP options 的入站 IPv4 TCP 包以降低风险,但这不能修复内核漏洞。测试发现该规则拦不住转发到 Docker 发布端口的流量。

Hacker News 最新mceachen2026/11/2 · 2 天前12 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

CVE-2026-98432 是内核在处理带 IP options 的 IPv4 TCP 连接时出现的一处 use-after-free。Ubuntu 将其评为 High;截至 2026 年 11 月 1 日,其 tracker 仍将 Ubuntu 26.04 的 linux 包列为受影响,7.0.0-43.43 的修复正在进行中。Red Hat 的公告建议采用临时过滤器,在 input hook 上使用 nftables 规则,丢弃带有 IP options 的入站 IPv4 TCP 数据包。 这能降低暴露面,但并不能修复内核缺陷,也无法阻止所有触发方式。等你的内核包有可用修复版本时,请安装并启动修复后的内核。IP options 与普通 TCP options 是两回事,这些规则不会动后者。需要通过 TCP 使用 IPv4 options 的应用会在被过滤的路径上停止工作。 对于 Docker bridge 网络,该规则会漏掉转发到已发布端口的流量。Docker 会把这些数据包路由到容器,因此它们不经过宿主机的 input hook。在我们的测试中,一个 SYN 携带 IP options 的连接在加载 Red Hat 规则的情况下仍然到达了 Docker 已发布的端口。 限制 这些规则未覆盖、或我们未测试的情况: 你需要哪条规则 该表比较的是对带 IP options 的入站 IPv4 TCP 数据包的过滤,而非对该漏洞的完整防护。 如果启用了 UFW,且你只需要过滤投递到宿主机的流量,请把下面这行加到 /etc/ufw/before.rules 中 # End required lines 之后、任何 ACCEPT 规则之前,然后运行 sudo ufw reload。要移除时,删除该行并重新加载。该规则不过滤转发流量,无论是否涉及 Docker。 -A ufw-before-input -p tcp -m u32 --u32 "0>>24&0x0F=6:15" -m comment --comment "CVE-2026-98432" -j DROP 这条规则 该表挂接 prerouting(也能看到转发流量)和 output(过滤本机生成的包,包括宿主机到容器地址的连接)。它位于自己的表中;在我们的测试中,UFW 重新加载和 Docker 重启都没有影响它。 destroy table inet cve_2026_98432 table inet cve_2026_98432 { chain prerouting { type filter hook prerouting priority -310; policy accept; ip protocol tcp ip hdrlength > 5 counter drop comment "CVE-2026-98432" chain output { type filter hook output priority -310; policy accept; ip protocol tcp ip hdrlength > 5 counter drop comment "CVE-2026-98432" destroy table 需要 nftables 1.0.7 和内核 6.3 或更高版本,因此该表需要 Ubuntu 24.04 或更高版本。我们在 26.04 上测试过。Ubuntu 22.04 的 nftables 1.0.2 会以语法错误拒绝它。 apply-cve-2026-98432-mitigation.sh 会将其安装为 /etc/cve-2026-98432.nft,并配一个 systemd unit,在启动时于 UFW 和 Docker 之前加载它。该脚本要求 nft,并且在 nftables.service 处于活动状态时拒绝运行:包含 flush ruleset 的配置也会抹掉这个表。请确认没有其他防火墙加载器会在启动或重新加载时 flush 它。 rollback-cve-2026-98432-mitigation.sh 会在你启动修复后的内核后移除该独立表和 service。它不会移除上面的 UFW 单行规则。在用 sudo bash 运行脚本前请先阅读。SHA-256: 6c1d850a3f811f7bdaff723dc9075dce4b37b7085a71a46d40c7903054935bbe apply-cve-2026-98432-mitigation.sh 17b33db29258698e80af417b6465fcaf4a4ee68241325f2d4445ec4e2e5df4eb rollback-cve-2026-98432-mitigation.sh ufw status 不会显示它;sudo nft list table inet cve_2026_98432 会显示它及其 drop 计数器。 测试 在一台一次性 Ubuntu 26.04 VPS 上,我们用 runtest.sh 从 network namespace 向宿主机监听器和 Docker 已发布端口发送普通 HTTP 请求和带 IP options 的 HTTP 请求。它还会检查源自宿主机的连接。客户端 ipopt_client.py 使用普通 socket 并设置 IP_OPTIONS;它不是 exploit。加载该表后,普通请求得到 HTTP 200 响应,所有带 options 的请求都被丢弃,包括在 ufw reload、Docker 重启和重启系统之后。这些检查验证的是数据包过滤,而非对 exploit 的抵抗能力。 测试脚本要求监听器、容器和客户端文件按脚本头部所述准备好。它会创建一个 network namespace 和虚拟接口,并让它们保留在原处。请在一次性主机上运行,并检查结果和 drop 计数器;它不会断言通过或失败。 在测试主机上使用 network namespace 以避免上游过滤。先确认普通请求和带 options 的请求在未加缓解措施时都能连接;然后应用缓解措施,检查只有带 options 的请求失败且 drop 计数器增加。我们从外部、从家里以及从另外两台 Hetzner 服务器发出的 options 数据包,即使没有加载规则,也在到达目标前就被丢弃了,因此从外部看到超时并不能证明这条规则有效。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →