Vim-dagi zaiflik zararli fayl ochilganda kod bajarilishiga olib keladi

Matn muharrirlarida Vim и neovim topildi zaiflik (CVE-2019-12735) bu maxsus yaratilgan fayl ochilganda ixtiyoriy kodni bajarishga imkon beradi. Muammo qayta ishlangan faylda tahrirlash imkoniyatlarini aniqlash imkonini beruvchi standart model (":modelni o'rnatish") rejimi faol bo'lganda o'zini namoyon qiladi. Zaiflik versiyalarda tuzatildi
Vim 8.1.1365 и Neovim 0.3.6.

Modelin orqali faqat cheklangan miqdordagi variantlarni o'rnatish mumkin. Agar ifoda parametr qiymati sifatida ko'rsatilgan bo'lsa, u faqat eng oddiy xavfsiz operatsiyalardan foydalanishga imkon beruvchi sandbox rejimida bajariladi. Shu bilan birga, ": manba" buyrug'i to'g'ri bo'lganlar qatoriga kiradi, unda siz "!" Modifikatoridan foydalanishingiz mumkin. belgilangan fayldan ixtiyoriy buyruqlarni ishga tushirish uchun. Shunday qilib, kodni bajarish uchun model qatorida "set foldexpr=execute('\:source! some_file'):" kabi konstruktsiyani belgilash kifoya. Neovim qo'ng'iroqni bajarishga ruxsat bermaydi, lekin uning o'rniga assert_fails dan foydalanishingiz mumkin.

Masalan, "unme -a" buyrug'ini ishga tushirish uchun Vim yoki Neovim-da birinchi yoki oxirgi qatorda quyidagi faylni oching:

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

"Manba! %" joriy fayldagi buyruqlarni o'qiydi va mos ravishda ":!uname -a" ni bajaradi. Mushuk yordam dasturi berilgan satrni chiqishdan yashirish uchun qochish ketma-ketliklaridan foydalanishi mumkin. Masalan, bunda ekspluatatsiya prototipi vim-da faylni ochganda, jabrlanuvchining tizimiga qobiq kirishi bilan tarmoq ulanishi yaratiladi, ammo bu fayl mushuk yordam dasturi bilan terminalga chiqarilganda shubha tug'dirmaydi.

Modelin rejimi faol yoki yo‘qligini “:modelni o‘rnatish?” buyrug‘i bilan tekshirishingiz mumkin. Uni o'chirish uchun vimrc-ga "nomodeline o'rnatish" qatorini qo'shishingiz mumkin. Tarqatishlarda muammo hal qilinadi RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Zaiflik tuzatilmaganligicha qolmoqda Debian (Debian'da modelin sukut bo'yicha o'chirilgan, shuning uchun zaiflik standart holatda o'zini namoyon qilmaydi).

Manba: opennet.ru

a Izoh qo'shish