Sårbarhet i Vim som leder till kodexekvering när en skadlig fil öppnas

I textredigerare vim и neovim hittades sårbarhet (CVE-2019-12735), vilket gör att godtycklig kod kan exekveras när en specialdesignad fil öppnas. Problemet uppstår när standardmodellläget (":set modeline") är aktivt, vilket låter dig definiera redigeringsalternativ i den bearbetade filen. Sårbarhet fixad i releaser
Vim 8.1.1365 и Neovim 0.3.6.

Endast ett begränsat antal tillval kan installeras via modellen. Om ett uttryck anges som ett alternativvärde, exekveras det i sandlådeläge, vilket endast tillåter de enklaste säkra operationerna. I det här fallet inkluderar det giltiga kommandot kommandot ":source", där du kan använda modifieraren "!". för att köra godtyckliga kommandon från den angivna filen. För att exekvera koden räcker det alltså att på modelllinjen indikera en konstruktion som "set foldexpr=execute('\:source! some_file'):". I Neovim är det förbjudet att anropa execute, men assert_fails kan användas istället.

Till exempel, för att köra kommandot "uname -a", öppna helt enkelt en fil i Vim eller Neovim vars första eller sista rad säger:

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

Företaget "källa! %" kommer att läsa kommandona från den aktuella filen och följaktligen köra ":!uname -a". Escape-sekvenser kan användas för att dölja en given rad från utdata från cat-verktyget. Till exempel i detta utnyttja prototypen när en fil öppnas i vim skapas en nätverksanslutning med skalåtkomst till offrets system, men den här filen kommer inte att väcka misstankar när den matas ut till terminalen med hjälp av cat-verktyget.

Du kan kontrollera aktiviteten i modellinläget med kommandot ":set modeline?". För att inaktivera det kan du lägga till raden "set nomodeline" till vimrc. I distributioner är problemet fixat i RHEL, SUSE/openSUSE, fedora, FreeBSD, ubuntu, Arch Linux и ALT. Sårbarheten förblir oparpad Debian (i Debian är modellen inaktiverad som standard, så sårbarheten visas inte i standardtillståndet).

Källa: opennet.ru

Lägg en kommentar