Sårbarhet i Vim som fører til kodekjøring når en ondsinnet fil åpnes

I tekstredigerere Vim и neovim funnet sårbarhet (CVE-2019-12735) som lar vilkårlig kode kjøres når en spesiallaget fil åpnes. Problemet manifesterer seg når standard modeline (":set modeline")-modus er aktiv, som lar deg definere redigeringsalternativer i den behandlede filen. Sårbarhet fikset i utgivelser
Vim 8.1.1365 и Neovim 0.3.6.

Bare et begrenset antall alternativer kan angis gjennom modell. Hvis et uttrykk er spesifisert som en opsjonsverdi, blir det utført i sandkassemodus, som tillater bare de enkleste sikre operasjonene å brukes. Samtidig er ": source"-kommandoen blant de gyldige, der du kan bruke "!"-modifikatoren. for å kjøre vilkårlige kommandoer fra den angitte filen. For å utføre koden er det derfor nok å spesifisere en konstruksjon som "set foldexpr=execute('\:source! some_file'):" i modelllinjen. Neovim tillater ikke execute call, men du kan bruke assert_fails i stedet.

For å kjøre kommandoen "uname -a" åpner du for eksempel en fil i Vim eller Neovim hvis første eller siste linje sier:

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

Kilden! %" vil lese kommandoene fra gjeldende fil og utføre ":!uname -a" tilsvarende. Cat-verktøyet kan bruke escape-sekvenser for å skjule en gitt streng fra utdata. For eksempel i denne utnytte prototypen når du åpner en fil i vim, opprettes en nettverkstilkobling med shell-tilgang til offerets system, men denne filen vil ikke vekke mistanke når den sendes ut til terminalen med cat-verktøyet.

Du kan sjekke om modellmodus er aktiv med kommandoen ":set modeline?". For å deaktivere den, kan du legge til linjen "set nomodeline" til vimrc. I distribusjoner er problemet løst i RHEL, SUSE / openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Sårbarheten forblir uopprettet Debian (i Debian er modeline deaktivert som standard, så sårbarheten viser seg ikke i standardtilstanden).

Kilde: opennet.ru

Legg til en kommentar