Ранливост во Vim што доведува до извршување на код при отворање на злонамерна датотека

Во уредувачите на текст vim и Неовим пронајден ранливост (CVE-2019-12735), што овозможува произволна шифра да се изврши при отворање на специјално дизајнирана датотека. Проблемот се јавува кога е активен стандардниот моделски режим („:set modeline“), кој ви овозможува да ги дефинирате опциите за уредување во обработената датотека. Поправена е ранливоста во изданија
Vim 8.1.1365 и Неовим 0.3.6.

Само ограничен број опции може да се инсталираат преку modeline. Ако изразот е наведен како вредност на опцијата, тој се извршува во режим на песок, што дозволува само наједноставните безбедни операции. Во овој случај, валидна команда ја вклучува командата „: source“, во која можете да го користите модификаторот „!“. за извршување на произволни команди од наведената датотека. Така, за да се изврши кодот, доволно е да се означи во линијата моделин конструкција како „set foldexpr=execute('\:source! some_file'):“. Во Neovim, повикувањето на извршување е забрането, но наместо тоа може да се користи assert_fails.

На пример, за да ја извршите командата „uname -a“, едноставно отворете датотека во Vim или Neovim чија прва или последна линија вели:

:!унаме -а||» vi:fen:fdm=expr:fde=assert_fails(“извор\!\ \%”):fdl=0:fdt=”

Компанијата „извор! %" ќе ги прочита командите од тековната датотека и соодветно ќе изврши „:!uname -a“. Секвенците за бегство може да се користат за да се сокрие дадена линија од излезот од страна на cat utility. На пример, во ова експлоатира прототип кога отворате датотека во vim, се создава мрежна врска со пристап до системот на жртвата, но оваа датотека нема да предизвика сомневање кога ќе излезе на терминалот користејќи ја алатката cat.

Можете да ја проверите активноста на моделниот режим со командата „:set modeline?“. За да го оневозможите, можете да ја додадете линијата „set nomodeline“ во vimrc. Кај дистрибуциите проблемот е поправен RHEL, SUSE/OPENSUSE, Fedora, FreeBSD, Ubuntu, Арх Линукс и ALT. Ранливоста останува незакрпена Debian (во Debian моделот е стандардно оневозможен, така што ранливоста не се појавува во стандардната состојба).

Извор: opennet.ru

Додадете коментар