Ailagbara ni Vim ti o yori si ipaniyan koodu nigba ṣiṣi faili irira kan

Ninu awọn olootu ọrọ Mo ti wá и neovim ri ailagbara (CVE-2019-12735), eyiti ngbanilaaye koodu lainidii lati ṣiṣẹ nigba ṣiṣi faili ti a ṣe apẹrẹ pataki kan. Iṣoro naa nwaye nigbati ipo awoṣe aiyipada (": ṣeto modeline") nṣiṣẹ, eyiti o fun ọ laaye lati ṣalaye awọn aṣayan ṣiṣatunṣe ninu faili ti a ṣe ilana. Ailagbara ti o wa titi ni awọn idasilẹ
Vim 8.1.1365 и Neovim 0.3.6.

Nikan kan lopin nọmba ti awọn aṣayan le fi sori ẹrọ nipasẹ modeline. Ti ikosile ba jẹ pato bi iye aṣayan, o ti ṣiṣẹ ni ipo iyanrin, eyiti o fun laaye awọn iṣẹ ailewu ti o rọrun julọ nikan. Ni idi eyi, aṣẹ ti o wulo pẹlu aṣẹ “: orisun”, ninu eyiti o le lo oluyipada “!”. lati ṣiṣe awọn aṣẹ lainidii lati faili ti a ti sọ tẹlẹ. Nitorinaa, lati ṣiṣẹ koodu naa, o to lati tọka si laini modeline ikole bii “ṣeto foldexpr = ṣiṣẹ ('\: orisun! some_file'):”. Ni Neovim, pipe ṣiṣẹ jẹ eewọ, ṣugbọn assert_fails le ṣee lo dipo.

Fun apẹẹrẹ, lati ṣiṣẹ aṣẹ “uname-a”, ṣii ṣii faili kan ni Vim tabi Neovim ti laini akọkọ tabi ikẹhin sọ pe:

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

Ile-iṣẹ "orisun! %" yoo ka awọn aṣẹ lati faili ti o wa lọwọlọwọ ati pe yoo ṣiṣẹ ":! uname -a". Awọn ọna abayo le ṣee lo lati tọju laini ti a fun lati inu iṣẹjade nipasẹ ohun elo ologbo. Fun apẹẹrẹ, ninu eyi lo nilokulo Afọwọkọ Nigbati o ba ṣii faili kan ni vim, asopọ nẹtiwọọki kan ti ṣẹda pẹlu ikarahun ikarahun si eto olufaragba, ṣugbọn faili yii kii yoo fa ifura nigbati o ba jade si ebute nipa lilo ohun elo ologbo.

O le ṣayẹwo iṣẹ ṣiṣe ti ipo modeline pẹlu aṣẹ “: ṣeto modeline?”. Lati mu ṣiṣẹ, o le ṣafikun laini “ṣeto nomodeline” si vimrc. Ni awọn pinpin, iṣoro naa wa titi RHEL, SUSE/ṣiiSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Ailagbara si maa wa unpatched ni Debian (ni Debian modeline jẹ alaabo nipasẹ aiyipada, nitorinaa ailagbara ko han ni ipo aiyipada).

orisun: opennet.ru

Fi ọrọìwòye kun