Qual é o perigo de executar software não confiável como usuário normal?

5

Às vezes eu tenho que usar alguns softwares proprietários que eu não confio ou mesmo pré-compilam aqueles de código aberto que eu não sei se eles foram compilados como fonte.

Digamos que instalamos um aplicativo de propriedade em / opt / software , então o executamos como um usuário normal (sem sudo, gksudo, etc).

  • Eu sei que quando executamos um programa, ele é capaz de se conectar à Internet, monitorar X, digitar as teclas, coletar dados do usuário e assim por diante.
  • Não é possível alterar nada importante no sistema ou infectar o sistema (por causa do sistema de permissões do Linux).
  • É possível que o programa inclua algum plug-in / extensão no navegador de um usuário (porque os perfis de navegador estão disponíveis no diretório inicial do usuário).
  • Depois de fechar o programa e reiniciar, não pode fazer mais nada. Errado porque:
    • O programa pode se adicionar a um diretório shell / file / que faz o processo de início automático, portanto, ele será executado em qualquer login.
  • Se considerarmos o processo de início automático limpo, sem reinicializar, há uma chance de que um processo do programa ainda esteja ativo.
  • Os programas podem excluir ou modificar qualquer arquivo no diretório inicial do usuário (ou qualquer outro arquivo para o qual um usuário tenha permissão de gravação).

Então, o que devemos fazer?

  • Acho que a única maneira segura de executar um programa de propriedade é executá-lo como outro usuário.
  • Se a execução do programa como outro usuário não for possível de alguma forma, devemos alterar a permissão de arquivos de inicialização automática para que somente o root possa alterá-los. depois de fechar o programa, a reinicialização fará o trabalho.

Estou certo? Há algo que eu esteja sentindo falta?

    
por Ravexina 23.06.2016 / 04:21

1 resposta

4

A execução de software não confiável como um novo usuário é um bom começo, mas pode não ser suficiente.

  • Muitos arquivos e dispositivos que você considera confidenciais podem ser lidos pelo mundo. Mesmo sendo um usuário sem privilégios, você pode extrair muitas informações de um sistema (normalmente você pode ler /etc para começar).

  • Você pode não ter seu próprio material configurado corretamente. Por exemplo, você se certificou de que esse arquivo "super-secret-passwords.txt" não é legível para todos? E o que acontece com este software antigo rodando como você mesmo ou como root - você tem certeza de que não está escrevendo nada sensível ao disco?

  • O código em execução como nobody pode ir na Internet e fazer download de tarefas, executar código no sistema.

  • Às vezes, um soquete em seu sistema local (um soquete de domínio unix) usado para comunicação entre processos pode não ser protegido adequadamente (às vezes por um bom motivo) e qualquer processo pode ler e gravar nele.

Praticamente, há coisas que você pode fazer.

Você pode absolutamente verificar se o programa não inicia nada no momento da inicialização. Vai ser entediante e você precisa entender muito bem o seu sistema. Existem várias maneiras de um serviço ser iniciado automaticamente. (Nota: se o programa já rodou como root, todas as apostas estão desativadas, já que ele poderia ter modificado o sistema init para se esconder)

As principais dicas para executar um software terrível

  1. Não corra.
    Se você puder evitá-lo, não execute nada que não possa confiar. Pelo menos, certifique-se de que você está fazendo uma troca de som. A complexidade é inimiga da segurança. A única linha de código garantidamente segura é a linha que você nunca executa. :)
  2. Execute o programa em uma máquina virtual.
    Configurar VMs é muito fácil (o VirtualBox é ótimo se você não quiser configurar nenhuma infraestrutura de virtualização). Isso significa que você terá uma máquina que não contém dados confidenciais (você precisaria colocá-la lá) e poderá controlar os recursos que ela usa. Isso não lhe dá proteção completa, claro (ele pode fazer coisas como inundar seu servidor web com solicitações, fazer login em suas lâmpadas via telnet, e assim por diante)
  3. Execute o programa em um contêiner.
    Os contêineres (LXD, Docker) oferecem segurança alguns para executar código em sua máquina local. Eles não são perfeitos. Mas um contêiner sem privilégios fornece isolamento do sistema de arquivos para o seu programa, o que é algo. Proteger os contêineres adequadamente é uma arte e uma ciência, mas está se tornando rapidamente mais fácil.
  4. Peça para outra pessoa executar o programa para você.
    Isso é apenas um pouco relevante para a sua pergunta, mas às vezes você pode evitar a execução de softwares antigos e terríveis ou softwares complexos e difíceis de proteger adequadamente usando um serviço de terceiros. E-mail é um bom exemplo disso. Eu não confiaria em mim mesmo para ter paciência e tempo livre para hospedar e manter meu próprio servidor de e-mail. É muito trabalho manter essas coisas seguras.
  5. Execute-o como um usuário separado.
    Como último recurso, e se você achar que a compensação vale a pena, execute o programa com uma nova conta de usuário criada especialmente para essa finalidade. Eu faço isso com um software que eu confio.

A opção 1 é a melhor. :)

Conselho geral

  • Seu sistema operacional é razoavelmente seguro. Não completamente seguro, é claro, mas o Ubuntu tem um histórico razoavelmente bom. Outro software que você instala nele pode não ser tão bom. Portanto, execute seu software em várias máquinas separadas e isoladas. Isso garantirá que um bug em um programa não signifique que outro programa, potencialmente mais sensível, se torne explorável.
  • Ir para a web. Hoje, a maioria dos softwares de usuários finais tem boas alternativas na web. Na minha máquina, eu praticamente uso o Chrome e o Emacs, e é isso. Usar serviços da web tem suas próprias implicações de segurança, é claro.
  • Ir para a nuvem (para software de servidor). Tem certeza de que precisa executar seu próprio servidor de e-mail? Servidor web? Base de dados? Vá para a nuvem e deixe alguém fazer todas essas coisas de segurança tediosas para você.
por Stefano Palazzo 23.06.2016 / 09:09