Kwetsbaarheid in Vim die leidt tot code-uitvoering bij het openen van een kwaadaardig bestand

In teksteditors Vim и neovim gevonden kwetsbaarheid (CVE-2019-12735), waarmee willekeurige code kan worden uitgevoerd bij het openen van een speciaal ontworpen bestand. Het probleem treedt op wanneer de standaard modelinemodus (“:set modeline”) actief is, waarmee u bewerkingsopties in het verwerkte bestand kunt definiëren. Kwetsbaarheid opgelost in releases
Vim 8.1.1365 и Neovim 0.3.6.

Er kunnen slechts een beperkt aantal opties via modeline worden geïnstalleerd. Als een expressie is opgegeven als een optiewaarde, wordt deze uitgevoerd in de sandboxmodus, waardoor alleen de eenvoudigste veilige bewerkingen mogelijk zijn. In dit geval bevat de geldige opdracht de opdracht “:source”, waarin u de modifier “!” kunt gebruiken. om willekeurige opdrachten uit het opgegeven bestand uit te voeren. Om de code uit te voeren, is het dus voldoende om in de modelineregel een constructie aan te geven zoals “set foldexpr=execute('\:source! some_file'):". In Neovim is het aanroepen van execute verboden, maar in plaats daarvan kan assert_fails worden gebruikt.

Om bijvoorbeeld de opdracht “uname -a” uit te voeren, opent u eenvoudigweg een bestand in Vim of Neovim waarvan de eerste of laatste regel luidt:

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

Bedrijf “bron! %" zal de opdrachten uit het huidige bestand lezen en dienovereenkomstig ":!uname -a" uitvoeren. Escape-reeksen kunnen worden gebruikt om een ​​bepaalde regel te verbergen voor uitvoer door het cat-hulpprogramma. Hierin bijvoorbeeld prototype exploiteren bij het openen van een bestand in vim wordt een netwerkverbinding gemaakt met shell-toegang tot het systeem van het slachtoffer, maar dit bestand zal geen argwaan wekken wanneer het naar de terminal wordt uitgevoerd met behulp van het cat-hulpprogramma.

U kunt de activiteit van de modelinemodus controleren met het commando “:set modeline?”. Om het uit te schakelen, kun je de regel “set nomodeline” toevoegen aan vimrc. In distributies is het probleem opgelost RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. De kwetsbaarheid blijft ongepatcht Debian (in Debian is modeline standaard uitgeschakeld, dus de kwetsbaarheid verschijnt niet in de standaardstatus).

Bron: opennet.ru

Voeg een reactie