Осебпазирӣ дар 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 кушоед, ки сатри аввал ё охиринаш мегӯяд:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails("манбаъ\!\\%"):fdl=0:fdt="

Ширкати "манбаъ! %" фармонҳоро аз файли ҷорӣ мехонад ва мувофиқан ":!uname -a" -ро иҷро мекунад. Пасиҳамоии гурезро барои пинҳон кардани хати додашуда аз баромади утилитаи cat истифода бурдан мумкин аст. Масалан, дар ин прототипи истисмор ҳангоми кушодани файл дар vim, пайвасти шабакавӣ бо дастрасии ниҳонӣ ба системаи ҷабрдида эҷод мешавад, аммо ин файл ҳангоми баровардан ба терминал бо истифода аз утилитаи cat шубҳаро ба вуҷуд намеорад.

Шумо метавонед фаъолияти реҷаи моделиро бо фармони “: set modeline?” тафтиш кунед. Барои хомӯш кардани он, шумо метавонед сатри "set nomodeline" -ро ба vimrc илова кунед. Дар тақсимот мушкилот дар он ҳал карда мешавад RHEL, SUSE/openSUSE, Федора, FreeBSD, Ubuntu, Коғази Linux и АСТ. Осебӣ дар он бетағйир боқӣ мемонад Debian (дар Debian модели бо нобаёнӣ ғайрифаъол аст, бинобар ин осебпазирӣ дар ҳолати пешфарз пайдо намешавад).

Манбаъ: opennet.ru

Илова Эзоҳ