Vimi haavatavus, mis viib pahatahtliku faili avamisel koodi käivitamiseni

Tekstiredaktorites tarm и neovim leitud haavatavus (CVE-2019-12735), mis võimaldab spetsiaalselt loodud faili avamisel käivitada suvalise koodi. Probleem ilmneb siis, kui aktiivne on vaikerežiim (":set modeline"), mis võimaldab määratleda töödeldavas failis redigeerimissuvandeid. Väljalasetes fikseeritud haavatavus
Vim 8.1.1365 и Neovim 0.3.6.

Modelne'i kaudu saab määrata ainult piiratud arvu valikuid. Kui avaldis on määratud valiku väärtusena, siis käivitatakse see liivakastirežiimis, mis võimaldab kasutada ainult lihtsamaid ohutuid toiminguid. Samal ajal on kehtivate käskude hulgas käsk “: source”, milles saab kasutada modifikaatorit “!”. suvaliste käskude käivitamiseks määratud failist. Seega piisab koodi täitmiseks, kui määrata mudelireale selline konstruktsioon nagu "set foldexpr=execute('\:source! some_file'):". Neovim ei luba käivitamiskutset, kuid selle asemel saate kasutada assert_fails.

Näiteks käsu "uname -a" käivitamiseks avage Vimis või Neovimis fail, mille esimene või viimane rida ütleb:

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

"Allikas! %" loeb käsud praegusest failist ja käivitab vastavalt ":!uname -a". Cat-utiliit saab kasutada paojärjestusi, et peita antud string väljundist. Näiteks selles prototüüpi ära kasutada faili avamisel vimis luuakse võrguühendus shell-juurdepääsuga ohvri süsteemile, kuid see fail cat utiliidiga terminali väljastades kahtlust ei ärata.

Saate kontrollida, kas mudelirežiim on aktiivne, kasutades käsku ":set modeline?". Selle keelamiseks saate lisada vimrc-i rea "set nomodeline". Distributsioonides on probleem lahendatud RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Haavatavus jääb parandamata Debian (Debianis on modeline vaikimisi keelatud, seega haavatavus ei avaldu vaikeolekus).

Allikas: opennet.ru

Lisa kommentaar