web-dev-qa-db-fra.com

Pourquoi les fichiers qui ne sont pas attribués à un utilisateur sont-ils considérés comme un risque pour la sécurité?

De la Bible Linux, édition 9:

Les fichiers qui ne sont attribués à aucun nom d'utilisateur sont considérés comme un risque pour la sécurité.

Comment est-ce possible et comment pourrait-il être exploité?

Edit: Ma question n'est pas un double de la question mentionnée parce que ma question se concentre sur le processus de création d'utilisateur au lieu de se concentrer sur le principe du moindre privilège.

86
AXANO

Sur un système Linux, vous pouvez facilement supprimer un utilisateur sans avoir à supprimer les fichiers appartenant à cet utilisateur. Un tel fichier restera en place et l'ID utilisateur du propriétaire du fichier (qui est stocké en tant qu'attribut de inode ) reste inchangé. De cette façon, un fichier peut devenir sans propriétaire.

Si vous créez ensuite un utilisateur avec le même ID, l'utilisateur deviendra automatiquement le propriétaire des fichiers précédemment orphelins. C'est ainsi qu'un nouvel utilisateur peut involontairement (ou avec une intention malveillante) devenir le propriétaire de fichiers qu'il ne devrait pas posséder, ce qui est évidemment mauvais pour la sécurité.

Notez que userdel dispose d'un commutateur supplémentaire pour supprimer les utilisateurs avec leurs fichiers, mais il supprimera uniquement les fichiers de certains emplacements fixes, comme le répertoire personnel:

 -r, --remove
       Files in the user's home directory will be removed along with
       the home directory itself and the user's mail spool. Files
       located in other file systems will have to be searched for
       and deleted manually.

Vous pouvez utiliser find avec le -nouser commutateur pour découvrir des fichiers avec un propriétaire inexistant:

 -nouser
    No user corresponds to file's numeric user ID.

Voici une démo rapide sur Arch Linux.

Ajoutons un utilisateur alice et faisons-lui le propriétaire d'un fichier foo.

 [root @ box /] # useradd alice 
 [root @ box /] # touch foo 
 [root @ box /] # chown alice foo 
 [root @box /] # ls -l foo 
 - rw-r - r-- 1 racine alice 0 5 janvier 02:59 foo 

Supprimons maintenant alice.

 [root @ box /] # userdel alice 
 [root @ box /] # ls -l foo 
 - rw-r - r-- 1 1001 root 0 5 janv. 02:59 foo 

ls ne peut pas déterminer le nom du propriétaire et affiche simplement l'ID numérique du propriétaire 1001. Ajoutons maintenant un nouvel utilisateur bob.

 [root @ box /] # useradd bob 
 [root @ box /] # ls -l foo 
 - rw-r - r-- 1 bob root 0 5 janv. 02:59 foo 

Étant donné que bob a reçu le prochain ID utilisateur gratuit, il est désormais automatiquement le propriétaire du fichier.

120
Arminius