Në redaktorët e tekstit dhe gjet (), që mundëson ekzekutimin e kodit të rastësishëm kur hapet një skedë e veçuar. Problemi shfaqet kur është aktivizuar ndarja e paracaktuar e modeline («:set modeline»), e cila lejon përcaktimin e opsioneve të redaktimit në skedën e trajtuar. Vulnerabiliteti është rregulluar në lëshimet
dhe .
PĂ«rmes modeline lejohet vendosja e njĂ« numri tĂ« kufizuar opsionesh. NĂ«se si vlerĂ« e opsionit jepet njĂ« shprehje, ajo ekzekutohet nĂ« mĂ«nyrĂ«n sandbox, qĂ« lejon vetĂ«m operacione tĂ« thjeshta dhe tĂ« sigurta. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, midis opsioneve tĂ« lejuara pĂ«rfshihet komandĂ« «:source», ku mund tĂ« pĂ«rdoret modifikatori «!» pĂ«r tĂ« ekzekutuar komandat e rastĂ«sishme nga skeda e specifikuar. KĂ«shtu, pĂ«r tĂ« ekzekutuar kodin, mjafton tĂ« jepet nĂ« rreshtin modeline njĂ« strukturĂ« tĂ« tillĂ« si «set foldexpr=execute(â\:source! some_fileâ):». NĂ« Neovim thirrja e execute Ă«shtĂ« e ndaluar, por nĂ« vend tĂ« saj mund tĂ« pĂ«rdoret assert_fails.
Për shembull, për të ekzekutuar komandën «uname -a» mjafton thjesht të hapni në Vim ose Neovim një skedë, ku në rreshtin e parë ose të fundit është e shkruar:
:!uname -a||» vi:fen:fdm=expr:fde=assert_fails(«source\!\ \%»):fdl=0:fdt=»
Komanda «source! %» do të lexojë komandat nga skeda aktuale dhe, për pasojë, do të ekzekutojë «:!uname -a». Për të fshehur këtë rresht nga dalja e utilitarit cat mund të përdoren sekvenca escape. Për shembull, në këtë rast kur hapet skeda në vim krijohet një lidhje rrjeti me akses në shell në sistemin e viktimës, por kjo skedë nuk do të ngjallë dyshime gjatë daljes në terminal nga utilitari cat.
Të kontrolloni aktivizimin e modës modeline mund të bëni me komandën «:set modeline?». Për ta çaktivizuar në vimrc mund të shtoni rreshtin «set nomodeline». Në shpërndarjet e problemit është rregulluar në , , , , , dhe . Vulnerabiliteti mbetet i papërmirësuar në (në Debian modeline është çaktivizuar për parazgjedhje, kështu që në gjendjen e tij fillestare, vulnerabiliteti nuk shfaqet).
Burimi: opennet.ru
