CVE-2019-12735 在Vim或Neovim Editor中打开特制文件可能会危及您的Linux系统
华盟君引言“对于Linux用户来说,坏消息是,CVE-2019-12735跟踪到的一个缺陷允许通过欺骗他们在Vim或Neovim编辑器中打开一个特别制作的文件来攻击他们的系统。”
安全专家Armin Razmjou最近在Vim和Neovim命令行文本编辑应用程序中发现了一个严重的漏洞(CVE-2019-12735)。
该漏洞被跟踪为CVE-2019-12735,属于任意操作系统命令执行漏洞。Vim和Neovim编辑应用程序都预装在Linux发行版中。
8.1.1365之前的Vim和0.3.6之前的Neovim很容易通过modeline打开一个特别设计的文本文件来执行任意代码。专家发布的安全建议写道。
Vim是一个高度可配置的文本编辑器,用于高效地创建和更改任何类型的文本,包括文档和脚本。
Neovim的源代码比Vim少30%,它的目标是在不损害Vim的传统角色和增强用户体验的情况下启用新的应用程序
该漏洞影响Vim编辑器处理“modelines”选项的方式。modeline特性允许用户在文件的开始或结束附近指定自定义编辑器选项(例如/* vim: set textwidth=80 tabstop=8: */)。默认情况下启用该特性,并将其应用于所有文件类型。
modeline中只允许一个选项子集,如果一个表达式包含在选项值中,那么它将在沙箱中执行。
Razmjou解释说,可以构造一个modeline来在沙箱之外执行代码。
“然而,:源!砰的一声命令修饰符)可以用来绕过沙箱。它读取并执行给定文件中的命令,就像手动输入一样,在沙箱离开后运行它们。”专家继续说。
专家证明,通过诱骗受害者使用Vim或Neovim打开一个特别制作的文件,可以在其Linux系统上秘密执行命令,并远程接管它。
Razmjou向公众发布了两个概念验证漏洞,其中一个允许远程攻击者访问反向shell。
这个PoC概述了一种真实的攻击方法,在这种方法中,一旦用户打开文件,就会启动一个反向shell。为了隐藏攻击,打开文件后将立即重写。帖子继续写道。此外,当内容用cat打印时,PoC使用终端转义序列来隐藏modeline。(cat -v显示了实际内容。)
下面的视频PoC攻击:
Vim和Neovim开发团队已经发布了安全更新,以解决CVE-2019-12735漏洞、Vim补丁8.1.1365和Neovim补丁(在v0.3.6中发布)。
专家还建议:
禁用modeline特性,
禁用“modelineexpr”以禁用modeline中的表达式,
使用“securemines plugin”,这是Vim modelines的一个安全替代品。
缺陷时间线以下:
通知Vim和Neovim维护者
2019-05-23 Vim补丁发布
发布了Neovim补丁
CVE ID CVE-2019-12735已分配