Ranjivost u Vimu koja dovodi do izvršavanja koda prilikom otvaranja zlonamjerne datoteke

U uređivačima teksta energija и neovim pronađeno ranjivost (CVE-2019-12735), koji omogućuje izvršavanje proizvoljnog koda prilikom otvaranja posebno dizajnirane datoteke. Problem se javlja kada je aktivan zadani način rada modela (“:set modeline”), koji vam omogućuje da definirate opcije uređivanja u obrađenoj datoteci. Ranjivost ispravljena u izdanjima
Vim 8.1.1365 и Neovim 0.3.6.

Samo ograničeni broj opcija može se instalirati putem modelaline. Ako je izraz naveden kao vrijednost opcije, on se izvršava u sandbox modu, koji dopušta samo najjednostavnije sigurne operacije. U ovom slučaju, važeća naredba uključuje naredbu “:source”, u kojoj možete koristiti modifikator “!”. za pokretanje proizvoljnih naredbi iz navedene datoteke. Dakle, za izvršenje koda, dovoljno je naznačiti u liniji modela konstrukciju poput “set foldexpr=execute('\:source! some_file'):". U Neovim, pozivanje execute je zabranjeno, ali assert_fails se može koristiti umjesto toga.

Na primjer, da pokrenete naredbu “uname -a”, jednostavno otvorite datoteku u Vimu ili Neovim čiji prvi ili zadnji redak kaže:

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

Tvrtka “izvor! %" će pročitati naredbe iz trenutne datoteke i sukladno tome izvršiti ":!uname -a". Izlazne sekvence mogu se koristiti za skrivanje određenog retka iz izlaza pomoćnog programa cat. Na primjer, u ovom iskoristiti prototip prilikom otvaranja datoteke u vimu, stvara se mrežna veza s pristupom ljuske žrtvinom sustavu, ali ova datoteka neće izazvati sumnju kada se ispiše na terminal pomoću uslužnog programa cat.

Možete provjeriti aktivnost modelline moda pomoću naredbe “:set modeline?”. Da biste ga onemogućili, možete dodati redak "set nomodeline" u vimrc. U distribucijama problem je riješen u RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Ranjivost ostaje nezakrpana Debian (u Debianu modeline je onemogućen prema zadanim postavkama, tako da se ranjivost ne pojavljuje u zadanom stanju).

Izvor: opennet.ru

Dodajte komentar