Se um usuário só pode ler e gravar arquivos, isso é suficiente para impedir a execução?

2

Um usuário tem o uso de um aplicativo em execução em um servidor Linux. O aplicativo fornece ao usuário uma API que permite ler e gravar arquivos no servidor, mas não oferece nenhum meio de executar um arquivo. Isso é suficiente para garantir que o usuário não possa executar comandos no servidor?

O sistema de arquivos subjacente não é montado com noexec.

O usuário pode escolher qual arquivo ler e gravar e pode criar novos arquivos com nomes arbitrários. O usuário pode excluir arquivos.

O aplicativo não tem acesso a arquivos "do sistema", sendo executado como uma conta de usuário relativamente sem privilégios, semelhante à que um usuário de desktop teria.

    
por jl6 02.12.2016 / 16:54

1 resposta

2

Nomes arbitrários em locais arbitrários, limitados apenas pelas permissões do sistema de arquivos, provavelmente escalonáveis para executar código arbitrário. Há muitos arquivos em $HOME que são executados automaticamente no login, por exemplo. E novos são adicionados (por exemplo, todo o material da sessão do usuário systemd é bastante recente). Ou talvez $HOME/bin seja por padrão colocado na frente de $ PATH.

Outros bons alvos para um invasor seriam ~/.ssh ; Eu não era suposto para ter acesso de login, mas será que uma vez eu instalo um arquivo de chaves autorizado? É claro que você pode desabilitar isso via config em /etc/ssh/ , mas isso é apenas um programa. Provavelmente existem outros.

Não tenho dúvidas de que você poderia garantir isso, mas seria muito trabalhoso (e você teria que ter muito cuidado com as atualizações de sistema operacional!)

Se, no entanto, você puder limitá-lo a arquivos arbitrários, mas limitado a determinados diretórios (digamos, somente em /srv/yourapp/ e subdiretórios), isso é seguro (desde que esteja programado corretamente).

    
por 02.12.2016 / 18:36