Вразливість у Vim, що призводить до виконання коду при відкритті шкідливого файлу

У текстових редакторах Vim и Неовім знайдено вразливість (CVE-2019-12735), що дозволяє виконати довільний код під час відкриття спеціально оформленого файла. Проблема проявляється при активності включеного за умовчанням режиму modeline («: set modeline»), який дозволяє визначити в файлі, що обробляється опції редагування. Уразливість усунена у випусках
Vim 8.1.1365 и Neovim 0.3.6.

Через модельін допускається встановлення лише обмеженого числа опцій. Якщо значення опції вказується вираз, воно виконується як 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-послідовність. Наприклад, у цьому прототипі експлоїту при відкритті файлу в vim створюється мережне з'єднання з shell-доступом на систему жертви, але при цьому файл не викликає підозри при виведенні в термінал утилітою cat.

Перевірити активність режиму modeline можна командою ": set modeline?". Для відключення vimrc можна додати рядок "set nomodeline". У дистрибутивах проблема усунена в RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Вразливість залишається невиправленою в Debian (Debian modeline за замовчуванням вимкнено, тому в стані за замовчуванням вразливість не виявляється).

Джерело: opennet.ru

Додати коментар або відгук