Bregusrwydd yn Vim yn arwain at weithredu cod pan agorir ffeil faleisus

Mewn golygyddion testun Vim ΠΈ neovim dod o hyd bregusrwydd (CVE-2019-12735) sy'n caniatΓ‘u gweithredu cod mympwyol pan agorir ffeil wedi'i saernΓ―o'n arbennig. Mae'r broblem yn amlygu ei hun pan fydd y modd modeline rhagosodedig (": set modeline") yn weithredol, sy'n caniatΓ‘u ichi ddiffinio opsiynau golygu yn y ffeil wedi'i phrosesu. Bregusrwydd sefydlog mewn datganiadau
Vim 8.1.1365 ΠΈ Neovim 0.3.6.

Dim ond nifer cyfyngedig o opsiynau y gellir eu gosod trwy fodel. Os nodir mynegiant fel gwerth opsiwn, yna fe'i gweithredir yn y modd blwch tywod, sy'n caniatΓ‘u dim ond y gweithrediadau diogel symlaf i'w defnyddio. Ar yr un pryd, mae'r gorchymyn β€œ: source” ymhlith y rhai dilys, lle gallwch chi ddefnyddio'r addasydd β€œ!”. i redeg gorchmynion mympwyol o'r ffeil penodedig. Felly, i weithredu'r cod, mae'n ddigon i nodi lluniad fel "set foldexpr=execute('\:source! some_file'):" yn y llinell fodel. Nid yw Neovim yn caniatΓ‘u'r alwad gweithredu, ond gallwch ddefnyddio assert_fails yn lle hynny.

Er enghraifft, i redeg y gorchymyn "uname -a", agorwch ffeil yn Vim neu Neovim y mae ei linell gyntaf neu'r llinell olaf yn dweud:

:!uname -a||" vi:fen:fdm=expr:fde=assert_fail("ffynhonnell\!\%"):fdl=0:fdt="

Y ffynhonnell! Bydd %" yn darllen y gorchmynion o'r ffeil gyfredol ac yn gweithredu ":!uname -a" yn unol Γ’ hynny. Gall y cyfleustodau cath ddefnyddio dilyniannau dianc i guddio llinyn penodol rhag allbwn. Er enghraifft, yn hyn manteisio ar brototeip wrth agor ffeil yn vim, mae cysylltiad rhwydwaith yn cael ei greu gyda mynediad cragen i system y dioddefwr, ond ni fydd y ffeil hon yn codi amheuaeth wrth allbynnu i'r derfynell gyda'r cyfleustodau cath.

Gallwch wirio a yw'r modd modeline yn weithredol gyda'r gorchymyn ": set modeline?". Er mwyn ei analluogi, gallwch ychwanegu'r llinell "set nomodeline" i vimrc. Mewn dosbarthiadau, mae'r broblem yn sefydlog RHEL, SUS/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux ΠΈ ALT. Mae'r bregusrwydd yn parhau heb ei newid Debian (yn Debian, mae modeline yn anabl yn ddiofyn, felly nid yw'r bregusrwydd yn amlygu ei hun yn y cyflwr rhagosodedig).

Ffynhonnell: opennet.ru

Ychwanegu sylw