OpenBSD 存在一个可导致本地提权至 root 的 use-after-free 漏洞

漏洞与影响

  • CVE 描述了 OpenBSD ≤7.9 中 sys/kern/sysv_sem.c(SysV 信号量)里的一个 use-after-free,可导致本地提权(LPE)至 root。
  • 这是 sys_semget() 中在 tsleep 之后发生的上下文切换 UAF。
  • 评论者强调它很严重,但不是“远程漏洞”。
  • 讨论还涉及其是否可被沙箱进程访问;一个链接的 pledge(2) 实现表明,沙箱化的 base 守护进程通常不能使用这些系统调用。

发现与 AI 辅助审计

  • 该 bug 似乎是在 “Patch The Planet” 计划中被发现的(OpenAI 模型 + Trail of Bits),该计划用于扫描开源项目。
  • 有人推测它最初是作为一个普通 bug 被修复;直到后来 AI 工具才识别出其 LPE 潜力。这只是猜测,未被证实。
  • Patch The Planet 自身统计:Linux 24 个 LPE,FreeBSD 7 个,OpenBSD 1 个,另有许多非 LPE 问题。
  • 讨论也涉及:与资助传统安全研究相比,基于 AI 的审计是否更具成本效益。

OpenBSD 的安全记录与“宣传”

  • OpenBSD “默认安装中只有两个远程漏洞”这句口号,既被称赞为技术上准确,也被批评为选择性表述:
    • 默认安装非常精简,大多数服务都被禁用,因此真实世界中的系统并不相同。
    • 不过,精简默认配置和积极的加固措施(pledge、unveil、W^X、ASLR 等)仍被视为真正的优势。
  • 也有人认为 OpenBSD 有时会淡化或过滤它所归类为“安全 bug”的问题,部分原因是很多报告的问题被夸大或不切实际。

与 Linux/FreeBSD 的比较及代码规模

  • 多位评论者将 Linux/FreeBSD 的 bug 更多,归因于:
    • 更大的代码库和更多特性/驱动。
    • 更高的开发变动频率。
  • 讨论中引用了代码行数(LOC)比较;较少的 LOC 往往与较少的 bug 相关,但其精确的安全含义仍有争议。

本地提权的相关性

  • 一种观点认为:对于不运行不受信任代码的典型 OpenBSD 服务器部署,LPE 的重要性较低。
  • 反方认为:当 LPE 与 RCE 或供应链攻击串联时,它们就变得至关重要;它们是纵深防御的关键环节。

Rust 与内存安全讨论

  • 许多人指出 Rust 的所有权模型旨在防止 UAF,因此这种 bug 的一个直接版本大概率无法编译通过。
  • 也有人强调内核现实:
    • 很大一部分代码必须是 unsafe,尤其是在中断、DMA 和底层原语周围。
    • “安全” Rust 的安全性取决于底层 unsafe 代码的正确性。
  • 共识是:Rust 能显著减少某些类别的 bug,但不会神奇地消除内核漏洞。

OpenBSD 的设计取舍与特性

  • 一些人认为 OpenBSD 之所以只出现一个 LPE,反映了其文化、谨慎的工程实践以及有意为之的功能集。
  • 关于 OpenBSD 是否真正“精简”存在争论:
    • 有人说它出于安全和维护原因,省略了重要子系统(例如 Bluetooth、“现代”文件系统如 ZFS)。
    • 也有人指出 base system 实际上很丰富(例如 BGP 守护进程、网络工具),只是理念和范围不同。
  • 是否应该为路由器缺少 journaling/ZFS 提供支持也受到质疑;支持者则指出 FFS 是完全同步的,并反问路由器数据到底有哪些必须在断电后仍然幸存。

DNS 工具与 OpenWRT 支线

  • 另一个分支线程批评了 dnsmasq 最近的漏洞历史;有些人已经将其从系统中移除。
  • 对 OpenWRT 默认使用 dnsmasq 也提出质疑;有人建议使用 Unbound(可搭配或不搭配 NSD)作为替代,但 dnsmasq 的“一体化” DNS/DHCP/BOOTP/TFTP 角色使替换并不简单。