A Ovest Di Paperino

Welcome to the dark side.

UAC prompt e sicurezza

Via punto di Vista ho saputo che su Register si è parlato di una delle euristiche usate da Vista per capire se una applicazione è un installer, facendola sembrare quasi un probema di sicurezza.

La questione è questa: se si prende un qualsiasi eseguibile non-Vista (dopo spiego cosa vuol dire) e lo si rinomina in install, setup o altro, Vista lo "riconosce" come un programma di installazione e per la sua esecuzione presenterà all'utente il prompt UAC (rappresentato con l'icona dello scudo sovraimposta all'icona del programma). Se si fa la stessa cosa con un eseguibile Vista, questo semplicemente non accade. Per spiegarmi meglio allego una immagine, che vale mille parole:

Come si può vedere l'applicazione non-Vista PureText viene riconosciuta come un installer se rinominata "setup". La stessa cosa non accade per il Notepad.

Cosa vuol dire applicazione "non-Vista" in questo contesto? Vuol dire applicazione compilata per XP (che funziona lo stesso su Vista) non contenente un header speciale chiamato manifest (sto volutamente semplificando). Tutti gli eseguibili per Vista (ulteriore semplificazione), inclusi ovviamente quelli che fanno parte del sistema operativo come Notepad, includono un manifest di default. Nel manifest c'è scritto di quali permessi l'applicazione ha bisogno. Nel caso di notepad, nel manifest c'è scritto semplicemente "gira perfettamente come utente normale": quindi anche cambiandone il nome, non si sortisce nessun effetto perché il manifest è il primo posto in cui il sistema operativo va cercare questo tipo di informazione.

Il fatto è che ci sono svariate migliaia di applicazioni (tra cui ad esempio PureText) che non hanno il manifest ed il sistema operativo ha bisogno di decidere se l'applicazione potrebbe avere bisogno di permessi da amministratore[1] o meno. Qui interviene l'euristica: molti sistemi di installazione (Wise, InnoSetup, ecc.) introducono nei programmi di installazione delle vere e proprie firme facili da identificare. Il problema è che non tutti i programmi di installazione (ce ne sono davvero tanti home-made!) sono generati attraverso questi tool: c'è il rischio che molti programmi di installazione non vengano riconosciuti come tali e possano perció rappresentare una poor experience per l'utente inesperto. Da qui la scelta di allargare l'euristica con il rischio (in realtà estremamente basso) di creare qualche falso positivo (chi è quel programmatore che chiamerebbe l'applicazione "solitario" con il nome "setup.exe"?).

I falsi positivi peró, contrariamente a quanto sembrerebbe ad un primo impatto, non rappresentano un problema di sicurezza. Qualcuno infatti tenderebbe a pensare: «mmm, se volessi far girare la mia applicazione come amministratore mi bastarebbe chiamarla semplicemente "setup"». Questo non è un rischio di sicurezza perché, se qualcuno volesse creare una applicazione che richiede permessi di admin, basterebbe semplicemente che vi ci aggiunga il manifest adatto e la chiami "conigli danzanti". L'unico disagio che un falso positivo rappresenta sta nel fatto che non si può far girare l'applicazione da utente "normale" senza prima rinominarla. 

C’è da aggiungere che, qualsiasi applicazione che venga riconosciuta come “applicazione che richiede permessi di admin”, viene sempre fatta precedere da un prompt UAC laddove UAC non è disabilitato (io sconsiglio di disabilitare UAC).

Update: Ma non si potrebbe semplicemente invocare UAC solo quando si scopre che il processo ha effettivamente bisogno dei permessi di amministratore (grazie Sirus per l'ottima domanda)? Per come funziona Windows (e anche altri OS) i permessi associati ad un processo non possono essere cambiati una volta che il processo è stato creato. Quindi, per una soluzione "ottimale", bisognerebbe sapere in anticipo cosa un processo potrebbe fare. Se con alcune applicazioni nuove è possibile (le applicazioni dotate di manifest), con quelle vecchie di cui si parla sopra semplicemente non si può. L'euristica, per quanto "banale", rimane perció la soluzione migliore.

Per concludere, vorrei far notare che questo tipo di osservazione (cioé che questa feature rappresenti un problema di sicurezza) è molto simile a quei bachi di sicurezza che cominciano con la frase "loggandosi come amministratore...": semplicemente un "falso allarme". L'allarmismo non è necessariamente una cosa negativa (meglio un falso allarme che un buco di sicurezza) ma strumentalizzato in un certo modo lascia un po' di amaro in bocca (e di certo non mi riferisco a "punto di Vista", ma a talune pubblicazioni "contro a priori")

Enjoy!

-quack


[1] richiesti ad esempio per poter scrivere e modificare il folder "C:\Program Files"

Technorati tags: ,