Vim ievainojamība, kas izraisa koda izpildi, atverot ļaunprātīgu failu

Teksta redaktoros spars и Neovims atrasts ievainojamība (CVE-2019-12735), kas ļauj izpildīt patvaļīgu kodu, atverot īpaši izstrādātu failu. Problēma rodas, ja ir aktīvs noklusējuma modeļa režīms (“:set modeline”), kas ļauj definēt rediģēšanas opcijas apstrādātajā failā. Laidienos fiksēta ievainojamība
Vim 8.1.1365 и Neovim 0.3.6.

Izmantojot Modeline, var instalēt tikai ierobežotu skaitu opciju. Ja izteiksme ir norādīta kā opcijas vērtība, tā tiek izpildīta smilškastes režīmā, kas ļauj veikt tikai visvienkāršākās drošās darbības. Šajā gadījumā derīgā komanda ietver komandu “:source”, kurā varat izmantot modifikatoru “!”. lai palaistu patvaļīgas komandas no norādītā faila. Tādējādi, lai izpildītu kodu, pietiek modelīnes rindā norādīt konstrukciju, piemēram, “set foldexpr=execute('\:source! some_file'):”. Programmā Neovim ir aizliegts izsaukt execute, taču tā vietā var izmantot assert_fails.

Piemēram, lai palaistu komandu “uname -a”, vienkārši atveriet failu Vim vai Neovim, kura pirmajā vai pēdējā rindā ir teikts:

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

Uzņēmums “avots! %" nolasīs komandas no pašreizējā faila un attiecīgi izpildīs ":!uname -a". Escape secības var izmantot, lai paslēptu doto rindiņu no cat utilīta izvades. Piemēram, šajā izmantot prototipu atverot failu programmā vim, tiek izveidots tīkla savienojums ar čaulas piekļuvi upura sistēmai, taču šis fails neradīs aizdomas, izvadot terminālī, izmantojot cat utilītu.

Modeļa režīma darbību var pārbaudīt ar komandu “:set modeline?”. Lai to atspējotu, vimrc varat pievienot rindu “set nomodeline”. Izplatījumos problēma ir novērsta RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Ievainojamība joprojām nav novērsta Debian (Debian modeline pēc noklusējuma ir atspējota, tāpēc ievainojamība neparādās noklusējuma stāvoklī).

Avots: opennet.ru

Pievieno komentāru