Que fait le paramètre de registre EnableLinkedConnections au niveau technique?

15

Remarque: le problème de base pour moi est de pouvoir accéder à un partage réseau que j'ai (utilisateur administrateur Win 7) configuré lorsque j'exécute un programme élevé. Normalement, le programme élevé n'aura pas accès à mes partages réseau non élevés.

Selon Microsoft, le paramètre de registre EnableLinkedConnections permettra aux processus élevés d'accéder au partage réseau du processus d'exploration actuellement connecté (non élevé).

Cette explication est logique:

[...] Lorsque vous êtes membre du groupe Administrateurs et que vous vous connectez, votre compte est transféré à un utilisateur non privilégié par l'UAC. Ce contexte en cours d'exécution est complètement distinct du contexte que vous obtenez lorsque vous cliquez avec le bouton droit sur Invite de commandes et lancez en tant qu'administrateur. Comme vous l'avez probablement remarqué, les lecteurs réseau connectés dans un contexte ne sont pas visibles dans l'autre. [...]

Ce fil de discussion pose une question sur les vulnérabilités ouvertes par ce paramètre. La réponse donne des liens vers un article sur la désactivation des invites UAC (ou si je comprends bien).

La question est maintenant de savoir ce que le paramètre de registre EnableLinkedConnections fait ou autorise sur un système Windows 7, étant donné que nous ne fonctionnons pas dans un environnement de domaine .


Edit: Une chose qui m'intéresse particulièrement est de savoir si ce paramètre affecte uniquement la (visibilité des) lecteurs réseau ou s'il a d'autres implications.

Martin
la source
Cette autre question sur ELC ne fonctionne pas dans certains cas: serverfault.com/questions/780639/…
UuDdLrLrSs

Réponses:

18

N'ayant pas accès à Windows à la source, il est difficile de dire quoi que ce soit qui ne soit pas de la spéculation. Mis à part cet avertissement, voici ce que j'ai pu glaner en lisant ceci:

UAC crée deux jetons de sécurité à l'ouverture de session: le jeton élevé contenant les appartenances de groupe complet de l'utilisateur et le jeton restreint dont l'appartenance au groupe "Administrateurs" est supprimée. Chaque jeton contient un ID local unique (LUID) distinct qui identifie la session d'ouverture de session. Il s'agit de deux sessions de connexion distinctes et distinctes.

À partir de Windows 2000 Server SP2, les lecteurs mappés (qui sont représentés sous forme de liens symboliques dans l'espace de noms du gestionnaire d'objets) sont marqués avec le LUID du jeton qui les a créés (vous pouvez trouver des références Microsoft à ce comportement dans cet article KBase , et vous pouvez en savoir plus sur les mécanismes de la fonctionnalité dans cet article de blog ). L'essentiel de la fonctionnalité est que les lecteurs mappés créés par une session de connexion ne sont pas accessibles à une autre session de connexion.

La définition de la valeur EnableLinkedConnections déclenche un comportement dans le service LanmanWorkstation et le sous-système de sécurité LSA (LSASS.EXE) pour obliger LSA à copier les lecteurs mappés par l'un des jetons des utilisateurs dans le contexte de l'autre jeton. Cela permet aux lecteurs mappés avec le jeton élevé d'être visibles par le jeton restreint et l'inverse. Il n'y a aucune particularité du comportement de cette fonctionnalité avec le respect d'un environnement de domaine par rapport à un environnement non-domaine. Si vos utilisateurs s'exécutent avec des comptes "Administrateur" dans un environnement hors domaine, leurs jetons restreints et leurs jetons élevés, par défaut, auront des mappages de lecteurs indépendants.

En termes de vulnérabilité, la documentation officielle de Microsoft semble faire défaut. J'ai trouvé un commentaire et une réponse d'un employé de Microsoft posant des questions sur les vulnérabilités potentielles dans une conversation sur l'UAC de 2007. Étant donné que la réponse vient de Jon Schwartz, qui, à l'époque, était intitulé "UAC Architect", je ont tendance à considérer sa réponse comme crédible. Voici l'essentiel de sa réponse à l'enquête suivante: "... Je n'ai trouvé aucune information pour décrire ce qui se passe réellement techniquement ou si cela ouvre une sorte de failles UAC. Pouvez-vous commenter?"

Techniquement, cela ouvre une petite faille, car les logiciels malveillants non élevés peuvent désormais "pré-amorcer" une lettre de lecteur + un mappage dans le contexte élevé - cela devrait être à faible risque, sauf si vous vous retrouvez avec quelque chose qui est spécifiquement adapté à votre environnement.

Personnellement, je ne peux pas penser à un moyen "d'exploiter" cette échappatoire, dans la mesure où "amorcer" le jeton élevé avec un mappage de lecteur nécessiterait toujours que l'utilisateur élève et exécute quelque chose de malveillant à partir de ce mappage de lecteur "prédéfini". Je ne suis pas un chercheur en sécurité, cependant, et je ne m'approche peut-être pas de cela avec un bon état d'esprit pour trouver des exploits potentiels.

J'ai esquivé à l'aide de la valeur EnableLinkedConnections dans mes sites clients en poursuivant la tendance que nous avons commencée lorsque les clients ont commencé à déployer Windows NT 4.0 - les utilisateurs se connectant avec des comptes d'utilisateurs limités. Cela a bien fonctionné pour nous pendant des années et continue de bien fonctionner dans Windows 7.

Evan Anderson
la source
RE: "J'ai esquivé en utilisant la valeur EnableLinkedConnections ... [en] faisant ouvrir une session aux utilisateurs avec des comptes d'utilisateurs limités." - des comptes d'utilisateurs limités peuvent-ils exécuter des applications en tant qu'administrateur? Je pensais qu'ils ne pouvaient pas. (S'ils ne le peuvent pas, je ne vois pas comment cela évite le problème - je veux dire, si je me plaignais à un mécanicien que le moteur de ma voiture couine lorsque je conduis à 80 mph, je n'accepterais pas la solution de lui aplatir mes pneus [alors que cela rendrait impossible de rouler à 80 mph, cela ne réglerait pas le problème réel].)
BrainSlugs83
1
@ BrainSlugs83 - Vous fixez un commentaire dans un petit paragraphe d'une longue réponse. La réponse a donné au PO ce qu'il voulait (je suppose, car il a accepté): une description de ce que fait la valeur de registre. J'ai fait ce commentaire désinvolte pour dire à l'OP qu'il existe un moyen d'éviter d'avoir à utiliser EnableLinkedConnections - ne donnez simplement pas de comptes d'administrateur aux utilisateurs et le besoin est atténué. C'est 2013 - les comptes d'utilisateurs limités sont les conseils de Microsoft depuis près de 10 ans. Votre analogie voiture / mécanicien est tendue, OMI. Ce n'est pas un "problème" avec le système d'exploitation - c'est une fonction de sécurité.
Evan Anderson
Oh, je suis absolument obsédant; également en cas de confusion: je ne dis pas que votre réponse est incorrecte. C'était très bien, j'ai même voté pour! - Mais je suis en train de résoudre un problème très réel que je rencontre - d'où la question que je vous ai posée pour déterminer si cette solution alternative fonctionnera pour moi ou non: "des comptes d'utilisateurs limités peuvent-ils exécuter des applications en tant qu'administrateur?" ; Je déduis de votre réponse que mon hypothèse initiale était correcte.
BrainSlugs83
De plus, je suis fortement en désaccord avec le fait que l'analogie est un tronçon. Enlever la possibilité d'exécuter des applications en tant qu'administrateur reviendrait à donner à mon ordinateur un pneu à plat. J'ai un projet Microsoft Visual Studio qui ne parvient pas à compiler pendant la phase de signature de code si Visual Studio n'est pas lancé avec «Exécuter en tant qu'administrateur». J'ai essayé de résoudre ce problème, mais je n'ai trouvé aucune solution, ni sur Google, ni sur les blogs, ni sur le débordement de pile (ce n'est pas un incident isolé). La possibilité d'exécuter des applications en tant qu'administrateur est un must pour certains utilisateurs (même lorsqu'ils n'utilisent que des logiciels Microsoft).
BrainSlugs83
3
Si vous avez besoin d'exécuter des applications en tant qu'administrateur, je vous recommande d'avoir un deuxième compte d'utilisateur et de l'utiliser pour exécuter l'application élevée avec "Exécuter en tant qu'administrateur". C'est le seul choix que je vois. Si l'application ne fonctionne pas correctement avec "Exécuter en tant que", alors l'application est défectueuse. (Je dirais également que toute application qui nécessite des droits d'administrateur et qui n'est pas une application d'administration réseau ou informatique est également défectueuse - logiciel MSFT ou non.) Je trouve que le logiciel défectueux est l'un des aspects les plus frustrants de mon travail, donc je peut aussi comprendre votre frustration. Je souhaite qu'il y ait une bonne solution.
Evan Anderson
1

Autrement dit, il relie vos informations d'identification de super-utilisateur à vos informations d'identification normales. C'est bien sûr plus complexe, mais fondamentalement, même votre compte "administrateur" sur Windows 7 n'est pas un administrateur, mais doit faire l'équivalent de SUDO sur Linux pour effectuer une multitude d'opérations. Lorsque vous mappez un lecteur réseau, vous devez le faire, mais le lecteur réseau n'est mappé que pour le super-utilisateur, pas pour l'utilisateur normal. Ce paramètre de registre relie les informations d'identification du super-utilisateur à vos informations standard pour les lecteurs mappés. De cette façon, les deux peuvent accéder au lecteur mappé au lieu du seul super-utilisateur.

MaQleod
la source
Pourriez-vous préciser si ce paramètre affecte uniquement les lecteurs réseau? Ou cela a-t-il un autre effet? (voir q edit)
Martin