CVE-2026-46483Vim是一款广泛使用的开源命令行文本编辑器。在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在执行解压命令时连带执行攻击者指定的任意代码。