天融信关于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) 任意代码执行漏洞的分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

iOS面试之道

iOS面试之道

故胤道长、唐巧 / 电子工业出版社 / 2018-7 / 59.00元

《iOS面试之道》是作者将多年的工作经验和积累,结合具体面试内容总结而成的。 《iOS面试之道》共分为3部分。第1部分为面试准备,详细介绍求职中遇到的基本问题,作者根据其多年的经验,在面试流程、简历投递、复习准备方面给出了完善的参考意见和建议。第2部分为算法知识。算法几乎是各种水平的程序员都要面对的考查内容。该部分采用Swift语言重新审视了多种数据结构和算法原理,可以说是为iOS开发者量身......一起来看看 《iOS面试之道》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具