
Nebula Security披露GhostLock(CVE-2026-43499):潜伏Linux内核15年。截图:nebusec.ai
一个藏了15年、几乎每一台Linux机器都带着的漏洞,最近被翻了出来。
它有个名字叫GhostLock,编号CVE-2026-43499。发现它的是一家叫Nebula Security的安全公司,他们把这个洞打进了谷歌的kernelCTF内核夺旗比赛,拿了92337美元的赏金。别小看这个金额,谷歌给内核漏洞的赏金是按"能干成什么"分档的,能拿到接近满额,说明这不是一个只能让机器崩一下的小毛病,而是能从一个普通账号一路打到root、拿到整台机器最高权限的那种。
更让我在意的是它藏的时间。这个洞是2011年5月、Linux2.6.39版本引入的,一直到2026年4月才被修掉。中间15年,无数双眼睛看过这块代码,各种自动化扫描工具跑过,愣是没人揪出来。
先把"用了已经释放的内存"讲明白
GhostLock属于一类叫UAF(use-after-free,用已释放内存)的漏洞。这词听着玄,其实道理很土。
你把内存想成酒店房间。程序要用一块内存,就相当于开了个房;用完了,把房退掉(free),钥匙理论上就作废了。UAF的意思是:房退了,可你手里还攥着那把旧钥匙,而且还真能拿它开门进屋。问题是,你退房之后,前台早把这间房分给别人了,屋里的东西全换了。你还照着记忆里的样子在屋里翻东西、放东西,翻到的是别人的行李,放进去的是你的私货。对操作系统来说,这一进一出,就是灾难的开始——攻击者可以精心布置好新住客带进屋的东西,等你这把旧钥匙一进门,就被牵着鼻子走,最后交出机器的控制权。
GhostLock特殊的地方在于,这块被反复利用的内存是在"栈"上(stack,程序临时存放数据的快进快出区域)。栈上的UAF更难利用,也更难被发现,因为它涉及线程执行的时机,稍纵即逝。

栈上的use-after-free——退了房还攥着旧钥匙进屋,正是这类内存漏洞的写照。图:Mister rf / CC BY-SA 4.0
洞到底在哪,怎么被触发
具体位置在内核的rtmutex(实时互斥锁)子系统里,一个叫remove_waiter的清理函数。这个函数当年是给单线程收尾用的,后来被另一套逻辑借去处理不同的任务,两边对"这块内存归谁、什么时候该清"的理解对不上。
触发方式很刁钻:攻击者用三个线程、三个futex(一种线程同步机制)故意搭出一个互相等待的死锁环,逼系统检测到死锁然后回滚。回滚的时候,代码把"某个线程正在等锁"这个标记清到了错误的线程头上,结果真正在等的那个线程,手里就留了一根指向自己已经释放的栈内存的野指针——那把旧钥匙。接下来攻击者用PR_SET_MM_MAP这个系统调用往那块地方填进自己控制的数据,控制流就到手了。
为什么15年没人发现?报告里给的解释挺实在:内核自带的死锁检测工具lockdep只检查"有没有拿着锁",不检查"是谁拿着这把锁"。而触发它又需要极其精准的竞态时机,正常测试根本碰不到那个窗口。换句话说,不是没人看,是看的方式恰好绕过了它。老代码的可怕就在这——它不报错、不崩溃,安安静静躺了十五年。

本地提权加容器逃逸,让多租户云服务器成为最需要抓紧打补丁的场景。图:Midom / Wikimedia CC
影响面到底多大,要不要慌
先说范围。受影响的是从2.6.39一直到7.1之前的所有内核,唯一条件是编译时开了CONFIG_FUTEX_PI,而这是所有主流发行版的默认配置。所以"影响几乎所有Linux发行版"这句话,不算夸张。RedHat系的AlmaLinux确认8、9、10全中招,CloudLinux、TuxCare这些做内核维护的厂商也都在发补丁。这确实是个大面积的事。
但有两条边界必须说清楚,不然容易被吓过头。第一,它是本地漏洞,不是远程。攻击者得先在你机器上有一个能跑代码的普通账号,才能拿它提权到root。有人隔着网线直接打进来这种事,靠GhostLock做不到。第二,官方已经修了,2026年4月的上游补丁(commit 3bfdc63936dd)把清理逻辑改成对准真正在等锁的那个线程。修复是现成的。
所以判断也就清楚了。对普通桌面用户,你自己就是机器唯一的使用者,别人本来就没有你机器上的账号,这个洞对你的实际威胁很低——正常更新系统、把补丁打上,就够了,完全不用恐慌。真正该睡不着觉的是这几类人:跑多租户的云服务商、开放SSH给一堆人用的共享服务器、以及所有用容器的地方。因为GhostLock能从容器里逃逸到宿主机——这意味着容器那层"隔离"在它面前形同虚设,一个租户拿下自己的容器,就可能顺着这个洞摸到整台物理机,把邻居一锅端。这才是它最要命的用法。
我怎么看
有一个细节不能忽略:Nebula Security不光公布了漏洞,还放出了完整的攻击代码(PoC)。这是把双刃剑。公开PoC能逼着所有人赶紧打补丁,也等于把武器直接递到了想搞事的人手里。所以现在打补丁不是"建议",是"抓紧"——有服务器、有容器集群的,别拖到周末。
另外补一句容易漏的:这次除了主补丁,还有个配套的CVE-2026-53166修的是相邻的另一个问题,单打主补丁不够,两个得一起上。运维的朋友核对内核版本时,把这条也记上。
GhostLock最让我感慨的,其实不是它多凶,而是它多老。我们总以为开源、被无数人审过的代码就等于安全,这次它提醒了一件事:代码写得越早、跑得越稳、越没人去动,反而越可能藏着没人回头看的雷。稳定不等于干净。十五年安然无恙,不代表它一直是安全的,只代表——之前没人找而已。
资料来源:Nebula Security研究报告(nebusec.ai,2026-04)、SecurityWeek、The Hacker News、AlmaLinux/CloudLinux/TuxCare官方公告。技术细节以厂商最终发布补丁为准。
一个藏了15年的漏洞才被发现,你还相信"开源就等于安全"吗?说说你的看法。