Les seuls répertoires mandatés par la FHS qui sont généralement accessibles en écriture mondiale sont /tmp
et /var/tmp
. Dans les deux cas, c'est parce qu'ils sont destinés à stocker des fichiers temporaires qui peuvent être créés par n'importe qui.
Il est également courant /dev/shm
, en tant que tmpfs (système de fichiers soutenu par la RAM), d'accéder rapidement aux données de taille moyenne partagées entre les processus, ou tout simplement de créer des fichiers dont la destruction est garantie au redémarrage.
Il peut également y avoir un /var/mail
ou /var/spool/mail
, et parfois d'autres répertoires de spouleur. Ceux-ci sont utilisés pour conserver temporairement le courrier avant qu'il ne soit traité. Ils ne sont pas toujours accessibles en écriture, selon les outils utilisés. Quand ils le sont, c'est parce que les fichiers peuvent y être créés par des outils utilisateur pour être traités par des démons.
Tous ces répertoires ont généralement le sticky bit ( t
) défini, ce qui signifie que seul le propriétaire d'un fichier ou du répertoire peut déplacer ou supprimer les fichiers qu'il contient.
Tout programme fonctionnant comme n'importe quel utilisateur peut créer des fichiers dans ces répertoires, et c'est au programme de création de faire ce qu'il faut en matière de sécurité pour ses données particulières. Il n'y a pas de problème de sécurité général particulier autre que quelqu'un remplissant potentiellement le système de fichiers, mais beaucoup de possibilités pour un programme de se tromper.
Il y a eu quelques mouvements vers des /tmp
répertoires spécifiques aux services . Ceux-ci évitent certains des bogues potentiels qui peuvent survenir, il n'est donc pas aussi vital que le programme soit exempt de bogues dans la façon dont il utilise le répertoire.
Vous pouvez trouver les répertoires accessibles en écriture sur votre système avec:
find / -maxdepth 3 -type d -perm -777
/var/lock
→/run/lock
/tmp
C'est risqué, car vous devez ajouter du code supplémentaire pour l'utiliser en toute sécurité. De toute évidence, cela est négligé.
Un exemple récent est donné par Steve Kemp. http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html
Si vous (l'attaquant) remplacez / tmp / shadow avant la deuxième ligne, vous pouvez remplacer le mot de passe de tout le monde. (Je suppose que l'attaque vous oblige à créer le fichier avant la première ligne et à le rendre accessible en écriture).
Systemd sur linux permet d'atténuer ces vulnérabilités en isolant / tmp pour de nombreux services système. (Sauf ceux qui "utilisent mal / tmp comme emplacement pour les sockets IPC et autres primitives de communication").
Dans Fedora Linux - http://fedoraproject.org/wiki/Features/ServicesPrivateTmp
Explication de Systemd - http://0pointer.de/blog/projects/security.html
la source
fopen
écrase mais ne réinitialise pas les autorisations, afin que l'utilisateur malveillant puisse toujours apporter des modifications. En outre, un utilisateur malveillant aurait pu faire quelque chose commeln -s /bin/bash /tmp/shadow
avant la première ligne, de sorte qu'un binaire système essentiel soit écrasé.Pour trouver des répertoires accessibles en écriture dans le monde, vous pouvez utiliser
Pour les fichiers, changez le type en
f
Pour le type de liens symboliques vers
l
Pour définir le bit collant:
la source