Ranljivost v Vimu, ki vodi do izvajanja kode pri odpiranju zlonamerne datoteke

V urejevalnikih besedil Vim и neovim našel ranljivost (CVE-2019-12735), ki omogoča izvajanje poljubne kode pri odpiranju posebej oblikovane datoteke. Težava se pojavi, ko je aktiven privzeti način modeliranja (»:set modeline«), ki omogoča definiranje možnosti urejanja v obdelani datoteki. Ranljivost je odpravljena v izdajah
Vim 8.1.1365 и Neovim 0.3.6.

Samo omejeno število možnosti je mogoče namestiti prek modeline. Če je izraz podan kot vrednost možnosti, se izvede v načinu peskovnika, ki omogoča le najpreprostejše varne operacije. V tem primeru veljaven ukaz vključuje ukaz “:source”, v katerem lahko uporabite modifikator “!”. za zagon poljubnih ukazov iz določene datoteke. Tako je za izvedbo kode dovolj, da v vrstici modela navedete konstrukcijo, kot je "set foldexpr=execute('\:source! some_file'):". V Neovim je klicanje execute prepovedano, vendar se namesto tega lahko uporabi assert_fails.

Če želite na primer zagnati ukaz »uname -a«, preprosto odprite datoteko v Vimu ali Neovim, katere prva ali zadnja vrstica pravi:

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

Podjetje “vir! %" bo prebral ukaze iz trenutne datoteke in ustrezno izvedel ":!uname -a". Ubežna zaporedja se lahko uporabljajo za skrivanje dane vrstice pred izhodom pripomočka cat. Na primer v tem izkoriščanje prototipa pri odpiranju datoteke v vimu se ustvari omrežna povezava z dostopom lupine do sistema žrtve, vendar ta datoteka ne bo vzbudila suma, ko bo izhodna na terminal s pripomočkom cat.

Dejavnost načina modeline lahko preverite z ukazom “:set modeline?”. Če ga želite onemogočiti, lahko v vimrc dodate vrstico »set nomodeline«. V distribucijah je težava odpravljena v RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Ranljivost ostaja nepopravljena Debian (v Debianu je modeline privzeto onemogočen, zato se ranljivost ne prikaže v privzetem stanju).

Vir: opennet.ru

Dodaj komentar