# CVE-2026-44656 - Vim Modeline path 选项命令注入漏洞 [English](./README.md)|中文 本仓库提供 **CVE-2026-44656** 的漏洞复现环境。该漏洞源于 Vim 在处理 modeline 中 `path` 选项的反引号展开表达式时存在缺陷,攻击者可利用 `:find` 命令的 Tab 补全功能触发任意命令执行。 ## 漏洞概述 - **CVE 编号**: CVE-2026-44656 - **影响范围**: Vim(modeline + `path` 选项的反引号展开) - **攻击向量**: 构造包含恶意 modeline 的文件,将 `path` 设置为包含反引号表达式。当用户通过 `:find` + Tab 触发路径补全时,表达式被求值,执行任意命令。 ## 复现步骤 ```bash # 1. 构建 Docker 镜像 docker build -t cve_2026_44656_vim . # 2. 运行容器 docker run -it cve_2026_44656_vim # 3. 在容器内打开 PoC 文件 vim poc.txt # 4. 触发漏洞 # 输入: :find # 然后按 Tab 键触发路径补全 # 5. 退出 Vim # 按 ESC,然后输入 :q 回车 # 6. 验证漏洞是否成功 ls sakana.pwn # ./eval.sh后台执行创建文件 ``` ## 文件说明 - `Dockerfile` - 基于 Debian 构建包含漏洞版本 Vim 的容器 - `poc.txt` - 包含恶意 modeline 的 PoC 文件 - `eval.sh` - 攻击载荷脚本(创建 `sakana.pwn` 作为验证) - `vimrc` - 启用 modeline 的 Vim 配置文件 - `vim/` - 存在漏洞的 Vim 源代码 ## 缓解措施 在 `vimrc` 中添加 `set nomodeline` 禁用 modeline 处理,或避免使用 modeline 打开不可信文件。