Algumas pessoas argumentam que a presença de ferramentas de desenvolvimento em uma máquina de produção facilitará a vida de um invasor. No entanto, esse é um obstáculo tão pequeno para um invasor, que qualquer outro argumento que você possa encontrar a favor ou contra a instalação das ferramentas de desenvolvimento pesará mais.
Se um invasor foi capaz de penetrar no sistema até o momento, para poder invocar as ferramentas presentes no servidor, você já tem uma violação de segurança grave. Sem ferramentas de desenvolvimento, existem muitas outras maneiras de gravar dados binários em um arquivo e, em seguida, executar um chmod nesse arquivo. Um invasor que deseje usar um executável de compilação personalizado no sistema nesse momento também poderá compilá-lo em sua própria máquina e transferi-lo para o servidor.
Há outras coisas muito mais relevantes a serem observadas. Se um software instalado contiver um bug de segurança, existem algumas maneiras pelas quais ele pode ser exposto 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 invocados automaticamente sob certas circunstâncias (isso inclui tarefas cron, mas os scripts podem ser invocados 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 do 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ê possui fluxos de trabalho nos quais utilizaria as ferramentas de desenvolvimento, primeiro é necessário decidir se são fluxos de trabalho razoáveis e, se houver, instale 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.
- Um software menos instalado facilita o rastreamento de quais são suas dependências.
- Se você não precisa do pacote, não faz sentido correr o risco adicional de segurança de instalá-lo, mesmo que esse risco seja pequeno.
Se você decidir que, por razões 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 os diretórios graváveis para esses usuários em sistemas de arquivos montados com permissões de execução. Ainda pode haver um uso para ferramentas de desenvolvimento, mesmo nessas circunstâncias, mas não é muito provável.