Kwesbaarheid in Vim wat lei tot die uitvoering van kode wanneer 'n kwaadwillige lêer oopgemaak word

In teksredigeerders Vim и neovim gevind kwesbaarheid (CVE-2019-12735), wat toelaat dat arbitrêre kode uitgevoer word wanneer 'n spesiaal ontwerpte lêer oopgemaak word. Die probleem kom voor wanneer die verstek modeline-modus (":set modeline") aktief is, wat jou toelaat om redigeringsopsies in die verwerkte lêer te definieer. Kwesbaarheid vasgestel in vrystellings
Vim 8.1.1365 и Neovim 0.3.6.

Slegs 'n beperkte aantal opsies kan via modeline geïnstalleer word. As 'n uitdrukking as 'n opsiewaarde gespesifiseer word, word dit in sandbox-modus uitgevoer, wat slegs die eenvoudigste veilige bewerkings toelaat. In hierdie geval bevat die geldige opdrag die ":source" opdrag, waarin jy die "!" wysiger kan gebruik. om arbitrêre opdragte vanaf die gespesifiseerde lêer uit te voer. Dus, om die kode uit te voer, is dit genoeg om in die modellyn 'n konstruksie aan te dui soos "set foldexpr=execute('\:source! some_file'):". In Neovim is dit verbode om uitvoer te roep, maar assert_fails kan eerder gebruik word.

Byvoorbeeld, om die "uname -a" opdrag uit te voer, maak eenvoudig 'n lêer oop in Vim of Neovim waarvan die eerste of laaste reël sê:

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

Maatskappy "bron! %" sal die opdragte van die huidige lêer lees en dienooreenkomstig ":!uname -a" uitvoer. Ontsnap-reekse kan gebruik word om 'n gegewe lyn te versteek van uitset deur die kat-hulpprogram. Byvoorbeeld, in hierdie prototipe te ontgin wanneer 'n lêer in vim oopgemaak word, word 'n netwerkverbinding geskep met doptoegang tot die slagoffer se stelsel, maar hierdie lêer sal nie agterdog wek wanneer dit na die terminale uitgestuur word met die kat-hulpmiddel nie.

Jy kan die aktiwiteit van modeline-modus nagaan met die opdrag ":set modeline?". Om dit te deaktiveer, kan jy die reël "set nomodeline" by vimrc voeg. In verspreidings is die probleem opgelos in RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Die kwesbaarheid bly ongeklaar Debian (in Debian is modeline by verstek gedeaktiveer, so die kwesbaarheid verskyn nie in die verstektoestand nie).

Bron: opennet.ru

Voeg 'n opmerking