翻页:nf_tables 中新的 Linux 漏洞及利用技术
漏洞与利用的性质
- 讨论的重点是 Linux netfilter/nf_tables(CVE-2024-1086)中的本地提权漏洞,源于 use-after-free / double-free bug。
- 该利用可将权限从非特权用户提升到 root,并可读写任意物理内存;公开的 PoC 主要将其用于获取 root。
- 该利用还包含一种 namespace 逃逸原语,可能允许从某些容器/沙箱环境中逃脱。
受影响的内核、配置与缓解措施
- 受影响的内核版本:大致为 5.14 到 6.6,但不包括特定已修补的子版本(5.15.149+、6.1.76+、6.6.15+)。
- 利用需要:
CONFIG_NF_TABLES=y(启用 nf_tables),CONFIG_USER_NS=y且允许非特权用户命名空间(例如某些发行版上的kernel.unprivileged_userns_clone = 1),- 对于 6.4–6.6,
CONFIG_INIT_ON_ALLOC_DEFAULT_ON必须为n,否则利用会失败。
- 据称,硬化选项
CONFIG_INIT_ON_FREE_DEFAULT_ON会破坏该利用,但由于性能方面的顾虑,大多数发行版并未启用它(在释放时清零)。
容器、命名空间与沙箱
- 该利用依赖命名空间中的 root 与 nf_tables 交互。
- 有观点认为 LXC 和 特权 Docker 容器可能会受影响;非特权 Docker 容器大概不会,因为它们通常无法创建用户命名空间。
- 有人指出浏览器和应用沙箱(Chrome、Electron、Flatpak/Bubblewrap)依赖用户命名空间或 suid helper,这凸显了沙箱化与内核攻击面之间的权衡。
发行版影响与修补
- 当运行存在漏洞的内核且启用了非特权命名空间时,Debian 和 Ubuntu 已确认受影响;补丁在 PoC 出现前数周就已推送。
- Ubuntu 安全公告列出了 LTS 版本的修复内核版本(例如 Focal 5.4.0-174、Jammy 5.15.0-101、Mantic 6.5.0-26)。
- 有人警告,由于与之无关的回归问题(例如 Nvidia 问题),用户可能延迟了内核更新。
利用可靠性与用户反馈
- 多位用户报告 PoC 在已修补或已加固的系统上会干净地失败;另一些用户则报告在存在漏洞的内核、VM 和 WSL 上会出现系统冻结或卡死。
- 类似“failed to detect overwritten pte… is more PTE spray needed?” 的错误信息也被报告,并被指出在某些 Ubuntu 内核上属于预期行为,因为缓解措施阻止了利用。
更广泛的争论:安全模型、伦理与难度
- 关于默认启用非特权用户命名空间存在激烈争论:一方认为它对沙箱很有价值,另一方则认为它会不断把仅 root 可用的内核 API 暴露给不受信任的代码。
- 有人认为单用户桌面从沙箱中获得的好处比严格的用户/root 隔离更多;也有人强调 root 隔离仍然重要(例如固件被攻陷的情况)。
- 伦理讨论将公开披露/CTF 奖励与向进攻性漏洞经纪人出售进行对比;一些人称赞面向社区的披露方式。
- 评论者讨论现代缓解措施(ASLR、canaries、KASLR)如何让利用更困难,但并非不可能,尤其对资金充足或技术极强的团队而言。