SSTIC 2012 - WinRT

Windows RunTime

par des gens de quarkslab. (dont Fred Raynal aka @pappy est le fondateur).

Après une petite régression gastronomique au RU de beaulieu, et pendant que Linkedin se transforme en Leakedin, nous sommes de retour pour assister à la présentation de Windows RunTime.

Qu’est ce qu’il y a de nouveau dans Windows 8 ? les auteurs ont fait un bindiff entre le kernel Windows 7 et Windows 8. et en faisant ça ils sont tombé sur le Windows RunTime.

Metro c’est la nouvelle interface de Windows 8. Le windows runtime sert de framework de dev et de moteur permettant de faire tourner les applications Metro. Le desktop Windows 8 ressemble à un patchwork de tuiles (tiles) de couleur.  A noter que le desktop est caché et il faut utiliser une touche spéciale pour y accéder (avec en prime la disparition du menu démarrer qui est disponible sous forme d’application tierce source:@H_Miser).

Les applications Metro ne sont distribuées qu’au travers du Windows store (à la apple/google). et les applications sont exécutées dans un app container qui sécurise l’exec au sein d’une sandbox (c’est à la mode). Le développeur doit bien entendu spécifier les besoins de l’application (réseau, fichier, etc…).

Tout ceci repose au dessus de la technologie COM & Win32. Les applications winRT sont installées pour un utilisateur. Donc si une application est utilisée par plusieurs utilisateurs, chacun devra installer la sienne. (On comprend mieux l’histoire du lock du boot des pc windows 8 dans un modèle de store).

Bien entendu les packages d’applications Metro ciblent plusieurs plateformes x86, x64 et ARM. La base de registre reste toujours présente bien que masquée :s. Toutes les informations liées à l’application sont stockées dans la base de registre liée à l’utilisateur (HKCU).

Les Capabilities sont là pour restreindre les droits de l’application façon android. Le développeur déclare ce dont il a besoin. Par défaut une application metro est restreinte au localstorage de son dossier.

Le démarrage d’une application se fait au travers d’une découverte de classes. Ainsi lorsque l’utilisateur clique sur une tuile de l’application, Explorer.exe part à la recherche de l’application et active la classe correspondante à l’application. Puis en causant avec RPCSS, explorer.exe checke si l’application tourne déjà sur la machine. Si ce n’est pas le cas, il demande à DCOM Launch d’exécuter l’application.

Les auteurs ont ensuite analysé la Sandbox de WinRT. Les droits et accès sont gérés à coups de Jetons. cependant une application WinRT peut malgré tout appeler n’importe quel appel système, et les fichiers sur les partitions FAT ne sont pas sécurisables au niveaux accès.

Cependant cette sandbox est plus faite pour restreindre au niveau logiciel que pour protéger l’environnement lors de l’exécution d’une application malveillante (comme c’est le cas pour chrome).

Pour conclure, WinRT est une nouvelle conception des applications avec une API sur mesure principalement basée sur du COM. Le niveau d’isolation fournit par l’AppConteneur est plutôt correcte, et c’est transparent pour le développeur.