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ćava izvršavanje proizvoljnog koda prilikom otvaranja posebno dizajnirane datoteke. Problem se javlja kada je podrazumevani režim modela (“:set modeline”) aktivan, što vam omogućava da definišete opcije uređivanja u obrađenoj datoteci. Ranjivost je ispravljena u izdanjima
Vim 8.1.1365 и Neovim 0.3.6.

Samo ograničen broj opcija može se instalirati putem modelane. Ako je izraz specificiran kao vrijednost opcije, on se izvršava u sandbox modu, koji dozvoljava 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 specificirane datoteke. Dakle, da bi se kod izvršio, dovoljno je u liniji modela naznačiti 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 biste pokrenuli naredbu “uname -a”, jednostavno otvorite datoteku u Vimu ili Neovim čiji prvi ili posljednji red kaže:

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

Kompanija “izvor! %" će pročitati komande iz tekuće datoteke i u skladu s tim izvršiti ":!uname -a". Escape sekvence se mogu koristiti za skrivanje date linije od izlaza uslužnog programa cat. Na primjer, u ovom prototip eksploatacije prilikom otvaranja datoteke u vim-u, kreira se mrežna veza sa pristupom ljuske na sistem žrtve, ali ova datoteka neće izazvati sumnju kada se izlazi na terminal pomoću uslužnog programa cat.

Možete provjeriti aktivnost modela modela pomoću naredbe “:set modeline?”. Da biste ga onemogućili, možete dodati liniju “set nomodeline” u vimrc. U distribucijama problem je riješen RHEL, SUSE/openSUSE, fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Ranjivost ostaje neotkrivena Debian (u Debian modelu je po defaultu onemogućen, tako da se ranjivost ne pojavljuje u zadanom stanju).

izvor: opennet.ru

Dodajte komentar