Algumas pessoas argumentam que a presença de ferramentas de desenvolvimento em uma máquina de produção facilitará a vida de um invasor. Isso, no entanto, é um pequeno roadbump para um atacante, que qualquer outro argumento que você possa encontrar a favor ou contra a instalação das ferramentas de desenvolvimento pesará mais.
Se um atacante foi capaz de penetrar no sistema até o momento, o que poderia invocar quaisquer ferramentas presentes no servidor, então você já tem uma grave violação de segurança. Sem ferramentas de desenvolvimento, há muitas outras maneiras de gravar dados binários em um arquivo e, em seguida, executar um chmod nesse arquivo. Um invasor querendo usar um executável de compilação personalizado no sistema neste momento poderia muito bem construir isso em sua própria máquina e transferi-lo para o servidor.
Existem outras coisas muito mais relevantes a serem observadas. Se um software instalado contiver um bug de segurança, há algumas maneiras de expô-lo a um invasor:
- O pacote pode conter um executável suid ou sgid.
- O pacote pode estar iniciando serviços no sistema.
- O pacote pode instalar scripts que são chamados automaticamente sob certas circunstâncias (isso inclui tarefas agendadas, mas scripts podem ser chamados por outros eventos, por exemplo, quando o estado de uma interface de rede é alterado ou quando um usuário efetua login).
- O pacote pode instalar inodes de dispositivo.
Eu não esperaria que as ferramentas de desenvolvimento correspondessem a uma das opções acima e, como tal, não é um pacote de alto risco.
Se você tiver fluxos de trabalho nos quais faria uso das ferramentas de desenvolvimento, primeiro precisará decidir se esses são fluxos de trabalho razoáveis e, se forem, deverá instalar as ferramentas de desenvolvimento.
Se você achar que realmente não precisa dessas ferramentas no servidor, evite instalá-las por vários motivos:
- Economiza espaço em disco, tanto no servidor quanto nos backups.
- Menos softwares instalados facilitam o rastreamento de suas dependências.
- Se você não precisar do pacote, não há motivo para arriscar a segurança adicional, mesmo que o risco de segurança seja pequeno.
Se você decidir que, por motivos de segurança, não permitirá que usuários sem privilégios coloquem seus próprios executáveis no servidor, o que você deve evitar não são as ferramentas de desenvolvimento, mas diretórios graváveis para esses usuários em sistemas de arquivos montados com execução permissões. Ainda pode haver um uso para ferramentas de desenvolvimento mesmo nessas circunstâncias, mas não é muito provável.