Vim pažeidžiamumas, dėl kurio pradedamas vykdyti kodas atidarant kenkėjišką failą

Teksto rengyklėse Vim и Neovimas rasta pažeidžiamumas (CVE-2019-12735), kuri leidžia vykdyti savavališką kodą atidarant specialiai sukurtą failą. Problema kyla, kai aktyvus numatytasis modelio režimas („:set modeline“), leidžiantis apibrėžti apdoroto failo redagavimo parinktis. Pažeidžiamumas ištaisytas leidimuose
Vim 8.1.1365 и Neovim 0.3.6.

Per „Modeline“ galima įdiegti tik ribotą parinkčių skaičių. Jei išraiška nurodoma kaip parinkties reikšmė, ji vykdoma smėlio dėžės režimu, kuris leidžia atlikti tik paprasčiausias saugias operacijas. Šiuo atveju galiojanti komanda apima komandą „:source“, kurioje galite naudoti modifikatorių „! paleisti savavališkas komandas iš nurodyto failo. Taigi, norint įvykdyti kodą, modelio eilutėje pakanka nurodyti tokią konstrukciją kaip „set foldexpr=execute('\:source! some_file'):“. Neovim programoje iškviesti execute yra draudžiama, tačiau vietoj jos galima naudoti assert_fails.

Pavyzdžiui, norėdami paleisti komandą „uname -a“, tiesiog atidarykite failą Vim arba Neovim, kurio pirmoji arba paskutinė eilutė sako:

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

Įmonė „Šaltinis! %" nuskaitys komandas iš esamo failo ir atitinkamai vykdys ":!uname -a". Pabėgimo sekos gali būti naudojamos tam, kad paslėptumėte nurodytą eilutę nuo cat programinės įrangos išvesties. Pavyzdžiui, šioje eksploatuoti prototipą atidarius failą vim, sukuriamas tinklo ryšys su apvalkalo prieiga prie aukos sistemos, tačiau šis failas nesukels įtarimų, kai išvedamas į terminalą naudojant cat programą.

Modeline režimo aktyvumą galite patikrinti su komanda „:set modeline?“. Norėdami jį išjungti, prie vimrc galite pridėti eilutę „set nomodeline“. Paskirstymuose problema išspręsta RHEL, SUSE / openSUSE, Minkšta fetrinė skrybėlė, FreeBSD, ubuntu, Arch Linux и ALT. Pažeidžiamumas lieka nepataisytas debian (Debian modeline pagal numatytuosius nustatymus yra išjungta, todėl pažeidžiamumas nerodomas numatytoje būsenoje).

Šaltinis: opennet.ru

Добавить комментарий