O ataque específico sobre o qual você manifestou preocupação é:
geralmente um invasor engana um usuário crédulo para executar um executável fazendo o download e clicando em.
Pelo menos no caso comum em que o arquivo é baixado em um navegador da web, isso já deve ser evitado no Ubuntu pela aderência do navegador à política Execute-Permission Bit Required . As partes mais diretamente relevantes dessa política são:
- Os arquivos baixados de um navegador da Web, cliente de email etc. nunca devem ser salvos como executáveis.
Portanto, se um usuário é instruído a baixar um programa em um navegador da Web, o faz e tenta executar o arquivo clicando duas vezes nele, ele não será executado. Isso se aplica mesmo que o arquivo baixado seja um shell script ou mesmo um arquivo .desktop. (Se você já se perguntou por que os arquivos .desktop em seu diretório pessoal precisam ser marcados como executáveis, mesmo que não sejam realmente programas, é por isso.)
É possível que os usuários alterem esse comportamento através de alterações na configuração. A maioria não, e enquanto aqueles que provavelmente não deveriam, não é com isso que você deve se preocupar. A maior preocupação é o ataque mais complexo com o qual acho que você já está preocupado, no qual uma pessoa (ou bot) maliciosa instrui o usuário a baixar um arquivo específico, marcá-lo como executável (por meio do navegador de arquivos ou com chmod
) e depois execute.
Infelizmente, restringir a capacidade de um usuário definir o bit de execução em um arquivo ou executar arquivos diferentes daqueles em alguma lista de permissões não atenuaria visivelmente o problema. Alguns ataques já funcionarão, e os que não o fizerem poderão ser modificados trivialmente para que funcionem. A questão fundamental é que o efeito de executar um arquivo pode ser alcançado mesmo se o arquivo não tiver permissões executáveis .
Isso é melhor ilustrado pelo exemplo. Suponha que evil
seja um arquivo no diretório atual que, se recebesse permissões executáveis ( chmod +x evil
) e run ( ./evil
), faria algo errado. Dependendo do tipo de programa, o mesmo efeito pode ser alcançado por um dos seguintes:
Nenhum deles, nem mesmo o último, exige que o arquivo tenha permissões executáveis ou que o usuário possa conceder permissões executáveis ao arquivo.
Mas as instruções maliciosas nem precisam ser tão complicadas. Considere este comando não malicioso , que é uma das maneiras oficialmente recomendadas para instalar ou atualizar o NVM :
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
A razão pela qual não é malicioso é que o NVM não é malware, mas se a URL fosse para o script de alguém que faz mal ao executar, esse comando faria o download e executaria o script. Em nenhum momento qualquer arquivo precisaria receber permissões executáveis. Baixar e executar o código contido em um arquivo malicioso com um único comando como este é, acredito, uma ação bastante comum que os invasores induzem os usuários a executarem.
Você pode tentar restringir quais intérpretes estão disponíveis para os usuários executarem. Mas não há realmente uma maneira de fazer isso que não afete substancialmente as tarefas comuns que você presumivelmente deseja que os usuários possam executar. Se você estiver configurando um ambiente extremamente restrito no qual quase tudo o que um usuário pensa em fazer no computador é proibido, como um quiosque que executa apenas alguns programas, isso pode fornecer uma certa proteção significativa. Mas não parece que esse é seu caso de uso.
Portanto, a resposta aproximada à sua pergunta é "Não". A resposta mais completa é que você provavelmente conseguirá impedir que os usuários executem arquivos, exceto aqueles que você fornece em uma lista de permissões. Mas isso é no sentido estrito e técnico de "executar", que não é necessário para obter o efeito total da execução da maioria dos programas ou scripts. Para evitar isso , você pode tentar tornar a lista de permissões muito pequena, para não listar intérpretes, exceto aqueles que podem ser altamente restritos. Mas mesmo se você conseguisse isso, os usuários não poderiam fazer muito e, se você o tornasse tão pequeno que não se machucasse, provavelmente não poderia fazer nada. (Veja o comentário de Thomas Ward .)
Se seus usuários podem se machucar, eles podem ser enganados.
Você pode impedir que programas específicos sejam usados ou se comportem de maneiras que possam ser prejudiciais e, se você observar padrões específicos que o ransomware tende a seguir, poderá evitar alguns casos comuns específicos. (Consulte AppArmor .) Isso pode fornecer algum valor. Mas isso não lhe dará nada perto da solução abrangente que você espera.
Quaisquer que sejam as medidas técnicas (se houver) que você acaba adotando, sua melhor aposta é educar os usuários. Isso inclui dizer a eles para não executar comandos que eles não entendem e não usar arquivos baixados em situações em que não poderiam explicar por que é razoavelmente seguro fazê-lo. Mas também inclui coisas como fazer backups, de modo que, se algo der errado (devido a malware ou outro), o dano causado será o mínimo possível.