Certains diront que la présence d'outils de développement sur une machine de production facilitera la tâche d'un attaquant. Cependant, il s'agit d'un obstacle si minime pour un attaquant que tout autre argument pour ou contre l'installation d'outils de développement pèsera plus lourd dans la balance.
Si un pirate a pu pénétrer le système au point de pouvoir invoquer les outils présents sur le serveur, il s'agit déjà d'une grave faille de sécurité. Sans outils de développement, il existe de nombreuses autres façons d'écrire des données binaires dans un fichier et d'exécuter un chmod sur ce fichier. Un attaquant souhaitant utiliser un exécutable personnalisé sur le système à ce stade pourrait tout aussi bien le construire sur sa propre machine et le transférer sur le serveur.
Il y a d'autres éléments beaucoup plus pertinents à surveiller. Si un logiciel installé contient un bogue de sécurité, il y a plusieurs façons de l'exposer à un attaquant :
- Le paquet pourrait contenir un exécutable suid ou sgid.
- Le paquet pourrait être en train de démarrer des services sur le système.
- Le paquet peut installer des scripts qui sont invoqués automatiquement dans certaines circonstances (cela inclut les tâches cron, mais les scripts peuvent être invoqués par d'autres événements, par exemple lorsque l'état d'une interface réseau change ou lorsqu'un utilisateur se connecte).
- Le paquet pourrait installer des inodes de périphérique.
Je ne m'attends pas à ce que les outils de développement correspondent à l'un des éléments ci-dessus et, en tant que tel, il ne s'agit pas d'un paquet à haut risque.
Si vous avez des flux de travail dans lesquels vous souhaitez utiliser les outils de développement, vous devez d'abord décider s'il s'agit de flux de travail raisonnables et, si c'est le cas, vous devez installer les outils de développement.
Si vous constatez que vous n'avez pas vraiment besoin de ces outils sur le serveur, vous devriez vous abstenir de les installer pour de multiples raisons :
- Économie d'espace disque, tant sur le serveur que sur les sauvegardes.
- Moins de logiciels installés, c'est plus facile de savoir quelles sont les dépendances.
- Si vous n'avez pas besoin du paquet, il est inutile de prendre le risque de sécurité supplémentaire lié à son installation, même si ce risque est minime.
Si vous décidez, pour des raisons de sécurité, de ne pas autoriser les utilisateurs non privilégiés à placer leurs propres exécutables sur le serveur, ce ne sont pas les outils de développement qu'il faut éviter, mais plutôt les répertoires accessibles en écriture à ces utilisateurs sur des systèmes de fichiers montés avec des autorisations d'exécution. Les outils de développement peuvent toujours être utilisés même dans ces circonstances, mais c'est peu probable.