O que a configuração do Registro EnableLinkedConnections faz em nível técnico?

15

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.

Martin
fonte
Relacionada está outra pergunta sobre o ELC que não funciona em alguns casos: serverfault.com/questions/780639/…
UuDdLrLrSs

Respostas:

18

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?"

Tecnicamente, ele abre uma pequena brecha, já que malwares não elevados agora podem "pré-propagar" uma letra de unidade + mapeamento para o contexto elevado - isso deve ser de baixo risco, a menos que você acabe com algo que seja especificamente adaptado ao seu ambiente.

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.

Evan Anderson
fonte
RE: "Eu evitei usar o valor EnableLinkedConnections ... [por] ter usuários fazendo logon com contas limitadas." - contas de usuário limitadas podem executar aplicativos como administrador? Eu pensei que eles não podiam. (Se eles não podem, então eu não vejo como isso se esquiva do problema - quero dizer, se eu reclamasse com um mecânico que o motor do meu carro chia quando eu estou dirigindo 80 mph, eu não aceitaria a correção dele achatando meus pneus [ao mesmo tempo que tornaria impossível para dirigir 80 mph, não iria resolver o problema real]).
BrainSlugs83
1
@ BrainSlugs83 - Você está se fixando em um comentário em um pequeno parágrafo de uma resposta longa. A resposta deu ao OP o que eles queriam (presumo, já que eles aceitaram): uma descrição do que o valor do registro faz. Fiz esse comentário imediato para dizer ao OP que existe uma maneira de evitar a necessidade de usar EnableLinkedConnections - apenas não forneça contas de administrador aos usuários e a necessidade é atenuada. É 2013 - as contas de usuário limitadas são aconselhadas pela Microsoft há quase 10 anos. A analogia do seu carro / mecânico é tensa, IMO. Este não é um "problema" do sistema operacional - é um recurso de segurança.
Evan Anderson
Oh, eu sou absolutamente fixador; também no caso de haver alguma confusão: não estou argumentando que sua resposta está incorreta. Foi muito bom, até votei! - Mas estou corrigindo um problema muito real que estou tendo - portanto, a pergunta que fiz a você para determinar se essa solução alternativa funcionará para mim ou não: "contas de usuário limitadas podem executar aplicativos como administrador?" ; Pela sua resposta, considero que minha suposição inicial estava correta.
precisa saber é o seguinte
Além disso, discordo totalmente de que a analogia é exagerada. Tirar a capacidade de executar aplicativos como administrador seria completamente semelhante a dar ao meu computador um pneu furado. Eu tenho um projeto do Microsoft Visual Studio que falha ao compilar durante a fase de assinatura de código se o Visual Studio não for iniciado com "Executar como Administrador". Tentei solucionar isso, mas não encontrei solução, no google, nos blogs ou no estouro de pilhas (este não é um incidente isolado). A capacidade de executar aplicativos como administrador é essencial para alguns usuários (mesmo quando apenas usa o software da Microsoft).
precisa saber é o seguinte
3
Se você precisar executar aplicativos como administrador, recomendo ter uma segunda conta de usuário e usá-la para executar o aplicativo elevado com "Executar como administrador". Essa é a única opção que vejo. Se o aplicativo não funcionar corretamente com "Executar como", o aplicativo está com defeito. (Eu também argumentaria que qualquer aplicativo que exija direitos de administrador e não seja um aplicativo de administração de rede ou computador também está com defeito - software MSFT ou não.) Acho o software defeituoso um dos aspectos mais frustrantes do meu trabalho, então, também pode entender sua frustração. Eu gostaria que houvesse uma boa solução.
precisa
1

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.

MaQleod
fonte
Você poderia esclarecer se essa configuração de fato afeta apenas unidades de rede? Ou tem algum outro efeito? (ver q edit)
Martin