Зиянды файлды ашу кезінде кодты орындауға әкелетін Vim-дегі осалдық

Мәтіндік редакторларда Vim и Неовим табылды осалдық (CVE-2019-12735), бұл арнайы әзірленген файлды ашу кезінде ерікті кодты орындауға мүмкіндік береді. Мәселе өңделетін файлдағы өңдеу опцияларын анықтауға мүмкіндік беретін әдепкі модель режимі («: модельді орнату») белсенді болғанда орын алады. Шығарылымдарда осалдық бекітілді
Vim 8.1.1365 и Neovim 0.3.6.

Модель арқылы опциялардың шектеулі санын ғана орнатуға болады. Егер өрнек опция мәні ретінде көрсетілсе, ол ең қарапайым қауіпсіз әрекеттерге ғана мүмкіндік беретін құм жәшік режимінде орындалады. Бұл жағдайда жарамды пәрменге «:source» пәрмені кіреді, онда «!» модификаторын пайдалануға болады. көрсетілген файлдан ерікті пәрмендерді орындау үшін. Осылайша, кодты орындау үшін үлгі жолында «set foldexpr=execute('\:source! some_file'):" сияқты құрылымды көрсету жеткілікті. Neovim жүйесінде execute шақыруға тыйым салынады, бірақ оның орнына assert_fails қолданылуы мүмкін.

Мысалы, «unme -a» пәрменін іске қосу үшін Vim немесе Neovim ішінде бірінші немесе соңғы жолында келесідей жазылған файлды ашыңыз:

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

Компания «қайнар көзі! %" ағымдағы файлдағы пәрмендерді оқиды және сәйкесінше ":!uname -a" орындайды. Escape реттілігін мысық қызметтік бағдарламасы арқылы берілген жолды шығарудан жасыру үшін пайдалануға болады. Мысалы, осында пайдалану прототипі vim-де файлды ашқан кезде желілік қосылым жәбірленушінің жүйесіне қабықша қатынасы арқылы жасалады, бірақ бұл файл cat утилитасын пайдаланып терминалға шығарғанда күдік тудырмайды.

Модельдік режимнің әрекетін «:модельді орнату?» пәрменімен тексеруге болады. Оны өшіру үшін vimrc-ке «nomodeline орнату» жолын қосуға болады. Бөлулерде мәселе шешіледі RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Осалдық түзетілмеген күйінде қалады Debian (Debian моделінде әдепкі бойынша өшірілген, сондықтан осалдық әдепкі күйде пайда болмайды).

Ақпарат көзі: opennet.ru

пікір қалдыру