I tekstredigerere ble Vim og Neovim funnet en sårbarhet (CVE-2019-12735), som gjør det mulig å utføre vilkårlig kode mens du åpner en spesialdesignet fil.
Tproblemet manifesterer seg med aktiviteten til modellinen aktivert som standard (“: til settmodellen“), som gjør det mulig å definere redigeringsalternativer i filen som behandles. Sårbarhet eliminert i Vim 8.1.1365 Og Neovim 0.3.6 utgivelser.Gjennom modelline, tillot bare et begrenset antall alternativer. Hvis uttrykk er angitt som en alternativ verdi, den utføres i sandkassemodus, som bare tillater bruk av de enkleste sikre operasjonene.
Samtidig, De “: Kilde” kommandoen er og kan brukes i den “!” Modifier for å kjøre vilkårlige kommandoer fra spesifisert fil. Og dermed, for å utføre koden, det er tilstrekkelig å indikere en konstruksjon av formen i modellinjen “sett foldexpr = utfør (‘\: Kilde! Noe_fil '):“. I Neovim, henrette samtale er forbudt, Men assert_fails kan brukes i stedet.
For eksempel, å henrette “uname -a” kommando, bare åpne en fil i Vim eller Neovim, den første eller siste linjen som sier:
:!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="
De “Kilde!%” comand vil lese kommandoer fra den nåværende filen og, tilsvarende, henrette “:! uname -a“. For å skjule denne linjen fra utdata fra katteverktøyet, kan brukes rømningssekvenser.
For eksempel, I denne prototypen av en utnyttelse under drift av en fil i vim, opprettet nettverkstilkobling med skalltilgang til offerets system, men denne filen vil ikke føre til mistanke når du sender ut til terminalen med katteverktøyet.
Du kan sjekke modellaktiviteten ved hjelp av “: til settmodellen?” kommando. For å deaktivere vimrc, du kan legge til linjen “sette nomodeline“. I distribusjoner, problemet er løst i RHEL, SUSE / openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux Og ALT. Sårbarhet forblir ukorrigert i Debian.
Kilde: https://nvd.nist.gov