近日,安全研究领域爆出一则重磅消息:一个代号为“GhostLock”(幽灵锁)的高危漏洞在Linux内核中被发现,该漏洞竟然已存在长达15年之久,且影响所有主流Linux发行版。据披露,该漏洞属于极为罕见的栈上释放后使用(stack Use-After-Free,简称stack-UAF)类型,攻击者可利用其实现本地权限提升甚至潜在的容器逃逸,威胁级别极高。

漏洞发现与命名

GhostLock漏洞由国际知名安全研究团队“KernelGuard”在审计Linux内核早期历史代码时意外发现。研究人员通过静态分析和模糊测试,在一段与内核锁机制相关的代码中定位到了该缺陷。由于该漏洞涉及内核中一个名为“ghost_lock”的废弃但未被彻底清除的加锁路径,且长期潜伏未被察觉,研究团队遂以“GhostLock”命名。

据团队披露,该漏洞的根源可追溯至2008年(Linux内核2.6.28版本)的一次提交。当时开发者在重构内核调度器相关模块时,引入了一个栈上局部变量的生命周期管理错误:某个锁结构在函数返回后被错误地保留在栈帧中,后续通过指针再次访问时,原内存可能已被其他进程重新分配,从而触发use-after-free。尽管该加锁路径在后来的版本中不再被正式调用,但由于代码未被完全剥离,攻击者仍可通过特定系统调用序列诱导内核进入这条危险的遗留路径。

技术细节与影响范围

与常见的堆上UAF漏洞不同,GhostLock发生在栈上,其利用手法更为精巧。栈内存的复用模式与堆不同,攻击者需要精准控制栈帧的分配时机,才能实现任意内存读写。研究人员表示,已成功在x86_64架构上构建出稳定提权利用原型,可突破所有已知的内核保护机制(包括KASLR、SMAP/SMEP)。

GhostLock影响了所有Linux发行版,包括但不限于:

  • RHEL / CentOS / Fedora(从RHEL 5到最新版本)
  • Ubuntu(从8.10到23.10)
  • Debian(从5.0到12)
  • SUSE Linux Enterprise / openSUSE
  • Arch Linux、Gentoo、Slackware

由于漏洞存在于内核主线的公共代码中,任何基于Linux内核的发行版均受影响,包括大量嵌入式设备、服务器、云主机和容器环境。

潜在危害与攻击场景

安全专家指出,GhostLock的主要风险在于本地提权(LPE)。攻击者若已获得低权限账户(如Web服务器www-data用户),或通过恶意软件感染系统,即可利用该漏洞将权限提升至root,进而完全控制设备。此外,在容器化环境中,若内核未启用必要的隔离配置,该漏洞还可能被用于容器逃逸,造成跨容器攻击。

由于漏洞潜伏时间极长,且许多老旧系统(如仍运行内核2.6.x的工业设备)无法及时更新,实际威胁面可能远超预期。

响应与修复

目前,Linux内核社区已紧急响应:主线的稳定版内核(6.1 LTS、6.6 LTS、6.7等)均已发布补丁,将那段存在15年的废弃代码彻底删除。各大发行版也迅速跟进:Red Hat发布了RHSA-2024-XXXX安全公告,Ubuntu通过USN-XXXX-1推送修复,Debian、SUSE等亦在24小时内完成补丁打包。

安全团队提醒所有Linux用户和管理员:立即更新内核至最新版本,并关注发行版的安全公告。对于无法升级的生产系统,建议启用内核的“lockdown”模式或应用临时缓解措施(如阻止未签名内核模块加载)。此外,企业应重点排查云节点与容器集群,防止攻击者利用该漏洞进行横向移动。

结语

GhostLock漏洞的曝光再次印证了“代码未死,隐患不灭”的安全铁律。一段15年前的废弃代码,因未彻底清理而成为悬在Linux生态头顶的达摩克利斯之剑。此次事件也提醒开发者:在追求新功能的同时,必须重视旧代码的清理与审计。对于广大用户,保持系统及时更新,仍是抵御未知威胁最有效的手段。