天融信关于Vim和Neovim (CVE-2019-12735) 任意代码执行漏洞的分析

栏目: 编程工具 · 发布时间: 5年前

内容简介:Vim和Neovim是Unix类操作系统下广泛使用的跨平台文本编辑器,其中Neovim是基于Vim开发的。Vim/Neovim中的modeline功能可以让用户在文本文件的开头或结尾使用特定代码来控制编辑器的一些行为。这个功能被限制到仅能执行特定set指令,且有沙箱隔离,但:source!指令却可以用来绕过沙箱执行命令。Modeline功能会将所有含表达式的语句在沙箱中执行,可能的选项包括’foldexpr’, ‘formatexpr’, ‘includeexpr’, ‘indentexpr’, ‘stat

一.  漏洞背景

Vim和Neovim是Unix类操作系统下广泛使用的跨平台文本编辑器,其中Neovim是基于Vim开发的。

Vim/Neovim中的modeline功能可以让用户在文本文件的开头或结尾使用特定代码来控制编辑器的一些行为。这个功能被限制到仅能执行特定set指令,且有沙箱隔离,但:source!指令却可以用来绕过沙箱执行命令。

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

二.  漏洞成因

Modeline功能会将所有含表达式的语句在沙箱中执行,可能的选项包括’foldexpr’, ‘formatexpr’, ‘includeexpr’, ‘indentexpr’, ‘statusline’和 ‘foldtext’。

Modeline的常见格式如下:

天融信关于Vim和Neovim (CVE-2019-12735) 任意代码执行漏洞的分析

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

天融信关于Vim和Neovim (CVE-2019-12735) 任意代码执行漏洞的分析

如果我们在沙箱中执行:source!命令的话,沙箱可以被绕过。在patch 8.1.1365之前,我们可以在vim modeline中的expression调用:source!来执行任意vim脚本,这一过程如上面的vim文档所说,就像你在normal模式下手动输入执行命令一样,是没有沙箱限制的。

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

天融信关于Vim和Neovim (CVE-2019-12735) 任意代码执行漏洞的分析

所以,我们可以在modeline中使用:source!命令来执行一个vim脚本:

天融信关于Vim和Neovim (CVE-2019-12735) 任意代码执行漏洞的分析

上图中使用foldexpr选项实现了表达式执行,整个modeline的作用是设置基于expression的foldmethod。

三.  漏洞利用

考虑到作为攻击者,无法事先写好要执行的vim脚本并存储在目标磁盘上,我们就无法通过:source!执行需要的命令。

为了直接执行命令,这里使用了一个技巧:

:source! %会把当前文件的内容当作vim脚本执行,所以,下图中的exec.txt实际上会被vim的:source!当作:!echo vim_pwned || garbage_string来执行,根据bash语法(执行前半句失败则执行后半句),最后执行了前半句的echo。

天融信关于Vim和Neovim (CVE-2019-12735) 任意代码执行漏洞的分析

如图,这样就实现了任意代码执行。

四.  参考资料


以上所述就是小编给大家介绍的《天融信关于Vim和Neovim (CVE-2019-12735) 任意代码执行漏洞的分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据库系统实现

数据库系统实现

加西亚-莫利纳(Hector Garcia-Molina)、Jeffrey D.Ullman、Jennifer Widom / 杨冬青、吴愈青、包小源 / 机械工业出版社 / 2010-5 / 59.00元

《数据库系统实现(第2版)》是斯坦福大学计算机科学专业数据库系列课程第二门课的教科书。书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分——存储管理器、查询处理器和事务管理器的实现技术。此外,第2版充分反映了数据管理技术的新进展,对内容进行了扩充,除了在第1版中原有的“信息集成”一章(第10章)中加入了新的内容外,还增加了两个全新的章:“数据挖掘”(第11章)和“数据......一起来看看 《数据库系统实现》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码