README.md
Rendering markdown...
# 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 打开不可信文件。