Powershell systemroot em $ env: caminho diferente quando AC elevado

3

Eu tenho um comportamento estranho com as variáveis de ambiente no meu Windows XP SP3.

Quando faço logon como administrador, as strings %SystemRoot% no PATH são substituídas por C:\WINDOWS , o valor da variável 'SystemRoot' é C:\WINDOWS .

Mas quando faço logon como qualquer usuário não administrativo, o %SystemRoot% permanece literalmente no PATH, embora a variável 'SystemRoot' tenha o mesmo valor que a conta do Administrador.

Executando o PowerShell como um usuário normal:

PS C:\Users\vic> $env:path (Enter)

%SystemRoot%\system32\WindowsPowerShell\v1.0\;C:\Program Files\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static

Execução do PowerShell elevado (clique com o botão direito do mouse, run as admin ):

PS C:\Windows\system32> $env:path

C:\Windows\system32\WindowsPowerShell\v1.0\;C:\Program Files\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\ System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static

Caminho de env no Windows:

C:\Program Files\AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static

Por quê?

    
por Vic 15.10.2013 / 14:22

1 resposta

0

Isso provavelmente está relacionado a um bug conhecido no Windows XP, no Windows 7 e em vários outros. (Com base na documentação disponível, ela não afeta ou não foi vista no Windows 8 ou posterior.)

O bug está documentado no artigo Microsoft KB # 329308 ( variável de ambiente não pode expandir% APPDATA% para a pasta Aplicativo ). Ele também é documentado como uma vulnerabilidade Média no banco de dados nacional de vulnerabilidades do NIST, como CVE-2007-6753 . Uma das referências citadas na entrada do CVE, artigo no Blog de Segurança da ACROS , afirma que a questão pode ser tão antiga quanto, ou até mais antiga que, em 2003.

Embora o artigo de referência mencionado mencione especificamente %APPDATA% , o bug afeta todas as "variáveis dentro de variáveis" e, particularmente, torna-se uma preocupação de segurança quando é exibido na variável %PATH% .

Eu não sei porque privilégios elevados poderiam fazer diferença em como esse bug é expresso. Na minha experiência, a reprodução do problema é tipicamente bastante esquisita de qualquer maneira. Mas o caso geral de variáveis dentro de variáveis que não estão sendo adequadamente expandidas é um bug conhecido, então eu não gastaria muito tempo tentando resolvê-lo.

A única solução que tenho em mente é editar as variáveis afetadas para que os caminhos sejam explicitamente definidos, em vez de depender de outras variáveis. Em qualquer lugar que você veja "% SystemRoot%" em %PATH% , substitua-o pelo valor exato de %SystemRoot% . Faça o mesmo com qualquer outra variável aninhada em seu ambiente onde for possível - especialmente onde essas variáveis definem caminhos de arquivos / pastas.

    
por 01.10.2015 / 17:22