跳到主要内容

OVS 闲着也能被本地用户提成 root:OVSwrap(CVE-2026-64531)Linux 内核提权全复盘——16 位长度字段扛不住 64KiB 的动作流、指针泄露加任意内核读

Public

在多数 Linux 环境里,Open vSwitch(OVS)是那个"装好了却常年闲置"的内核模块——不是运营商、不跑大规模虚拟网络的情况下,很少有人会主动去想它的安全问题。但 CVE-2026-64531(代号 OVSwrap)恰恰证明了:一个看似闲置的内核数据路径,也可能成为普通本地用户通往 root 的通道。这个 CVSS 7.8 的提权漏洞位于 Open vSwitch 的内核 datapath,涉及 OVS flow action 中嵌套 action 属性长度校验的缺失,公开 PoC 给出的利用链,最终能改写 /etc/sudoers 或 /etc/sudoers.d 来提升权限。

一、根因:16 位长度字段挡不住超长动作流
OVSwrap 的技术细节相当具体。Open vSwitch 的 flow action 是指导数据包如何处理的内核指令序列,由一个或多个嵌套的 action 组成。问题出在长度字段的容量设计:用于表示属性长度的 nla_len 字段只有 16 位,而部分 action stream 的规模可以超过 64KiB。当动作流的长度超过这个范围时,内核基于 nla_len 计算和校验边界就会失准,给内存损坏留下空间。这属于典型的"设计容量与实际数据规模不匹配"导致的漏洞:校验逻辑认为长度字段绝不会超出上限,而实际输入的却可以。攻击者借此构造出能让内核处理越界的 action,进而触达内核内存。

二、利用链:从指针泄露到 root
公开 PoC 展示的利用思路是一条"信息泄露 -> 任意读 -> 改写凭据"的经典提权链:先完成内核指针泄露,拿到必要的内核地址布局;利用越界读实现任意内核内存读取,定位关键结构;修改目标内核凭证数据,把权限从本地用户抬升到 root;最后通过改写 /etc/sudoers 或 /etc/sudoers.d,为后门账号授予 sudo 权限,实现持久的提权后操作。让这条链更具威胁的,是触发条件的隐蔽性。相关分析指出,即便 Open vSwitch 处于空闲、没有配置任何流转发任务,宿主机仍可能暴露在这条漏洞面前——因为它依赖的是内核数据路径的校验缺失,而不是"是否有活动流量"。换句话说,管理员以为"没在用就不受影响"的假设,在这里站不住脚。

三、影响:普通用户多一条通向 root 的路
对多用户服务器、云平台宿主、以及容器化环境而言,本地提权漏洞的直接后果,是把"攻击者已获得一个普通账户"这个初始条件,升级成"整机被完全控制"。当防线内还潜伏着恶意用户或已被攻破的低权限进程时,OVSwrap 就是那根能把权限一路撬到顶的杠杆——尤其是在具备网络命名空间或相关 CAP_NET_ADMIN 条件的系统上,触发路径会更宽。它同时也提醒一件常被忽视的事:Linux 内核的每一个"很少有人用"的子系统,都承载着完整的攻击面。安全团队在加固时,不应只盯着活跃业务,还要处理那些"装好即闲置"的组件——因为它们一旦被利用,往往会以最意想不到的方式出现在提权链上。

四、处置与缓解

  • 升级内核到包含修复的版本,这是根治手段;
  • 停用或限制 OVS 内核 datapath:在不需要 Open vSwitch 的环境,禁用相关内核模块,从源头消除攻击面;
  • 收紧触发条件:限制普通用户对网络命名空间与 CAP_NET_ADMIN 的访问,降低漏洞可触发的前提条件;
  • 排查提权痕迹:对疑似受影响主机检查 /etc/sudoers 与 sudoers.d 是否有非预期的条目、异常的权限跃迁,以及内核模块的异常加载记录。

OVSwrap 的意义,不只是又一个本地提权 CVE。它标志着一类反复出现的模式:内核子系统会因"长度字段设计过窄"这类看似不起眼的细节翻车,而这些子系统又往往因为"不常用"而逃脱常规的安全评估。对任何运行 Linux 的组织来说,把"闲置内核模块"也纳入升级与加固的视线,才是对这类漏洞最务实的回应。

Linux内核OVSwrapCVE-2026-64531Open vSwitchOVS提权漏洞分析CVEsudoers信息泄露任意内核读本地提权
0