Vim-ի խոցելիությունը, որը հանգեցնում է կոդերի կատարմանը, երբ բացվում է վնասակար ֆայլ

Տեքստային խմբագրիչներում եռանդ и Նեովիմ հայտնաբերվել է խոցելիություն (CVE-2019-12735- ը), որը թույլ է տալիս կամայական կոդի գործարկումը, երբ բացվում է հատուկ մշակված ֆայլ: Խնդիրը դրսևորվում է, երբ լռելյայն մոդելային («:set modeline») ռեժիմն ակտիվ է, որը թույլ է տալիս մշակված ֆայլում սահմանել խմբագրման տարբերակներ։ Խոցելիությունը ֆիքսվել է թողարկումներում
Vim 8.1.1365 и Neovim 0.3.6.

Modeline-ի միջոցով կարող են սահմանվել միայն սահմանափակ թվով տարբերակներ: Եթե ​​արտահայտությունը նշված է որպես օպցիոնի արժեք, ապա այն կատարվում է sandbox ռեժիմում, որը թույլ է տալիս օգտագործել միայն ամենապարզ անվտանգ գործողությունները: Միևնույն ժամանակ «: source» հրամանը վավերականների թվում է, որում կարող եք օգտագործել «!» փոփոխիչը։ նշված ֆայլից կամայական հրամաններ գործարկելու համար: Այսպիսով, կոդը գործարկելու համար բավական է մոդելային տողում նշել այնպիսի կառուցվածք, ինչպիսին է «set foldexpr=execute('\:source! some_file'):»: Neovim-ը թույլ չի տալիս կատարել զանգը, բայց դրա փոխարեն կարող եք օգտագործել assert_fails-ը:

Օրինակ՝ «uname -a» հրամանը կատարելու համար պարզապես բացեք ֆայլ Vim-ում կամ Neovim-ում, որի առաջին կամ վերջին տողում ասվում է.

:!ունամ -ա||» vi:fen:fdm=expr:fde=assert_fails("աղբյուր\!\ \%"):fdl=0:fdt="

Աղբյուրը! %"-ը կկարդա հրամանները ընթացիկ ֆայլից և համապատասխանաբար կկատարի ":!uname -a"-ը: Cat utility-ը կարող է օգտագործել escape sequences՝ տվյալ տողը ելքից թաքցնելու համար: Օրինակ՝ սրա մեջ շահագործման նախատիպը երբ ֆայլը բացվում է vim-ում, ցանցային կապ է ստեղծվում զոհի համակարգին պատյանով հասանելիությամբ, բայց այս ֆայլը կասկած չի հարուցի, երբ cat utility-ով տերմինալ դուրս կբերվի:

Կարող եք ստուգել, ​​թե արդյոք մոդելի ռեժիմն ակտիվ է «:set modeline?» հրամանով։ Այն անջատելու համար կարող եք ավելացնել «set nomodeline» տողը vimrc-ում: Բաշխումներում խնդիրը շտկված է RHEL- ը, SUSE/openSUSE, Fedora, FreeBSD- ը, Ubuntu, Arch Linux- ը и ALT. Խոցելիությունը մնում է չփակված Debian (Debian-ում modeline-ը լռելյայն անջատված է, ուստի խոցելիությունը չի հայտնվում լռելյայն վիճակում):

Source: opennet.ru

Добавить комментарий