Cosa fanno le impostazioni del registro EnableLinkedConnections a livello tecnico?


15

Nota: il problema di base per me è poter accedere a una condivisione di rete che io (utente amministratore di Win 7) ho impostato quando eseguo un programma elevato. Normalmente il programma elevato non avrà accesso alle mie condivisioni di rete non elevate.

Secondo Microsoft, l'impostazione del registro EnableLinkedConnections consentirà ai processi elevati di accedere alla condivisione di rete del processo explorer attualmente connesso (non elevato).

Questa spiegazione ha un senso:

[...] Quando sei un membro del gruppo Amministratori e accedi, il tuo account viene trasferito a UAC da un utente non privilegiato. Questo contesto in esecuzione è completamente separato dal contesto che si ottiene quando si fa clic con il pulsante destro del mouse su Prompt dei comandi e si avvia come amministratore. Come probabilmente avrai notato, le unità di rete connesse in un contesto non sono visibili nell'altro. [...]

Questo thread del forum chiede informazioni sulle vulnerabilità aperte da questa impostazione. La risposta fornita rimanda a un articolo sulla disabilitazione dei prompt di Controllo dell'account utente (o almeno così ho capito).

La questione ora è, che cosa fa l'EnableLinkedConnections impostazione di registro fanno o consentono su un sistema Windows 7, dato che ci troviamo non è in esecuzione in un ambiente di dominio .


Modifica: una cosa che mi interessa in particolare è se questa impostazione influisce solo sulla (visibilità di) unità di rete o se ha altre implicazioni.


Correlata è questa altra domanda sull'ELC che non funziona in alcuni casi: serverfault.com/questions/780639/…
UuDdLrLrSs

Risposte:


18

Non avendo accesso sorgente a Windows è difficile dire qualcosa che non sia speculazione. Quel disclaimer a parte, ecco cosa sono stato in grado di raccogliere leggendo su questo:

Controllo dell'account utente crea due token di sicurezza all'accesso: il token elevato contenente le appartenenze al gruppo completo dell'utente e il token limitato che ha l'appartenenza al gruppo "Amministratori" eliminato. Ogni token contiene un ID univoco localmente distinto (LUID) che identifica la sessione di accesso. Sono due sessioni di accesso separate e distinte.

A partire da Windows 2000 Server SP2, le unità mappate (che sono rappresentate come collegamenti simbolici nello spazio dei nomi del gestore oggetti) sono taggate con il LUID del token che le ha create (puoi trovare alcuni riferimenti Microsoft a questo comportamento in questo articolo di KBase e puoi scopri di più sulla meccanica della funzione in questo post sul blog ). L'essenza della funzionalità è che le unità mappate create da una sessione di accesso non sono accessibili a un'altra sessione di accesso.

Impostazione di EnableLinkedConnections valore attiva un comportamento nel servizio LanmanWorkstation e nel sottosistema di sicurezza LSA (LSASS.EXE) per indurre LSA a copiare le unità mappate da uno dei token degli utenti nel contesto dell'altro token. Ciò consente alle unità mappate con il token elevato di essere visibili al token limitato e al contrario. Non vi è alcuna peculiarità del comportamento di questa funzionalità rispetto al dominio rispetto a un ambiente non di dominio. Se i tuoi utenti sono in esecuzione con account "Amministratore" in un ambiente non di dominio, i loro token con restrizioni e token elevati, per impostazione predefinita, avranno mappature di unità indipendenti.

In termini di vulnerabilità, la documentazione ufficiale di Microsoft sembra mancare. Ho trovato un commento e una risposta di un dipendente Microsoft che mi chiedeva delle potenziali vulnerabilità in una conversazione sull'UAC del 2007. Dato che la risposta arriva da Jon Schwartz, che all'epoca era intitolato "UAC Architect", avrei tendono a considerare credibile la sua risposta. Ecco l'essenza della sua risposta alla seguente inchiesta: "... Non ho trovato alcuna informazione per descrivere ciò che sta realmente accadendo tecnicamente o se questo apre qualche tipo di scappatoia UAC. Puoi commentare?"

Tecnicamente, apre una piccola lacuna poiché il malware non elevato può ora "pre-seeding" una lettera di unità + mappatura nel contesto elevato - che dovrebbe essere a basso rischio a meno che non si finisca con qualcosa che è specificamente su misura per il proprio ambiente.

Personalmente, non riesco a pensare a un modo per "sfruttare" questa scappatoia, nella misura in cui "seeding" del token elevato con una mappatura di unità richiederebbe comunque all'utente di elevare ed eseguire effettivamente qualcosa di dannoso da quella mappatura di unità "seminata". Non sono un ricercatore di sicurezza, tuttavia, e forse non mi sto avvicinando a questo con una buona mentalità per inventare potenziali exploit.

Ho evitato di utilizzare il valore EnableLinkedConnections nei siti dei miei clienti continuando la tendenza che abbiamo iniziato quando i clienti hanno iniziato a distribuire Windows NT 4.0, consentendo agli utenti di accedere con account utente limitati. Per anni ha funzionato bene e continua a funzionare bene in Windows 7.


RE: "Ho schivato usando il valore EnableLinkedConnections ... [facendo] accedere gli utenti con account utente limitati." - gli account utente con limitazioni possono eseguire applicazioni come amministratore? Pensavo non potessero. (Se non possono, allora non vedo come questo eviti il ​​problema - voglio dire, se mi lamentassi con un meccanico che il motore della mia auto strilla quando guido a 80 miglia orarie, non accetterei la correzione di lui appiattendo le mie gomme [mentre renderebbe impossibile guidare 80 mph, non risolverebbe il problema reale].)
BrainSlugs83

1
@ BrainSlugs83 - Stai fissando un commento in un piccolo paragrafo di una lunga risposta. La risposta ha dato all'OP quello che volevano (presumo, dal momento che hanno accettato): una descrizione di ciò che fa il valore del registro. Ho fatto quel commento disinvolto per dire all'OP che esiste un modo per evitare la necessità di utilizzare EnableLinkedConnections - semplicemente non dare agli utenti gli account amministratore e la necessità è alleviata. È il 2013, gli account utente limitati sono stati i consigli di Microsoft per quasi 10 anni. L'analogia della tua auto / meccanico è tesa, IMO. Questo non è un "problema" con il sistema operativo, è una funzione di sicurezza.
Evan Anderson,

Oh, sto assolutamente fissando; anche in caso di confusione: non sto sostenendo che la tua risposta sia errata. È stato molto bello, l'ho persino votato! - Ma sto risolvendo un problema molto reale che sto avendo - quindi, la domanda che ti ho posto per determinare se questa soluzione alternativa funzionerà o meno per me: "gli account utente con limitazioni possono eseguire applicazioni come amministratore?" ; Dalla tua risposta prendo atto che la mia ipotesi iniziale era corretta.
BrainSlugs83

Inoltre, sono fortemente in disaccordo sul fatto che l'analogia sia un tratto. Togliere la possibilità di eseguire app come amministratore sarebbe completamente simile a dare al mio computer una gomma a terra. Ho un progetto Microsoft Visual Studio che non riesce a compilare durante la fase di firma del codice se Visual Studio non viene avviato con "Esegui come amministratore". Ho tentato di risolvere questo problema, ma non ho trovato alcuna soluzione, su Google, blog o overflow dello stack (questo non è un incidente isolato). La possibilità di eseguire app come amministratore è un must per alcuni utenti (anche quando si utilizza solo software Microsoft).
BrainSlugs83

3
Se devi eseguire app come amministratore, ti consiglio di avere un secondo account utente e di usarlo per eseguire l'applicazione elevata con "Esegui come amministratore". Questa è l'unica scelta che vedo. Se l'applicazione non funziona correttamente con "Esegui come", l'applicazione è difettosa. (Direi anche che qualsiasi applicazione che richiede diritti di amministratore e non sia un'applicazione di amministrazione di rete o di computer è anche difettosa - software MSFT o no.) Trovo il software difettoso uno degli aspetti più frustranti del mio lavoro, quindi io può capire anche la tua frustrazione. Vorrei che ci fosse una buona soluzione.
Evan Anderson,

1

In poche parole, collega le tue credenziali di superutente con le tue normali credenziali. Naturalmente è più complesso, ma fondamentalmente, anche il tuo account "amministratore" su Windows 7 non è un amministratore, ma deve eseguire l'equivalente di SUDO su Linux per eseguire una moltitudine di operazioni. Quando si mappa un'unità di rete, è necessario eseguire questa operazione, ma l'unità di rete viene mappata solo per il superutente, non per l'utente normale. Questa impostazione del registro collega le credenziali del superutente con quelle standard ai fini delle unità mappate. In questo modo, entrambi possono accedere all'unità mappata anziché solo al superutente.


Potresti chiarire se questa impostazione in effetti riguarda solo le unità di rete? O ha altri effetti? (vedi q modifica)
Martin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.