科技 · 新闻解读
OpenBSD“Big Fish”可本地提权至 root,但补丁早已提供
Calif 于 10 月 16 日公开了可用的 OpenBSD 7.9 本地提权链。它把数十年前的共享内存计数器溢出与其他内核缺陷串联;OpenBSD 已在 9 月发布相关修复。

安全公司 Calif 于 10 月 16 日发布完整 PoC,演示如何在 OpenBSD 7.9 上从本地低权限用户提权到 root。链条首先让一个有符号 16 位共享内存附加计数器溢出,再把竞态触发的释放后使用与另一个越界写入组合起来。
风险很真实,但边界同样重要:攻击者必须先能以本地用户身份运行代码。公开材料没有演示无需认证的远程入侵。OpenBSD 早在 PoC 公开前,就于 9 月 14 日发布勘误 018、9 月 30 日发布勘误 026。
公开利用证明了什么
Calif 称,利用会映射 127 个 System V 共享内存段并派生 259 个进程,使附加计数器越过有符号 16 位上限;随后通过竞态把错误计数变成释放后使用。
链条再利用堆布局操控与单独的越界写入修改页表状态,并覆盖可预测的内核函数指针。研究者在 KARL、SMAP 与 SMEP 开启且没有信息泄露缺陷的情况下取得 root shell。
它没有证明什么
这是本地提权。公开路径假定攻击者已经能在目标机上以低权限用户运行代码;它本身不提供面向网络或无需认证的入口。
独立报道发布时,没有 CVE,也没有在野攻击证据。这只是当时状态,不能证明公开代码出现后永远不会被利用。
修复早于 PoC
OpenBSD 7.9 的勘误 018 日期为 9 月 14 日,用于防止 shmat(4) 整数溢出;勘误 026 日期为 9 月 30 日,修复可能导致释放后使用的内核引用计数缺陷。官方条目均覆盖所有架构的源码修复。
勘误页说明 amd64、i386 与 arm64 可通过 syspatch 获取二进制更新;其他架构可能需要源码与 -stable 分支路径。OpenBSD 7.8 也在勘误 054 中获得共享内存溢出修复。
管理员怎样核验
在受支持的官方 OpenBSD 版本上,不带选项运行 syspatch 会获取、验证并安装所有缺失的二进制补丁;补丁是累积式,不能只挑一部分。-c 可列出可用补丁,-l 可列出已安装补丁。
不要只看系统版本号就推断已受保护。应核对已安装补丁、阅读命令输出,并遵循补丁给出的重启提示。若版本不受支持,或架构没有所需二进制更新,应使用项目签名源码补丁与受支持的 -stable 指引。
为什么补丁之后研究仍重要
37 年前的计数器类型只是入口。完整利用还依赖确定性的内核分配与另一个内存破坏原语。Calif 建议采用安全链表摘除、页表映射随机化、分配器随机化和编译器边界检查。
对读者而言,结论应保持克制:工作利用已经公开,补丁核查很紧迫;但不能把它写成远程接管 OpenBSD,也不能声称已有活跃攻击。
