共享内存漏洞已存在37年,可用于获取 OpenBSD 根权限
Swati Khandelwal
Swati Khandelwal
代码卫士
2026年10月19日 19:59
江苏
去阅读
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
网络安全公司Calif发现,组合利用已存在37年之久的一个整数溢出漏洞与另一个独立的内核漏洞,可实现提权,在OpenBSD 7.9上获得root权限,绕过OpenBSD的KARL内核地址随机化及其SMAP和SMEP硬件保护。OpenBSD在9月份予以修复。
shmat(4)附加函数中的整数溢出漏洞已在勘误018中修复,并于9月14日作为可靠性修复发布。完成攻击链的引用计数释放后使用问题则单独在勘误026中修复并于9月30日作为安全修复发布。两者均可通过syspatch获取,并覆盖所有架构。OpenBSD 7.8也获得了整数溢出修复方案。该整数溢出是完整攻击链的入口点,被归类为可靠性修复,而不是安全修复。
截至发布时,两个漏洞均未分配CVE。未有证据表明这些漏洞已被用于攻击。
共享内存附加计数器shm\_nattch在可追溯到1988年的原始BSD源码中被定义为有符号16位short,最大值为32767。OpenBSD继承了该类型,且从未将其加宽。
该漏洞利用映射127个共享内存段并派生259个进程,使计数器超过最大值并回绕到−32643。随后竞争条件触发释放后使用:被破坏的引用计数导致内核释放其它进程仍在使用的内存。
另一个越界写覆盖内核中的多播成员计数器。当受影响的套接字关闭时,由此产生的递减会修改页表项,将用户内存映射切换为监管者权限可访问,从而绕过SMAP和SMEP。然后该利用覆盖可预测内核地址处的函数指针,运行自己的代码。
研究员Andrew Griffiths写道,“尽管OpenBSD的KARL会重新链接内核二进制以随机化函数和数据地址,但内核内存分配器仍是确定性的。”启动时分配器和最佳适配分配器都缺少基址随机化,因此早期启动结构,包括lo0和enc0网络接口处理程序中的函数指针,在同一硬件上多次重启后落在相同地址。该利用无需信息泄露漏洞便可实施。
除两个勘误外,Calif还提出四类加固措施:内核链表的安全解除链接(FreeBSD和NetBSD已使用)、页表自引用映射随机化、内核分配器随机化以及基于编译器的边界检查。
Calif表示其“今年早些时候”向OpenBSD报告了这些漏洞,并在GitHub平台发布了 PoC 利用代码。
代码卫士试用地址:https://sast.qianxin.com/
开源卫士试用地址:https://oss.qianxin.com/
推荐阅读
OpenBSD 修复已存在27年的 PPP 协议栈认证绕过漏洞
开源操作系统 OpenBSD 被曝四个严重的认证绕过和提权漏洞(详情)
DirtyClone: Linux 内核新漏洞,通过克隆的数据包获得根权限
原文链接
https://thehackernews.com/2026/10/researchers-demonstrate-openbsd-root.html
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 \"赞”
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论