IPBUF安全漏洞报告
English
CVE-2026-44656 CVSS 5.3 中危

CVE-2026-44656 Vim命令行补全命令注入漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-44656
漏洞类型
操作系统命令注入
CVSS评分
5.3 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Vim

相关标签

Command InjectionVimModelineRCECVE-2026-44656

漏洞概述

Vim是一个广泛使用的开源命令行文本编辑器。在9.2.0435版本之前,Vim的:find命令行补全功能中存在操作系统命令注入漏洞。由于path选项缺少P_SECURE标志,攻击者可以通过modeline设置包含反引号包裹的shell命令的path选项。当用户打开受控文件并触发:find补全时,这些恶意命令将被执行,从而导致任意代码执行。该问题已在9.2.0435版本中修复。

技术细节

该漏洞的核心在于Vim对:path选项的处理不当。通常情况下,涉及执行外部命令的选项应当设置P_SECURE标志,以防止其通过modeline被修改。然而,Vim的path选项并未设置此安全标志。攻击者可以构造一个恶意文件,在文件首行或尾部的modeline中包含类似`set path=\`command\``的指令。当受害者使用Vim打开该文件时,modeline会被解析,从而将path选项设置为包含恶意shell命令的字符串。随后,如果用户在Vim中尝试使用:find命令进行文件名查找或补全(例如输入`:find file <Tab>`),Vim会展开path选项中的内容以搜索路径,在此过程中,系统会执行反引号内的shell命令。由于攻击向量为本地(AV:L)且需要用户交互(UI:R),攻击者需诱导用户打开特定文件并进行特定操作才能利用该漏洞。

攻击链分析

STEP 1
1
攻击者构造包含恶意modeline的文件,利用path选项设置反引号包裹的Shell命令。
STEP 2
2
攻击者诱导受害者使用Vim打开该恶意文件。
STEP 3
3
Vim解析文件内容,执行modeline指令,将path选项设置为包含恶意命令的字符串。
STEP 4
4
受害者在Vim中输入:find命令并尝试触发自动补全(如按下Tab键)。
STEP 5
5
Vim在处理补全时展开path选项,导致系统执行反引号内的任意Shell命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Create a malicious file named poc.txt with the following content: // vim: set path=`touch /tmp/poc_executed`: This is a harmless file. // Steps to reproduce: // 1. Open the file in vulnerable Vim: vim poc.txt // 2. Trigger the completion: :find <Tab> // 3. Check if the file /tmp/poc_executed was created.

影响范围

Vim < 9.2.0435

防御指南

临时缓解措施
对于无法立即升级的用户,建议在Vim配置文件(.vimrc)中添加`set nomodeline`指令,以禁用modeline功能,防止打开文件时自动执行选项设置。此外,用户应避免打开来源不明的文件,或者在打开不受信任的文件时使用`vim -M`(只读模式)或`vim -u NONE`(跳过配置初始化)来降低风险。在处理未知文件时,尽量不要使用:find命令进行文件名补全操作。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表