
0x00 前言
Vim是一款从Vi编辑器发展而来的高度可定制、跨平台的自由文本编辑器,在程序员群体中备受青睐,与Emacs并称为类Unix系统用户最喜爱的编辑器。
它诞生于20世纪80年代末,最初是Vi的模拟版本,后不断迭代升级,如今已拥有代码补全、编译及错误跳转等丰富的编程友好功能,还支持多窗口编辑、语法高亮、多级撤消等实用特性。
Vim采用独特的模态编辑设计,拥有普通模式、插入模式、命令模式三种核心模式:普通模式下可通过快捷键高效移动光标、复制粘贴、删除文本;插入模式用于输入内容;命令模式则能执行保存、退出、查找替换等操作。
0x01 漏洞描述
漏洞源于tabpanel选项缺失P_MLE标志,导致modeline可以注入%{expr}表达式而无需启用modelineexpr,从而绕过安全限制。
同时autocmd_add()函数缺少check_secure()校验,使攻击者能够在sandbox环境中注册自动命令并在退出后执行。攻击者可通过构造恶意文件诱导用户打开,在无需额外交互的情况下触发任意OS命令执行,继而获取用户权限、执行恶意操作或进一步横向移动。
0x02 CVE编号
CVE-2026-34714
0x03 影响版本
Vim < 9.2.0276
0x04 漏洞详情
POC:
vim: set tabpanel=%{os.execute("id > /tmp/test")}:使用方法,poc保存为md文件,然后使用vim打开md文件。
0x05 参考链接
https://github.com/califio/publications/blob/main/MADBugs/vim-vs-emacs-vs-claude/vim-claude-prompts.txt
https://github.com/vim/vim/security/advisories/GHSA-2gmj-rpqf-pxvh