Cela est venu dans un commentaire à une autre question et j'aimerais que quelqu'un m'explique les raisons de cela.
J'ai suggéré à Apache de consigner les erreurs d'un VHost donné dans le répertoire personnel d'un utilisateur. Cela a été abattu parce qu'il n'était pas sûr. Pourquoi?
J'ai demandé des éclaircissements dans un commentaire de réponse, mais tout ce que j'ai obtenu, c'est qu'il n'est pas sûr d'avoir l'écriture root dans un dossier qui n'appartient pas à root. Encore une fois, quelqu'un pourrait-il expliquer?
Merci,
Bart.
linux
security
permissions
Bart B
la source
la source
Réponses:
Parce qu'un utilisateur malveillant peut malicieusement essayer de pointer le fichier en
root
train d'écrire vers un emplacement différent . Ce n'est pas si simple, mais vraiment possible.Par exemple, si un utilisateur trouve le moyen de créer un lien symbolique à partir du journal Apache supposé vers, par exemple, / etc / shadow, vous aurez soudain un système inutilisable. Apache (
root
) écraserait les informations d'identification de vos utilisateurs, rendant le système défectueux.Si le fichier access.log n'est pas accessible en écriture par l'utilisateur, il peut être difficile de le détourner, mais il est préférable d'éviter cette possibilité!
Une possibilité pourrait être d' utiliser logrotate pour faire le travail , en créant le lien vers un fichier qui n'existe pas déjà, mais ce logrotate écrasera dès que les journaux augmenteront:
Remarque :
La méthode symlink n'est qu'une des attaques possibles, donnée à titre de preuve de concept.
La sécurité doit être faite avec un esprit de liste blanche , pas de liste noire de ce que nous savons être un problème.
la source
+t
bit collant ne soit défini), même s'il n'a pas la permission d'écrire sur les fichiers eux-mêmes (car unlink () est une écriture dans le répertoire, pas le fichier). Même si root crée le fichier à l'avance, le propriétaire du répertoire peut toujours le supprimer et le remplacer par un lien symbolique vers autre chose.Le principe général de ne pas avoir de processus d'écriture dans un répertoire qu'ils ne possèdent pas ou à qui ils font confiance est bon. Mais dans ce cas particulier, il est raisonnable de croire que le code Apache ouvre le journal avec
O_NOFOLLOW
etc: la connexion au répertoire personnel d'un utilisateur est une configuration courante.la source