The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Уязвимость в Vim, приводящая к выполнению кода при открытии ..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]

"Уязвимость в Vim, приводящая к выполнению кода при открытии ..." +/
Сообщение от opennews (??), 12-Июн-19, 23:40 
В текстовых редакторах Vim (https://www.vim.org/) и Neovim (https://neovim.io/) найдена уязвимость (https://github.com/numirias/security/blob/master/doc/2019-06...) (CVE-2019-12735 (https://security-tracker.debian.org/tracker/CVE-2019-12735)), позволяющая выполнить произвольный код при открытии специально оформленного файла. Проблема проявляется при активности включенного по умолчанию режима modeline (":set modeline"), который позволяет определить в обрабатываемом файле опции редактирования. Уязвимость  устранена в выпусках
Vim  8.1.1365 (https://github.com/vim/vim/commit/5357552) и Neovim 0.3.6 (https://github.com/neovim/neovim/pull/10082).


Через modeline  допускается установка только ограниченного числа опций. Если в качестве значения опции указывается выражение, то оно выполняется в режиме sandbox, допускающем применение только простейших безопасных операций. При этом в число допустимых входит команда ":source", в которой можно использовать модификатор "!" для запуска произвольных команд из указанного файла. Таким образом для выполнения кода достаточно указать в строке modeline конструкцию вида "set foldexpr=execute('\:source! some_file'):". В Neovim вызов execute запрещён, но вместо него можно использовать assert_fails.


Например, для выполнения команды "uname -a" достаточно просто открыть в Vim или Neovim файл, в первой или последней строке которого указано:


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


Компанда "source! %" прочитает команды из текущего файла и,  соответственно, выполнит ":!uname -a". Для скрытия данной строки от вывода утилитой cat могут использоваться escape-последовательности. Например, в данном прототипе эксплоита (https://github.com/numirias/security/blob/master/data/2019-0...) при открытии файла в vim создаётся сетевое соединение с shell-доступом на систему жертвы, но при этом данный файл не вызовет подозрений при выводе в терминал утилитой cat.


Проверить активность режима modeline можно командой ":set modeline?". Для отключения в  vimrc можно добавить строку "set nomodeline". В дистрибутивах проблема устранена в RHEL (https://access.redhat.com/security/cve/cve-2019-12735), SUSE/openSUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2019-12735), Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=1718315), FreeBSD (https://www.freshports.org/editors/vim/), Ubuntu (https://usn.ubuntu.com/4016-1/)  и Arch Linux (https://security.archlinux.org/CVE-2019-12735). Уязвимость остаётся неисправленной в  Debian (https://security-tracker.debian.org/tracker/CVE-2019-12735).

URL: https://nvd.nist.gov/vuln/detail/CVE-2019-12735
Новость: https://www.opennet.me/opennews/art.shtml?num=50857

Ответить | Правка | Cообщить модератору

Оглавление
Уязвимость в Vim, приводящая к выполнению кода при открытии ..., opennews, 12-Июн-19, 23:40  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру