Vim 中打开恶意文件时导致代码执行的漏洞

在文本编辑器中 Vim的 и 新病毒 成立 漏洞 (CVE-2019-12735),它允许在打开专门设计的文件时执行任意代码。 当默认模型行模式(“:set modeline”)处于活动状态时会出现问题,该模式允许您在处理的文件中定义编辑选项。 版本中修复的漏洞
Vim 8.1.1365 и 新维姆 0.3.6.

通过 modeline 只能安装有限数量的选项。 如果将表达式指定为选项值,则会在沙箱模式下执行,该模式仅允许最简单的安全操作。 在这种情况下,有效命令包括“:source”命令,您可以在其中使用“!”修饰符。 从指定文件运行任意命令。 因此,要执行代码,只需在模型行中指示类似“setfoldexpr=execute('\:source!some_file'):”的结构即可。 在 Neovim 中,禁止调用execute,但可以使用assert_fails 代替。

例如,要运行“uname -a”命令,只需在 Vim 或 Neovim 中打开一个文件,其第一行或最后一行显示:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails(“源\!\ \%”):fdl=0:fdt=”

公司《源! %”将从当前文件中读取命令并相应地执行“:!uname -a”。 转义序列可用于隐藏 cat 实用程序输出中的给定行。 例如,在这个 开发原型 当在 vim 中打开文件时,会创建一个网络连接,并通过 shell 访问受害者的系统,但是当使用 cat 实用程序输出到终端时,该文件不会引起怀疑。

您可以使用命令“:set modeline?”检查 modeline 模式的活动。 要禁用它,您可以将“set nomodeline”行添加到 vimrc 中。 在发行版中,问题被解决在 RHEL, SUSE/开放SUSE, Fedora, FreeBSD的, Ubuntu, Arch Linux и ALT。 该漏洞仍未修补 Debian (Debian中modeline默认是禁用的,所以默认状态下不会出现该漏洞)。

来源: opennet.ru

添加评论