Algunas personas argumentarán que la presencia de herramientas de desarrollo en una máquina de producción facilitará la vida de un atacante. Sin embargo, esto es un obstáculo tan pequeño para un atacante, que cualquier otro argumento que pueda encontrar a favor o en contra de instalar las herramientas de desarrollo pesará más.
Si un atacante pudo penetrar en el sistema hasta el momento, que podría invocar cualquier herramienta que esté presente en el servidor, entonces ya tiene una violación grave de seguridad. Sin las herramientas de desarrollo, hay muchas otras formas de escribir datos binarios en un archivo y luego ejecutar un chmod en ese archivo. Un atacante que quiera usar un ejecutable de compilación personalizado en el sistema en este momento podría construirlo en su propia máquina y transferirlo al servidor.
Hay otras cosas mucho más relevantes a tener en cuenta. Si una pieza de software instalada contiene un error de seguridad, hay algunas formas en que podría exponerse a un atacante:
- El paquete podría contener un ejecutable suid o sgid.
- El paquete podría estar iniciando servicios en el sistema.
- El paquete podría instalar scripts que se invocan automáticamente en ciertas circunstancias (esto incluye trabajos cron, pero otros eventos pueden invocar scripts, por ejemplo, cuando cambia el estado de una interfaz de red o cuando un usuario inicia sesión).
- El paquete podría instalar dispositivos inodes.
No esperaría que las herramientas de desarrollo coincidan con una de las anteriores, y como tal no es un paquete de alto riesgo.
Si tiene flujos de trabajo en los que utilizaría las herramientas de desarrollo, primero debe decidir si son flujos de trabajo razonables y, si lo son, debe instalar las herramientas de desarrollo.
Si descubre que realmente no necesita esas herramientas en el servidor, debe abstenerse de instalarlas por varias razones:
- Ahorra espacio en disco, tanto en el servidor como en las copias de seguridad.
- Menos software instalado hace que sea más fácil rastrear cuáles son sus dependencias.
- Si no necesita el paquete, no tiene sentido asumir el riesgo de seguridad adicional de tenerlo instalado, incluso si ese riesgo de seguridad es pequeño.
Si decide que por razones de seguridad, no permitirá que los usuarios no privilegiados pongan sus propias etiquetas de ejecución en el servidor, entonces lo que debe evitar no son las herramientas de desarrollo, sino más bien los directorios que se pueden escribir para aquellos usuarios en sistemas de archivos montados con permisos de ejecución. Puede que aún se utilicen herramientas de desarrollo incluso en esas circunstancias, pero no es muy probable.