web-dev-qa-db-fra.com

Pourquoi devez-vous être administrateur pour créer un lien symbolique dans Windows?

Sous Linux, chaque utilisateur peut créer des liens symboliques, mais sous Windows, j'ai besoin d'une ligne de commande admin, sinon mklink échoue. Pourquoi donc?

71
ripper234

Par défaut, seuls les administrateurs peuvent créer des liens symboliques, car ils sont les seuls à disposer du privilège SeCreateSymbolicLinkPrivilege sous Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\ accordé.

Depuis Microsoft TechNet: Paramètres de stratégie de sécurité nouveaux pour Windows Vista :

Les liens symboliques (liens symboliques) peuvent exposer des vulnérabilités de sécurité dans les applications qui ne sont pas conçues pour gérer les liens symboliques.

23
ordag

Ce n'est plus entièrement (voir ci-dessous) le cas à partir de Windows 10 Insiders build 14972 (Windows 10 Creators Update ~ 1703).

Cependant, à partir des commentaires sous le billet de blog, les préoccupations concernant les problèmes mentionnés dans les autres réponses sont toujours là, et pour utiliser ce nouveau comportement, vous devez:

  • activer le mode développeur sur votre machine
  • passer un SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE drapeau vers l'API CreateSymbolicLink
8
MayeulC

Linux a une structure fichier/utilisateur compartimentée. Cela signifie que le "programme A" ne peut pas effectuer la "tâche B" à moins qu'il ne soit lié à "l'espace disque C". Les liens symboliques n'affectent donc pas vraiment quoi que ce soit sur le plan logistique en termes de pénétration des risques, car l'intégralité du système d'exploitation est fondée sur l'hypothèse d'action-> autorisation.

Ou pour le dire autrement, créer des liens symboliques gazillion ne vous aide pas si vous êtes un hacker avec rien d'autre que des autorisations de bas niveau. Donc, sous Linux ou MacOS, cela ne vous aide pas.

Cependant, sous Windows, vous n'avez pas de "programme A" qui exécute un programme autre que la personne connectée ... afin que la personne connectée puisse effectuer la "tâche B" où elle veut. Il vous aide donc DÉFINITIVEMENT à avoir une pénétration au niveau des liens symboliques, car vous pouvez remplacer les fichiers réels trouvés avec une charge utile virale et cacher que vous l'avez fait.

Ainsi, sans le niveau de protection symlink, un virus pourrait vous infecter, exécuter comme charge utile de nombreux liens symboliques vers, par exemple, rediriger "Explorer.exe "à un faux" exactly-as-windows-made-it-except-with-a-payload Explorer.exe ".

Pourquoi ferais-tu ça? Honnêtement, ce sont les clés du royaume. Vous pouvez recruter cet ordinateur de manière fiable dans un bot activant théoriquement son chemin vers l'avenir, etc.

5
Mr Heelis

J'ai trouvé la raison du lancement de Vista. La raison donnée pour les administrateurs uniquement est très simple. Ce ne sont pas des problèmes de sécurité non spécifiés, ce sont des milliers de logiciels qui doivent être mis à niveau pour utiliser des appels d'API qui n'existaient pas littéralement avant d'être ajoutés pour éviter des trous de sécurité béants lors de la traversée de liens symboliques.

Windows est horriblement vulnérable aux courses de liens symboliques; il existe des moyens d'éviter cela, en quelque sorte, mais pratiquement aucune application n'utilise les API de cette manière. Même Microsoft n'accepte pas les bogues de sécurité impliquant des courses de liens symboliques. J'ai juste essayé de faire un rapport il y a trois mois.

4
Joshua

Les liens physiques et les jonctions de répertoires ne se trouvent qu'à l'intérieur d'une partition (il ne peut pas y avoir de lien physique d'un disque à un autre ou même à un emplacement réseau).

SymLinks d'autre part peut également se relier d'un endroit sur le système qui semble "sûr" à un emplacement réseau.

1
StefanA