A Ovest Di Paperino

Welcome to the dark side.

UAC: il buono, il brutto e il cattivo

Per motivi di tempo e perché mi aspettavo che la questione si sarebbe conclusa nel migliore dei modi a stretto giro di posta, mi sono astenuto da intervenire sulla debacle dei nuovi setting di default di UAC in Windows 7.

Comincio dalla fine: i nuovi setting di default, nonostante la mia tendenza paranoica, mi piaciono parecchio. L’obbiettivo delle modifiche apportate in Windows 7 è quello di cercare di distinguere le azioni iniziate dall’utente che clicca su qualcosa, da quelle delle applicazioni che impersonano l’utente. La questione è un po’ il Sacro Graal dell’informatica: chiunque ci riuscisse avrebbe inventato il primo sistema operativo a prova di malware, moderna macchina del moto perpetuo informatico. Gödel per fortuna ci dice che ogni sforzo è vano: se non si può capire a priori se un programma termina, figuriamoci se si può capire a priori cosa realmente fa il prograUACmma e con quali intenzioni. But I digress…

In Vista molto spartanamente è stato diviso l’amministratore in due entità separate e tutti i task che richiedono permessi amministrativi richiedono un prompt di conferma o la password. Questo significa che anche cambiare il fuso orario richiede un prompt UAC. Qualcuno però abituato ai silenzi di Windows XP ha dipinto la questione in maniera molto peggiore della realtà, come se vivesse a confine tra due fusi orari e avesse la necessità di cambiare questi importanti setting di sistema ogni 5 minuti. In Windows 7 Beta si è scelta un’altra via, evoluzione di tanti esperimenti fatti nelle build intermedie: è stata creata una lista di applicazioni di sistema (white-list) che a livello UAC di default consente all’utente loggato di auto-elevarsi ad amministratore senza nessun prompt, ovviamente a patto che l’utente appartenga al gruppo degli amministratori. L’intento, come citato sopra, è di dare ai vari pannelli di controllo la possibilità di cambiare i setting di sistema senza necessariamente disturbare l’utente.

L’idea della whitelist non è una grandissima novità in quanto anche su Unix esiste un meccanismo simile preso in considerazione anche prima del rilascio di Vista; pero tale meccanismo ha un punto debole che nell’ecosistema Windows non è sostenibile: qualsiasi amministratore può aggiungere/rimuovere applicazioni dalla whitelist. Nel passaggio tra XP a Vista il meccanismo sarebbe stato ampiamente abusato da tutti i produttori di applicazioni pigri (e quindi tutti) che tra rendere l’applicazione capace di girare senza permessi di amministratore e settare un flag sull’eseguibile avrebbero scelto la seconda senza pensarci due volte considerando che l’installer gira sempre con permessi amministrativi. L’idea è stata perciò accantonata con Vista e ripresa con Seven usando un espediente semplice e geniale: la whitelist è sigillata con una firma digitale e quindi non è manipolabile in nessun modo.

La whitelist rilasciata con la beta è ben lungi da essere perfetta ma tra le tante applet quella che ha dato più nell’occhio è stata l’applet che gestisce i setting UAC. Siccome l’applet esegue un’auto-elevazione senza altre misure di protezione è stato possibile scrivere uno script che emula la pressione di alcuni tasti in sequenza e disabilitare UAC automaticamente. Rafael Rivera ha pubblicato un post a riguardo che è rimbalzato in tutta la blogosfera catturando una notevole attenzione mediatica; Rafael e tanti altri proponevano di rimuovere l’applet UAC dalla whitelist ed in tal modo qualsiasi tentativo di cambiare il setting UAC dall’esterno avrebbe richiesto un ulteriore prompt mettendo in guardia l’utente. Però come in un dialogo tra muti e sordi la risposta ufficiale ‘by design’ è suonata un pochino stonata. Il ping pong tra Jon DeVaan e i vari blogger ha assunto connotati surreali fino a quando una nota di ‘retromarcia’ è apparsa sul blog Engineering Windows 7 portando finalmente giubilo, pace e serenità. Se si legge tra le righe si comprende bene qual’era il vero problema e la giusta soluzione: il problema non stava nel fatto che cambiare i setting di UAC non richiedesse nessun prompt ma che l’applet fosse pilotabile da altre applicazioni; individuato il problema (la pilotabilità) la soluzione è diventata ovvia: anziché usare il secure desktop basta aumentare il livello di integrità in cui l’applet gira per impedire che riceva messaggi dalle applicazioni desktop che girano sotto l’utenza normale. Basterebbe questo per risolvere il problema e rimuovere UAC dalla whitelist non diventa più necessario; quest’ultima cosa è stata comunque fatta più per motivi psicologici (su cui concordo pienamente!) che per necessità contingenti.

La cosa più buffa di tutta la questione è stato vedere gente che non sa neanche cos’è un security boundary sostenere con forza l’una o l’altra posizione o elargire consigli a destra e a manca.

C’est la vie

Linkografia a futura memoria:

Windows 7 auto-elevation mistake lets malware elevate freely, easily
List of Windows 7 (beta build 7000) auto-elevated binaries
Second Windows 7 beta UAC security flaw- malware can silently self-elevate with default UAC policy
Update on UAC
Is UAC broken in Windows 7 beta-
Microsoft’s worst nightmare- Windows 7 deemed less secure than Vista
Permanent Link to UAC in 7- Exponential Silent Attack Vector Multiplier
UAC Feedback and Follow-Up
Users prevail- Microsoft changes Windows 7 UAC control panel behavior to address security flaw
Microsoft backtracks on Windows 7 UAC, pretends it was all part of the plan

-quack

P.S. il mio consiglio: se non usate un antivirus, lasciate pure i setting di default di Windows 7 Beta, siete abbastanza accorti da evitare di far girare certa robaccia sul PC. Se usate un antivirus…. è uguale!