Nota: o problema básico para mim é poder acessar um compartilhamento de rede que eu (usuário administrador do Win 7) configurei quando executo um programa elevado. Normalmente, o programa elevado não terá acesso aos meus compartilhamentos de rede não elevados.
De acordo com a Microsoft, a configuração do Registro EnableLinkedConnections permitirá que processos elevados acessem o compartilhamento de rede do processo do explorador atualmente conectado (não elevado).
Esta explicação faz algum sentido:
[...] Quando você é membro do grupo Administradores e faz login, sua conta é transferida para um usuário não privilegiado pelo UAC. Esse contexto de execução é completamente separado do contexto que você obtém quando clica com o botão direito do mouse no Prompt de Comando e é iniciado como administrador. Como você provavelmente já deve ter notado, as unidades de rede conectadas em um contexto não são visíveis no outro. [...]
Este tópico do fórum pergunta sobre as vulnerabilidades abertas por essa configuração. A resposta fornece links para um artigo sobre a desativação de prompts do UAC (pelo que entendi).
A questão agora é: o que a configuração do Registro EnableLinkedConnections faz ou permite em um sistema Windows 7, já que não estamos executando em um ambiente de domínio .
Edit: Uma coisa que me interessa especificamente é se essa configuração afeta apenas a (visibilidade de) unidades de rede ou se tem outras implicações.
Respostas:
Não tendo acesso de origem ao Windows, é difícil dizer algo que não seja especulação. Esse aviso à parte, aqui está o que eu pude entender lendo sobre isso:
O UAC cria dois tokens de segurança no logon: o token elevado que contém as participações em grupo completas do usuário e o token restrito que possui participação no grupo "Administradores". Cada token contém uma identificação localmente única (LUID) distinta que identifica a sessão de logon. São duas sessões de logon separadas e distintas.
A partir do Windows 2000 Server SP2, as unidades mapeadas (representadas como links simbólicos no espaço de nomes do gerenciador de objetos) são marcadas com o LUID do token que os criou (você pode encontrar algumas referências da Microsoft a esse comportamento neste artigo do KBase e pode saiba mais sobre a mecânica do recurso nesta postagem no blog ). A essência do recurso é que as unidades mapeadas criadas por uma sessão de logon não estão acessíveis para outra sessão de logon.
A definição do valor EnableLinkedConnections aciona um comportamento no serviço LanmanWorkstation e no subsistema de segurança LSA (LSASS.EXE) para fazer com que o LSA copie as unidades mapeadas por um dos tokens de um dos usuários no contexto do outro token. Isso permite que as unidades mapeadas com o token elevado sejam visíveis para o token restrito e o inverso. Não há nenhuma peculiaridade do comportamento desse recurso em relação a um domínio versus um ambiente que não seja de domínio. Se seus usuários estiverem executando contas de "Administrador" em um ambiente que não seja de domínio, seus tokens restritos e tokens elevados, por padrão, terão mapeamentos de unidade independentes.
Em termos de vulnerabilidade, a documentação oficial da Microsoft parece estar ausente. Eu encontrei um comentário e uma resposta de um funcionário da Microsoft perguntando sobre as possíveis vulnerabilidades em uma conversa sobre o UAC em 2007. Como a resposta vem de Jon Schwartz, que na época se chamava "Arquiteto do UAC", eu tendem a considerar sua resposta com credibilidade. Aqui está a essência de sua resposta à seguinte pergunta: "... Eu não encontrei nenhuma informação para descrever o que realmente está acontecendo tecnicamente ou se isso abre algum tipo de brecha no UAC. Você pode comentar?"
Pessoalmente, não consigo pensar em uma maneira de "explorar" essa brecha, na medida em que "semear" o token elevado com um mapeamento de unidade ainda exigiria que o usuário realmente elevasse e executasse algo malicioso a partir desse mapeamento de unidade "semeado". Porém, não sou um pesquisador de segurança e talvez não esteja abordando isso com uma boa mentalidade para descobrir possíveis explorações.
Evitei usar o valor EnableLinkedConnections nos sites de meus clientes, continuando a tendência que começamos quando os clientes começaram a implantar o Windows NT 4.0 - fazendo com que os usuários fizessem logon com contas limitadas. Isso funcionou bem para nós por anos e continua a funcionar bem no Windows 7.
fonte
Simplificando, ele vincula suas credenciais de superusuário às credenciais normais. É claro que é mais complexo, mas basicamente, mesmo a sua conta de "administrador" no Windows 7 não é um administrador, mas precisa fazer o equivalente ao SUDO no Linux para executar uma infinidade de operações. Quando você mapeia uma unidade de rede, é necessário fazer isso, mas a unidade de rede só é mapeada para o superusuário, não para o usuário normal. Essa configuração do registro vincula as credenciais do superusuário às credenciais padrão para fins de unidades mapeadas. Dessa forma, ambos podem acessar a unidade mapeada em vez de apenas o superusuário.
fonte