5 minutes pour comprendre UAC et ses implications sur nos codes sous Vista

UAC en 10 lignes :

L’objectif d’UAC est de filtrer (limiter) les droits du jeton associé à un processus Windows Vista.

A la création d’un processus en mode user, le système créé depuis l’origine de WindowsNT (Win32) un jeton de sécurité.

Ce jeton associé au processus et donc aux threads évoluant dans celui ci, est utilisé pour fournir les droits lorsque des permissions sont demandés pour accéder aux différentes ressources du système.

Sans UAC et lorsque rien n’est précisé explicitement en terme de droits et/ou utilisateur, (ie, passer null dans les différentes structures de création de processus ou de thread), c’est le jeton par défaut qui est utilisé : celui de votre log-on (notons que ce sont ces même droits dans ce cas, qui sont a la « portée » d’un hacker….).

Avec UAC, le jeton est filtré à la création du processus. Le système limite ainsi les droits associés a celui-ci, ce qui peut impacter le bon fonctionnement de vos applications, mais permettant de garder le contrôle sur un certain nombre d’actions (ie celle proche du système).

En complément du filtrage des droits du jeton, Vista apporte une virtualisation du registre et des dossiers systèmes. Ainsi une application n’atteindra pas réellement HKLocalMachine ou c:\program file, mais sera déroutée vers un dossier par utilisateur. Cette virtualisation limite les accès aux ressources clé du système et doit donc le protéger d’actions malveillantes ou « hasardeuses »

 

UAC a un impact sur nos codes tournant sur Vista

Il est crucial de valider le bon fonctionnement de votre application sur Vista, et le cas échéant opter pour une stratégie d’adaptation.

En premier lieu sachez qu’il existe des outils pour tester le fonctionnement de vos application avec UAC et la virtualisation du registre et des dossiers système active (Standard User Analyser permet de tracer toutes les actions d’une application comme les accès au registre les droits demandés ou les répertoires utilisés)

Au regard des résultats des tests, plusieurs options s’offrent à nous :

Forcer l’application a tourner en mode admin non filtrés

               Run as admin de l’ explorateur Windows

                Inclure un manifeste dans l’application indiquant les doits nécessaires dés le démarrage(c’est également par ce biais que l’on peut désactiver la virtualisation)

Se relancer en admin

                Cas du Gestionnaire de tâche de Windows

Lancer un second processus

                Création » manuelle » d’un nouveau processus (shellexecute)

                Création automatique d’un second processus (Moniker COM, sur un objet en mode exe)

 

Dernière info pour aller plus loin, il viens d’être publié sur Channel9 une interview de Jon Schwartz, Architecte d’UAC, ca vaut le coup de prendre une heure pour l’écouter…

 

Eric