Kwetsberens yn Vim dy't liedt ta útfiering fan koade by it iepenjen fan in kwea-aardich bestân

Yn tekstbewurkers Vim и neovim fûn kwetsberens (CVE-2019-12735), wêrtroch willekeurige koade kin wurde útfierd by it iepenjen fan in spesjaal ûntwurpen bestân. It probleem komt foar as de standert modeline-modus (": set modeline") aktyf is, wêrtroch jo bewurkingsopsjes yn 'e ferwurke triem kinne definiearje. Kwetsberens fêst yn releases
Vim 8.1.1365 и Neovim 0.3.6.

Allinich in beheind oantal opsjes kinne wurde ynstalleare fia modeline. As in útdrukking wurdt oantsjutte as in opsje wearde, it wurdt útfierd yn sandbox modus, dat makket it mooglik allinnich de ienfâldichste feilige operaasjes. Yn dit gefal omfettet it jildige kommando it kommando ": source", wêryn jo de modifier "!" om willekeurige kommando's út it opjûne bestân út te fieren. Sa, om de koade út te fieren, is it genôch om yn 'e modelline in konstruksje oan te jaan lykas "set foldexpr=execute('\:source! some_file'):". Yn Neovim is it oproppen fan útfiere ferbean, mar assert_fails kin ynstee brûkt wurde.

Om bygelyks it kommando "uname -a" út te fieren, iepenje gewoan in bestân yn Vim of Neovim wêrfan de earste of lêste rigel seit:

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

Bedriuw "boarne! %" sil de kommando's fan de aktuele triem lêze en dêrtroch ":!uname -a" útfiere. Escape-sekwinsjes kinne brûkt wurde om in opjûne rigel te ferbergjen fan útfier troch it kattenprogramma. Bygelyks, yn dizze eksploitearje prototype by it iepenjen fan in bestân yn vim, wurdt in netwurkferbining makke mei shell-tagong ta it systeem fan it slachtoffer, mar dit bestân sil gjin fertinking wekkerje by it útfieren nei it terminal mei it kattenprogramma.

Jo kinne de aktiviteit fan modeline-modus kontrolearje mei it kommando ": set modeline?". Om it út te skeakeljen, kinne jo de rigel "set nomodeline" tafoegje oan vimrc. Yn distribúsjes is it probleem fêst yn RHEL, SUSE/openSUSE, Fedora, FreeBSD, ubuntu, Arch Linux и ALT. De kwetsberens bliuwt unpatched yn Debian (yn Debian is modeline standert útskeakele, sadat de kwetsberens net yn 'e standerttastân ferskynt).

Boarne: opennet.ru

Add a comment