Vim 远程代码执行漏洞(CVE-2026-34982)
本文最后更新于 2026年4月2日 中午
免责声明:
本文仅用于安全技术研究与交流,所有操作均在本地测试环境中完成,请勿在未授权的目标上进行测试。若因滥用本文技术造成任何损失或法律问题,均与作者无关。
漏洞描述
漏洞是 Vim 中两个缺陷组合形成的远程代码执行漏洞。当用户打开包含恶意 modeline 的文件时,攻击者可通过未正确限制的 tabpanel 选项注入表达式,并在沙箱环境中调用 autocmd_add() 注册自动命令。由于该函数未校验安全上下文,导致注册的自动命令可在沙箱退出后执行,从而绕过安全限制,最终实现任意命令执行。
漏洞危害
攻击者可通过构造恶意文件诱导用户使用 Vim 打开,从而在用户权限下执行任意系统命令,实现本地代码执行(RCE)。该漏洞利用门槛较低,且无需额外交互,在实际场景中可结合钓鱼文件、代码仓库投递等方式进行攻击,进而导致主机被控、敏感信息泄露或进一步横向移动。
漏洞影响版本
9.2.0 < Vim < 9.2.0272
漏洞修复
目前官方已有可更新版本,建议受影响用户升级至最新版本:
1 | |
漏洞复现
注意: 以下演示均在本地搭建的测试环境进行。
Payload 参考链接:
1 | |

在本地 Kali 环境中测试发现,Vim 9.1 版本未成功复现该漏洞,推测该漏洞主要影响 9.2 至 9.2.0272 之间的版本。

使用 docker 搭建 ubuntu,手动编译一个 v9.2.0100 的 vim。
1 | |
编译安装。
1 | |

下载漏洞利用 payload 文件,其中包含的恶意代码将在触发时执行 id 命令。
1 | |

1 | |
当使用 Vim 打开包含恶意代码的文件时即可触发命令执行。但在测试过程中发现,使用 root 用户运行 Vim 时漏洞无法复现,需在普通用户权限下执行。推测这是由于 Vim 在高权限环境下启用了额外的安全限制,对潜在危险的命令执行行为进行了拦截。
在容器创建一个普通用户 test,然后执行 Vim,发现成功执行了 id 指令。
1 | |

若想进一步利用可修改 payload 为 RCE 指令,注意: 命令包含特殊字符需进行转义。

1 | |

该漏洞可被用于钓鱼攻击场景,当目标主机存在受影响版本的 Vim 时,攻击者仅需诱导用户打开包含恶意指令的文件,即可在用户权限下触发远程代码执行。
Thanks
如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡
最后,祝您生活愉快!🌞✨