Chyba zabezpečení ve Vimu, která vede ke spuštění kódu při otevření škodlivého souboru

V textových editorech Elán и neovim nalezeno zranitelnost (CVE-2019-12735), který umožňuje spuštění libovolného kódu při otevření speciálně navrženého souboru. Problém nastává, když je aktivní výchozí režim modeliny („:set modeline“), který umožňuje definovat možnosti úprav ve zpracovávaném souboru. Chyba zabezpečení opravena ve vydáních
Vim 8.1.1365 и Neovim 0.3.6.

Přes modeline lze nainstalovat pouze omezený počet doplňků. Pokud je výraz zadán jako hodnota volby, provede se v režimu sandbox, který umožňuje pouze nejjednodušší bezpečné operace. V tomto případě platný příkaz obsahuje příkaz „:source“, ve kterém můžete použít modifikátor „!“. spouštět libovolné příkazy ze zadaného souboru. K provedení kódu tedy stačí v modelovém řádku označit konstrukci jako „set foldexpr=execute('\:source! some_file'):“. V Neovimu je volání execute zakázáno, ale místo toho lze použít asse_fails.

Chcete-li například spustit příkaz „uname -a“, jednoduše otevřete soubor ve Vimu nebo Neovimu, jehož první nebo poslední řádek říká:

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

Společnost „zdroj! %" přečte příkazy z aktuálního souboru a podle toho provede ":!uname -a". Únikové sekvence lze použít ke skrytí daného řádku před výstupem obslužného programu cat. Například v tomto využívat prototyp při otevření souboru ve vimu se vytvoří síťové připojení s přístupem shellu k systému oběti, ale tento soubor nevzbudí podezření při výstupu do terminálu pomocí obslužného programu cat.

Aktivitu módu modeline můžete zkontrolovat příkazem „:set modeline?“. Chcete-li to zakázat, můžete do vimrc přidat řádek „set nomodeline“. V distribucích je problém vyřešen RHEL, SUSE/openSUSE, Fedora, FreeBSD, ubuntu, Arch Linux и ALT. Chyba zabezpečení zůstává neopravena Debian (v Debianu je modeline ve výchozím nastavení zakázán, takže zranitelnost se ve výchozím stavu nezobrazuje).

Zdroj: opennet.ru

Přidat komentář