CVE-2019-12735: Vim/NeoVim modeline RCE漏洞分析

Date

vim

一. 漏洞背景

Vim和Neovim是Unix类操作系统下广泛使用的文本编辑器,其中后者的开发基于前者。 Vim/Neovim中的modeline功能可以让用户在文本文件的开头或结尾使用特定代码来控制编辑器的一些行为。这个功能被限制到仅能执行特定set指令,且有沙箱隔离,但:source!指令却可以用来绕过沙箱执行命令。

  • CVE编号: CVE-2019-12735
  • 受影响版本: Vim < 8.1.1365, Neovim < 0.3.6

二. 漏洞成因

Modeline功能会将所有含表达式的语句在沙箱中执行,可能的选项包括'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', 'statusline', 'foldtext'。 Modeline的常见格式如下:

modeline

但是source命令可以用来绕过沙箱。当使用:source!命令时,vim会从指定文件读入vimscript代码并执行:

source

Vim释出的补丁patch 8.1.1365中增加了对:source!命令的沙箱环境判断,拒绝在沙箱中执行。

patch

也就是说在patch 8 …

View comments.

more ...