Sårbarhed i Vim, der fører til kodekørsel ved åbning af en ondsindet fil

I teksteditorer vim и neovim fundet sårbarhed (CVE-2019-12735), som gør det muligt at udføre vilkårlig kode, når en specialdesignet fil åbnes. Problemet opstår, når standardmodelin-tilstanden (":set modeline") er aktiv, hvilket giver dig mulighed for at definere redigeringsmuligheder i den behandlede fil. Sårbarhed rettet i udgivelser
Vim 8.1.1365 и Neovim 0.3.6.

Kun et begrænset antal optioner kan installeres via modeline. Hvis et udtryk er angivet som en option-værdi, udføres det i sandbox-tilstand, som kun tillader de enkleste sikre operationer. I dette tilfælde inkluderer den gyldige kommando kommandoen ":source", hvor du kan bruge "!"-modifikatoren. at køre vilkårlige kommandoer fra den angivne fil. For at udføre koden er det således nok at angive i modellinjen en konstruktion som "set foldexpr=execute('\:source! some_file'):". I Neovim er det forbudt at kalde execute, men assert_fails kan bruges i stedet.

For at køre kommandoen "uname -a" skal du blot åbne en fil i Vim eller Neovim, hvis første eller sidste linje siger:

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

Firma "kilde! %" vil læse kommandoerne fra den aktuelle fil og følgelig udføre ":!uname -a". Escape-sekvenser kan bruges til at skjule en given linje fra output fra cat-værktøjet. For eksempel i denne udnytte prototypen når du åbner en fil i vim, oprettes en netværksforbindelse med shell-adgang til offerets system, men denne fil vil ikke vække mistanke, når den udsendes til terminalen ved hjælp af cat-værktøjet.

Du kan kontrollere aktiviteten af ​​modeline-tilstand med kommandoen ":set modeline?". For at deaktivere det, kan du tilføje linjen "set nomodeline" til vimrc. I distributioner er problemet løst i RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Sårbarheden forbliver upatchet Debian (i Debian er modelin deaktiveret som standard, så sårbarheden vises ikke i standardtilstanden).

Kilde: opennet.ru

Tilføj en kommentar