A Vim biztonsági rése, amely rosszindulatú fájl megnyitásakor kódfuttatáshoz vezet

Szövegszerkesztőkben életkedv и neovim megtalált sebezhetőség (CVE-2019 12735-), amely lehetővé teszi tetszőleges kód végrehajtását egy speciálisan kialakított fájl megnyitásakor. A probléma akkor jelentkezik, ha az alapértelmezett modellezési mód („:set modeline”) aktív, amely lehetővé teszi szerkesztési beállítások megadását a feldolgozott fájlban. A sebezhetőség javítása a kiadásokban
Vim 8.1.1365 и Neovim 0.3.6.

Csak korlátozott számú opció telepíthető a Modeline segítségével. Ha egy kifejezést opcióértékként adunk meg, akkor az sandbox módban kerül végrehajtásra, ami csak a legegyszerűbb biztonságos műveleteket teszi lehetővé. Ebben az esetben az érvényes parancs tartalmazza a „:source” parancsot, amelyben használhatja a „!” módosítót. tetszőleges parancsok futtatásához a megadott fájlból. Így a kód végrehajtásához elegendő egy olyan konstrukciót feltüntetni a modelline sorban, mint például: "set foldexpr=execute('\:source! some_file'):". A Neovimban az execute hívása tilos, de az assert_fails használható helyette.

Például az „uname -a” parancs futtatásához egyszerűen nyisson meg egy fájlt a Vim vagy Neovim alkalmazásban, amelynek első vagy utolsó sora a következő:

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

Cég „forrás! %" beolvassa a parancsokat az aktuális fájlból, és ennek megfelelően végrehajtja a ":!uname -a" parancsot. Escape szekvenciák használhatók egy adott sor elrejtésére a cat segédprogram kimenetéből. Például ebben prototípus kihasználása egy fájl megnyitásakor a vim-ben egy hálózati kapcsolat jön létre shell hozzáféréssel az áldozat rendszeréhez, de ez a fájl nem kelt gyanút, amikor a cat segédprogrammal kiadja a terminálra.

A Modeline mód aktivitását a „:set modeline?” paranccsal ellenőrizheti. A letiltásához hozzáadhatja a „set nomodeline” sort a vimrc-hez. A disztribúciókban a probléma megoldódik RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. A sérülékenység kijavítatlan marad Debian (Debianban a modeline alapértelmezés szerint le van tiltva, így a sérülékenység nem jelenik meg az alapértelmezett állapotban).

Forrás: opennet.ru

Hozzászólás