Vimin haavoittuvuus, joka johtaa koodin suorittamiseen haitallista tiedostoa avattaessa

Tekstieditoreissa puhti и neovim löytyi haavoittuvuus (CVE-2019-12735), joka sallii mielivaltaisen koodin suorittamisen, kun avataan erityisesti suunniteltu tiedosto. Ongelma ilmenee, kun oletusmallitila (“:set modeline”) on aktiivinen, jolloin voit määrittää muokkausasetukset käsitellylle tiedostolle. Haavoittuvuus korjattu julkaisuissa
Vim 8.1.1365 и Neovim 0.3.6.

Vain rajoitettu määrä vaihtoehtoja voidaan asentaa Modelinen kautta. Jos lauseke määritetään vaihtoehdon arvoksi, se suoritetaan hiekkalaatikkotilassa, joka sallii vain yksinkertaisimmat turvalliset toiminnot. Tässä tapauksessa kelvollinen komento sisältää ":source"-komennon, jossa voit käyttää "!"-muuttajaa. suorittaa mielivaltaisia ​​komentoja määritetystä tiedostosta. Siten koodin suorittamiseksi riittää, että mallirivillä ilmoitetaan konstruktio, kuten "set foldexpr=execute('\:source! some_file'):". Neovimissa execute:n kutsuminen on kielletty, mutta assert_fails-komentoa voidaan käyttää sen sijaan.

Esimerkiksi "uname -a" -komennon suorittamiseksi avaa vain tiedosto Vimissä tai Neovimissa, jonka ensimmäisellä tai viimeisellä rivillä lukee:

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

Yritys "lähde! %" lukee komennot nykyisestä tiedostosta ja suorittaa vastaavasti ":!uname -a". Escape-sarjoja voidaan käyttää piilottamaan tietty rivi cat-apuohjelman tulosteelta. Esimerkiksi tässä hyödyntää prototyyppiä kun tiedosto vimissä avataan, luodaan verkkoyhteys shell-pääsyllä uhrin järjestelmään, mutta tämä tiedosto ei herätä epäilyksiä, kun se tulostetaan päätelaitteelle cat-apuohjelmalla.

Voit tarkistaa Modeline-tilan toiminnan komennolla “:set modeline?”. Voit poistaa sen käytöstä lisäämällä rivin "set nomodeline" kohtaan vimrc. Jakeluissa ongelma on korjattu RHEL, SUSE / openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Haavoittuvuus on edelleen korjaamaton Debian (Debianissa malline on oletusarvoisesti poissa käytöstä, joten haavoittuvuus ei näy oletustilassa).

Lähde: opennet.ru

Lisää kommentti