大鱼:OpenBSD 里潜伏 37 年的内核漏洞 — Hacker News 中文摘要
来源:calif.io — 74 分 · by rs_rs_rs_rs_rs
📋 概述
安全公司 Calif 披露如何利用一个可追溯到 37 年前原始 BSD 源码的整数溢出,在开启 KARL、SMAP、SMEP 的 OpenBSD 上本地提权到 root,而且不需要信息泄露漏洞。根因是共享内存附着计数器被定义为有符号 16 位短整型,反复 fork 可以把它推过 32767 上限回绕成负数,进而造成 use-after-free 竞态,再叠加内核里的另一处越界写。OpenBSD 已在 errata 026 与 018 中修复。
🔑 核心要点
- 漏洞根因是共享内存附着计数器被定义为有符号 16 位短整型,可回溯到约 37 年前的原始 BSD 源码。
- 重复 fork 能把计数推过 32767 上限并回绕为负数。
- 整条利用链在开启 KARL / SMAP / SMEP 的情况下拿到本地 root,且不使用信息泄露漏洞。
- 利用过程包括映射 127 个 SysV 共享内存段、fork 259 个进程把计数绕到 -32643,再用 IPC_RMID 赢下竞态。
- 修复分别见于 OpenBSD 的 errata 026 与 errata 018。
💡 金句
Big fish. Small counter. Root shell.
👍 0
👎 0
← 返回 Hacker News 首页