Vulnerabilidade no Vim que leva à execução de código ao abrir um arquivo malicioso

Em editores de texto Vim и neovim encontrado vulnerabilidade (CVE-2019-12735), que permite a execução de código arbitrário ao abrir um arquivo especialmente projetado. O problema ocorre quando o modo modeline padrão (“:set modeline”) está ativo, o que permite definir opções de edição no arquivo processado. Vulnerabilidade corrigida em versões
Vim 8.1.1365 и NeoVim 0.3.6.

Apenas um número limitado de opções pode ser instalado via modeline. Se uma expressão for especificada como um valor de opção, ela será executada no modo sandbox, que permite apenas as operações seguras mais simples. Neste caso, o comando válido inclui o comando “:source”, no qual você pode usar o modificador “!”. para executar comandos arbitrários do arquivo especificado. Assim, para executar o código, basta indicar na linha modeline uma construção do tipo “set foldexpr=execute('\:source! some_file'):". No Neovim, chamar execute é proibido, mas assert_fails pode ser usado.

Por exemplo, para executar o comando “uname -a”, basta abrir um arquivo no Vim ou Neovim cuja primeira ou última linha diz:

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

Fonte “da empresa! %" lerá os comandos do arquivo atual e executará ":!uname -a". Sequências de escape podem ser usadas para ocultar uma determinada linha da saída do utilitário cat. Por exemplo, neste explorar protótipo ao abrir um arquivo no vim, uma conexão de rede é criada com acesso shell ao sistema da vítima, mas esse arquivo não levantará suspeitas quando for enviado para o terminal usando o utilitário cat.

Você pode verificar a atividade do modo modeline com o comando “:set modeline?”. Para desativá-lo, você pode adicionar a linha “set nomodeline” ao vimrc. Nas distribuições o problema é corrigido em RHEL, SUSE / openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. A vulnerabilidade permanece sem correção em Debian (no Debian, a modeline está desabilitada por padrão, então a vulnerabilidade não aparece no estado padrão).

Fonte: opennet.ru

Adicionar um comentário