IPBUF安全漏洞报告
English
CVE-2026-46483 CVSS 3.6 低危

CVE-2026-46483 Vim命令注入漏洞

披露日期: 2026-05-15

漏洞信息

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

相关标签

命令注入VimRCECVSS-3.6

漏洞概述

Vim是一款广泛使用的开源命令行文本编辑器。在9.2.0479版本之前,该软件在Unix-like系统上处理.tgz归档文件时存在命令注入漏洞。漏洞位于runtime/autoload/tar.vim的tar#Vimuntar()函数中,该函数在构建:!gunzip和:!gzip -d命令时,使用了不带{special}标志的shellescape(tartail)。这允许攻击者利用精心制作的归档文件名触发Vim cmdline-special扩展,从而在用户上下文中执行任意shell命令。

技术细节

该漏洞源于Vim的tar插件在处理压缩包时的逻辑缺陷,具体位于`runtime/autoload/tar.vim`文件的`tar#Vimuntar()`函数。当用户在Vim中打开一个`.tgz`文件时,Vim会自动调用该函数进行解压操作。在构建解压命令(如`:!gunzip`)的过程中,代码使用了`shellescape()`函数对文件名参数进行转义,但未启用`{special}`参数。在Vim脚本中,`{special}`参数用于对`!`、`%`、`#`等具有特殊意义的字符进行额外转义。由于缺少此标志,文件名中包含的特殊字符(如`$()`反引号等)不会被正确转义,而是被Vim的cmdline解析器解释为特殊扩展。因此,攻击者可以通过构造包含Shell命令的文件名,使得Vim在执行解压命令时连带执行攻击者指定的任意代码。

攻击链分析

STEP 1
制作恶意文件
攻击者创建一个包含恶意Shell命令的.tgz文件名,例如'$(command).tgz'。
STEP 2
诱导受害者打开
攻击者将该恶意文件发送给受害者,并诱导其在受影响的Vim版本中打开该文件。
STEP 3
触发漏洞
当Vim打开文件时,自动调用tar#Vimuntar()函数尝试解压,并构建包含恶意文件名的Shell命令。
STEP 4
执行命令
由于未正确转义,文件名中的特殊字符被Shell解析,导致恶意命令在受害者的用户上下文中执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # PoC for CVE-2026-46483 import os # The exploit relies on a crafted filename that includes a shell command substitution # When Vim opens this file, the tar plugin executes: gunzip <filename> # Without proper escaping, the shell command inside the filename is executed. malicious_filename = "$(touch /tmp/vim_cve_2026_46483_pwned).tgz" with open(malicious_filename, 'w') as f: f.write("Malicious content inside.") print(f"Created file: {malicious_filename}") print("Open this file with vulnerable Vim to exploit.")

影响范围

Vim < 9.2.0479

防御指南

临时缓解措施
如果无法立即升级,用户应避免在Vim中直接打开不受信任的.tgz压缩包,或者可以通过修改配置暂时禁用Vim的内置tar插件功能,以防止自动解压处理。

参考链接

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