Уязвимост във Vim, водеща до изпълнение на код при отваряне на злонамерен файл

В текстовите редактори Vim и Neovim е открита уязвимост (CVE-2019-12735), което позволява изпълнението на произволен код при отваряне на специално форматиран файл. Проблемът се проявява при активност на включения по подразбиране режим modeline („:set modeline“), който позволява да се определят опции за редактиране в обработвания файл. Уязвимостта е отстранена в изданията
Vim 8.1.1365 и Neovim 0.3.6.

През 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-последователности. Например, в този прототип на експлоита при отваряне на файла в vim се създава мрежова връзка с shell-достъп до системата на жертвата, но при това, този файл няма да предизвика подозрения при извода в терминала на утилитата cat.

Активността на режима modeline може да се провери с командата „:set modeline?“. За деактивиране в vimrc можете да добавите следния ред „set nomodeline“. В дистрибуциите проблемът е отстранен в RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Уязвимостта остава непоправена в Debian (в Debian modeline по подразбиране е изключен, така че в състояние по подразбиране уязвимостта не се проявява).

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster