Quão seguro é usar um arquivo desconhecido `_vimrc` ou` vimscript`?


8

Não sei se essa pergunta deve ser feita aqui ou não. Em quase todos os idiomas, existe malware. O mesmo também se aplica a vimscript?

Suponha que vimesteja sendo executado com altos privilégios do sistema. Existe alguma possibilidade de um novo vimusuário arruinar seu sistema usando um plug-in ou um vimrcarquivo de boa aparência (isto é, os chamados scripts maliciosos em outras linguagens de script)?

Quais são as medidas que um novo usuário pode tomar antes de executar arquivos de script desconhecidos? Eu sei que desativar scripts é uma solução óbvia para isso. Mas há um número realmente bom de plugins que são bastante úteis, mesmo para os novos alunos.

Novamente, essa pergunta pode não se encaixar aqui, mas acredito que a segurança também é parte muito importante de todo o cenário.

Apontar alguns recursos ou informações sobre isso seria muito útil para novos vimusuários como eu.


4
Não executar o Vim (ou qualquer outra coisa) como root é a sua melhor aposta. Assumindo que $EDITORestá definido como vim, basta usar $ sudo -e filename.
romainl

1
Caso você esteja executando o Vim como root (o que você não deveria, mas pode acontecer), eu recomendo que você tenha apenas um vimrc muito rudimentar /root/.vimrc. Normalmente, apenas ative o destaque de sintaxe. Quanto mais sofisticada a configuração normal do usuário vim, mais óbvio será que você está executando como root.
Kba fica com Monica

@romainl: Obrigado por sua sugestão tipo ... eu espero que esta é a coisa mais razoável os novos usuários vim deve seguir ...
cyliano sempre

@kba: obrigado pela sua opinião tipo ... também é uma opção muito boa para tentar ...
cyliano sempre

Respostas:


8

Bem, o Vim pode executar comandos arbitrários com :!. Pode definir variáveis ​​de ambiente. Os scripts de malware que são scripts de shell podem, portanto, ser executados no Vimscript.

Pode fazer uso de programas complexos Perl, Python, Ruby ou Lua. Portanto, malwares escritos em qualquer um deles que utilize apenas bibliotecas padrão podem ser incorporados no Vim.

Mesmo que nenhuma dessas fosse verdade, o Vim é um editor. Se executado como root, poderíamos editar facilmente seus arquivos /etc/passwde /etc/shadowpara criar um novo usuário e /etc/sudoersconceder sudoprivilégios completos , além cronjobde executar scripts shell para configurar esse usuário.

Assim como na execução de scripts aleatórios na Internet, não há maneira fácil de se proteger. No Linux, você pode executar em uma VM com uma sobreposição para informar quais arquivos um determinado vimrc modifica. Depende de quanto risco você percebe.


Obrigado por sua ajuda ... a resposta é bastante útil ... enquanto no Linux, é sem dúvida uma idéia brilhante. O que eu acredito agora, é sem entender o código é simplesmente não usar nada disso ... ou pelo menos para aqueles unknownou lesser knownscripts de ...
cyliano sempre

@ mMontu: informações excelentes ... por que não postar isso como resposta ... acredito que muitas informações sejam, no mínimo, uma idéia básica para os novatos procurarem nas fontes desconhecidas ... muito obrigado. ..você é demais!!!
cyliano sempre

@ Cylian boa ideia, obrigado por ser tão gentil.
MMontu

5

Estendendo a resposta do muru, você pode inspecionar o código, especialmente porque o código do plug-in é geralmente muito curto (as exceções são alguns plug-ins populares, mas por serem populares eles são mais seguros - você pode esperar que muitos outros tenham revisado a fonte).

Você não precisa entender completamente o código; basta procurar comandos "perigosos":

  1. :!e system(): permite a execução de comandos do shell, podendo alterar seu sistema
  2. :perldo, :python, :lua, :tcl, E :ruby: executar comandos em diferentes idiomas, que pode conter chamadas de sistemas embarcados
  3. :execute: este comando executa uma string como um comando, para que possa ser usado para ocultar um dos comandos anteriores (por exemplo: para dificultar a identificação call system('malware')ou perldo malwarealguém pode concatenar a string em uma variável)
  4. function("MyFunc"): chamar referências de função - aceita uma variável como parâmetro, permitindo ocultar system()

Você também pode tentar executar algumas funções de plug-in usando 'secure'ou sandboxpara detectar shell e idiomas externos (perl, python, etc.).


+1, bons conjuntos de informações básicas sobre um tópico específico ... realmente útil ... obrigado!
cyliano sempre
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.