Хортой файлыг нээх үед кодыг гүйцэтгэхэд хүргэдэг Vim-ийн эмзэг байдал

Текст засварлагчдад VIM и Неовим олдсон эмзэг байдал (CVE-2019-12735), тусгайлан боловсруулсан файлыг нээх үед дурын кодыг гүйцэтгэх боломжийг олгодог. Боловсруулсан файлын засварлах сонголтыг тодорхойлох боломжийг олгодог өгөгдмөл загварчлалын горим (“:set modeline”) идэвхтэй үед асуудал үүсдэг. Хувилбаруудад эмзэг байдлыг зассан
Vim 8.1.1365 и Neovim 0.3.6.

Modeline-ээр дамжуулан зөвхөн цөөн тооны сонголтыг суулгаж болно. Хэрэв илэрхийллийг сонголтын утга болгон зааж өгсөн бол энэ нь хамгаалагдсан хязгаарлагдмал орчинд ажиллах бөгөөд энэ нь зөвхөн хамгийн энгийн аюулгүй үйлдлүүдийг хийх боломжийг олгодог. Энэ тохиолдолд хүчинтэй тушаал нь ":source" командыг агуулдаг бөгөөд үүнд та "!" Өөрчлөгчийг ашиглаж болно. заасан файлаас дурын командуудыг ажиллуулах. Иймд кодыг гүйцэтгэхийн тулд загварын мөрөнд “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=”

Компанийн "эх сурвалж! %" нь одоогийн файлын командуудыг уншиж, үүний дагуу ":!uname -a"-г гүйцэтгэнэ. Муурах дарааллыг cat хэрэглүүрийн гаралтаас өгөгдсөн мөрийг нуухад ашиглаж болно. Жишээлбэл, үүнд ашиглалтын прототип vim-д файл нээх үед хохирогчийн системд бүрхүүлийн хандалт бүхий сүлжээний холболт үүсдэг боловч энэ файл нь cat хэрэгслийг ашиглан терминал руу гарахад сэжиг төрүүлэхгүй.

Та “:set modeline?” командын тусламжтайгаар загварчлалын горимын ажиллагааг шалгаж болно. Үүнийг идэвхгүй болгохын тулд vimrc дээр "set nomodeline" мөрийг нэмж болно. Түгээлтийн хувьд асуудал шийдэгдсэн RHEL, SUSE/openSUSE, Федора, FreeBSD-ийн, Ubuntu, Arch Linux и ALT. Эмзэг байдал нь засварлаагүй хэвээр байна Debian (Debian-д загварчлал нь анхдагчаар идэвхгүй болсон тул эмзэг байдал нь анхдагч төлөвт харагдахгүй).

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх