Surveillance de la sécuritéRenforcement des services dans Windows Vista

Wole Moses

Microsoft a annoncé son initiative Trustworthy Computing Initiative au début de l'année 2002, à la suite de l'apparition de plusieurs virus et vers de haut niveau, ayant ravagé les systèmes Windows et paralysé des services informatiques, et dont la résolution a coûté des sommes énormes aux entreprises et aux consommateurs. Dans le cadre de cette initiative, Microsoft a publié un

mea culpa en ce qui concerne ses résultats en matière de sécurité et a opéré un changement de cap rapide et un changement de paradigme en passant du développement de logiciels mettant l'accent sur la richesse des fonctionnalités et la convivialité à de nouvelles priorités : la sécurité et l'intégrité des logiciels. Le ver Blaster a frappé en août 2003, ce qui a donné un coup de fouet à l'initiative de sécurité. (Pour connaître l'histoire de Blaster, consultez l'encadré « L'attaque des clones ».)

Les principes de cette initiative informatique sont « Sécurisation par conception », qui concerne les philosophies de codage sécurisé, « Sécurisation par défaut », qui consiste à garantir que les composants Windows® se configurent par défaut sur le paramètre le plus sûr possible, et « Sécurisation dans le déploiement », qui concerne la création d'outils et de conseils préventifs destinés à aider les entreprises et les consommateurs à sécuriser leur infrastructure Windows.

Dans l'ensemble, l'initiative Trustworthy Computing Initiative s'est traduite par améliorations majeures de la sécurité. Malheureusement, Windows XP n'a jamais pu en bénéficier entièrement car il a été publié deux années avant le début de l'initiative. (Bien que le Service Pack 2, SP2, ait fait d'énormes progrès pour incorporer ces philosophies, Windows XP ne pouvait pas être complètement intégré dans cette initiative).

Ainsi, Windows Vista™ est le premier système d'exploitation de bureau Microsoft répondant entièrement aux objectifs d'une informatique fiable. Le Renforcement des services Windows Vista, une mise en œuvre spécifique du principe Sécurisation par défaut (voir Figure 1), représente une nouvelle fonctionnalité essentielle conçue pour contrecarrer les comportements de service déviants d'une bonne partie des logiciels malveillants actuels. Le renforcement des services permet à Microsoft de prendre des mesures importantes pour modifier le comportement par défaut et le profil de sécurité des services Windows.

Figure 1 Sécurisation par défaut : Services Windows

Fonctionnalité Description Résultat
Privilège minimal Les services de Windows Vista sont configurés pour utiliser le minimum de privilèges nécessaires pour s'exécuter. Windows Vista réduit les privilèges de sécurité par défaut accessibles aux services Windows, ce qui diminue l'impact potentiel des logiciels malveillants.
Isolation de services Les SID de service permettent d'autoriser des services à s'exécuter dans les comptes à faibles privilèges. Windows Vista peut contrecarrer les logiciels malveillants en limitant l'accès à ses ressources en fonction des SID des services.
Accès réseau limité Des restrictions de réseau sont mises en œuvre par défaut sur tous les services Windows Vista. Windows Vista empêche les logiciels malveillants d'utiliser des services pour effectuer des activités réseau illégitimes.
Isolation de la session 0 La session 0 est réservée aux services. Windows Vista empêche les applications malveillantes de détourner des services à privilèges élevés en utilisant des attaques par messages puisqu'ils ne sont plus exécutés dans la même session.

Services à haut risque

Les services Windows, anciennement appelés services NT, sont des applications exécutables de longue durée qui s'exécutent au sein de leurs propres sessions Windows. Ils peuvent être lancés automatiquement au démarrage de l'ordinateur, arrêtés et redémarrés. Ils n'affichent généralement pas d'interface utilisateur et peuvent s'exécuter dans le contexte de la sécurité d'un compte différent de celui de l'utilisateur connecté ou du compte d'ordinateur par défaut. Les services Windows sont ainsi très utiles pour certains types de développement d'applications et pour les utilisateurs finaux qui ont besoin de ces applications. Cependant, du fait de leur puissance et de leur flexibilité, les services Windows ont toujours été vulnérables à une exploitation malveillante, et ce pour plusieurs raisons.

Premièrement, dans le passé, les services Windows s'exécutaient généralement dans des comptes Windows à privilèges élevés, tel que le compte LocalSystem. Si un service s'exécutant dans le compte LocalSystem est compromis par un logiciel malveillant, ce dernier a une forte chance de pouvoir faire tout ce qu'il désire sur ce système. Considérons, par exemple, le service d'appel de procédure distante (RPC) dans Windows XP. Avant Windows XP SP2, le service RPC fonctionnait sous le compte LocalSystem, ce qui permettait à Blaster, Welchia et à d'autres vers d'exécuter des tâches administratives une fois qu'ils avaient exploité la vulnérabilité de RPC.

Deuxièmement, de nombreux services sont orientés vers le réseau, ce qui fournit au logiciel malveillant la possibilité de les exploiter en créant des connexions entrantes vers eux via le réseau, et à un service infecté la possibilité de créer une connexion sortante pour infecter d'autres systèmes ou exécuter une autre activité illicite telle que transférer des séquences de frappe contrôlées. La plupart des infections de vers et de logiciels malveillants actuelles surviennent par le biais une méthode de connexion réseau.

En fait, les services sont généralement exécutés sur une longue période, ce qui signifie qu'ils s'exécutent depuis le moment où un système démarre et jusqu'à son arrêt. Ceci est intéressant pour les auteurs de logiciels malveillants parce que cela signifie qu'ils peuvent sonder les failles de ce service aussi longtemps que le système est activé, ce qui laisse finalement au logiciel malveillant tout le temps nécessaire pour mettre en œuvre ses activités de nuisance.

L'attaque des clones

Ce pourrait être son plus grand triomphe. Si tout marchait selon ses plans, il pourrait bientôt contrôler des centaines de milliers de systèmes Windows dans le monde, leur donner pratiquement n'importe quelle instruction, puis se retirer et les regarder exécuter sagement chacune de ses commandes.

Tenace et néanmoins insaisissable dans ses méthodes, il commença par sonder subrepticement plusieurs systèmes informatiques pour chercher un point d'entrée vulnérable. Il ne lui fallut pas longtemps pour trouver exactement ce qu'il cherchait :un système non protégé souffrant d'une vulnérabilité connue qu'il savait parfaitement comment exploiter.

Ce qui rendait cette vulnérabilité si dangereuse, c'est qu'en l'exploitant correctement, il pouvait obtenir un accès administrateur total au système. Il ne prenait pas le contrôle d'un seul compte : il manipulait le compte administrateur le plus puissant dans Windows. Ses actions n'étaient plus limitées que par son imagination.

Après un moment de réflexion, il entreprit de tester son code voyou sur l'ordinateur non protégé et vulnérable, et découvrit que cela fonctionnait ! Aussi simple que cela, il possédait maintenant des privilèges illimités sur l'ordinateur. Il utilisa son accès administratif pour forcer la machine à télécharger et installer un code de cheval de Troie, à modifier le Registre et à redémarrer, transformant ainsi ce système infecté en un pantin tout disposer à exécuter ses commandes. Grâce à la modification du Registre, le logiciel malveillant s'exécutait à chaque redémarrage de l'ordinateur.

Maintenant ses intentions étaient évidentes. En cas d'infection, l'ordinateur contaminé sonderait des ports de réseau spécifiques sur tous les autres ordinateurs du réseau. Si un port de réseau était ouvert et que l'ordinateur était vulnérable, le code de cheval de Troie serait téléchargé et installé sur cette nouvelle machine. Les mêmes modifications du Registre se produiraient. Ce cycle se répéterait en permanence et produirait une immense armée de clones d'attaque. À la fin de la journée, des milliers de systèmes Windows dans le monde faisaient partie de sa sinistre armée, ne répondant plus à aucune commande émise par quiconque.

Comme si cela ne suffisait pas, il se tourna ensuite vers le site Microsoft Windows Update et ordonna à tous ses clones d'exécuter une attaque de déni de service le 15 août 2003 pour tenter d'empêcher tout ordinateur dans le monde de télécharger le correctif de vulnérabilité qui, détail intéressant, était disponible depuis des mois.

Vous aurez probablement compris que je viens de décrire la pandémie du ver MS Blaster qui, en août 2003, a frappé les ordinateurs Windows auw quatre coins du globe. Blaster est sans doute l'une des plus attaques les plus graves jamais subies par Windows et a provoqué des milliards de dollars de dommages. L'ironie est que bien que MS Blaster eût un pouvoir énorme sur les machines qu'il avait infectées, il était remarquablement simple dans sa mise en œuvre.

Fonctionnement de Blaster

Blaster et ses dérivés utilisent une vulnérabilité du service RPC de Windows pour saturer la mémoire tampon. Un attaquant qui parvient à exploiter cette vulnérabilité peut exécuter un code avec les privilèges LocalSystem sur un système infecté, ce qui lui permet d'entreprendre n'importe quelle action sur le système : installer des programmes, afficher, modifier ou supprimer des données, et créer de nouveaux comptes avec des privilèges complets.

Dans le cas de Blaster, le ver analyse automatiquement les réseaux à la recherche d'ordinateurs dont le port TCP 135 est ouvert. Dès qu'il trouve une victime, Blaster tente d'exploiter la vulnérabilité de RPC. S'il réussit, il se connecte ensuite au port 4444 de la cible et ordonne à l'ordinateur infecté de lancer le protocole tfpt (Trivial File Transfer Protocol) et de télécharger une copie du ver, appelé MSBLAST.EXE, à partir du système infecté. (tftp est intégré dans Windows 2000, Windows XP et Windows Server 2003 en tant qu'élément à part entière du système d'exploitation.) Le système attaquant ordonne ensuite à l'ordinateur récemment infecté de lancer MSBLAST.EXE, l'ordinateur victime devenant alors un nouvel attaquant. Blaster écrivait également du code dans la clé de Registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run, ce qui lui permettait de s'exécuter à chaque démarrage de l'ordinateur.

Renforcement des services

Les services ont été renforcés et sécurisés de quatre façons dans Windows Vista : exécution de services avec le Privilège minimal, isolation de services, accès réseau limité et isolation de la session 0. Je les aborderai chacun en détail.

Utilisation du Privilège minimal De nombreux services Windows s'exécutaient auparavant dans le contexte du compte LocalSystem, le compte le plus puissant dans Windows. Le compte LocalSystem possède des droits d'utilisateur et des privilèges tels que la capacité d'accéder à presque n'importe quel objet du système ou à un autre profil d'utilisateur, d'emprunter l'identité des utilisateurs, d'ouvrir des clés de Registre sensibles comme HKLM\SECURITY et de présenter les informations d'authentification de l'ordinateur aux serveurs distants. Dans la mesure où les auteurs de code malveillant adoreraient bénéficier de ce niveau d'accès et contrôler Windows, tout service s'exécutant dans le contexte de la sécurité du compte LocalSystem est susceptible de devenir une cible juteuse.

Il s'avère que, bien que plusieurs services Windows aient été configurés pour s'exécuter sous le compte LocalSystem, nombre d'entre eux n'ont besoin que d'un petit sous-ensemble des privilèges propres au compte LocalSystem. Malheureusement, Windows XP et les versions précédentes de Windows fonctionnent en mode « tout ou rien », ce qui veut dire qu'ils ne fournissent pas de mécanisme permettant de sélectionner les privilèges nécessaires. Ainsi, beaucoup de services Windows finissent inévitablement par s'exécuter avec des privilèges de sécurité excessifs.

Le renforcement des services Windows Vista traite ce problème en introduisant le concept de privilège minimal à la configuration des services. Celui-ci permet aux services de s'exécuter avec le minimum de privilèges nécessaires pour fonctionner, au lieu de les forcer à s'exécuter avec tous les privilèges par défaut attribués au compte qu'ils utilisent pour ouvrir une session.

Par exemple, un service peut avoir besoin de pouvoir agir en tant que partie du système d'exploitation mais n'a pas besoin de pouvoir créer un jeton de sécurité. Avec le privilège minimal, vous pouvez supprimer le privilège de création de jeton. Par conséquent, vous diminuez les dommages susceptibles d'être causés par un attaquant si ce service devient par la suite vulnérable à une faille. Les développeurs peuvent utiliser les outils de ligne de commande tels que SC.exe (voir Figure 2) ou des méthodes de programmation pour définir et spécifier les privilèges dont leur service a besoin. Par défaut, Microsoft a appliqué le privilège minimal pour réduire les privilèges par défaut sur tous les services Windows Vista pré-installés.

Figure 2 Les options de commande SC définissent les privilèges des services Windows Vista

Figure 2** Les options de commande SC définissent les privilèges des services Windows Vista **(Cliquer sur l'image pour l'agrandir)

Isolation de services Dans les versions de Windows antérieures à Windows Vista, lorsque un service doit accéder à un objet avec privilèges (tel qu'une clé de Registre ou un fichier sensible), les services y accèdent par le biais de l'une de ces trois méthodes : utilisation du compte LocalSystem pour accéder à l'objet, diminution de la sécurité sur la clé de Registre ou le fichier pour autoriser l'accès par un compte de service à privilèges moindres, ou création d'un compte spécialement pour le service et autorisation d'accéder aux objets seulement pour ce compte.

Même si ces approches fonctionnent toutes, elles posent chacune des problèmes fondamentaux. Les deux premières sont en soi risquées et la dernière impose une gestion manuelle lourde des mots de passe sur les nouveaux comptes.

Supposons, par exemple, qu'un antivirus installe un service qui a besoin d'accéder à plusieurs objets système sensibles, tels que le fichier de signatures de virus et les entrées de Registre se rapportant à l'antivirus. Si le service antivirus a été configuré pour utiliser le compte LocalSystem ou, d'ailleurs, n'importe lequel des autres comptes de sécurité incorporés, pour accéder à ses objets, cela signifierait que si un autre service Windows ayant utilisé ce compte est infecté par un logiciel malveillant, ce logiciel malveillant pourrait atteindre et modifier les fichiers de signatures d'antivirus, changer les paramètres du Registre relatifs au fonctionnement de l'antivirus, ou simplement arrêter le complètement le service antivirus. En fait, les logiciels malveillants d'aujourd'hui utilisent précisément certaines de ces techniques pour rester masqués et opérationnels.

Windows Vista traite ces problèmes de sécurité et de gestion grâce à l'isolation de services, qui permet à un service de réserver un objet pour son usage exclusif en sécurisant la ressource, telle qu'un accès à un fichier ou une clé de Registre, avec une entrée de contrôle d'accès contenant un ID de sécurité (SID) de service. De la sorte, le service antivirus décrit dans notre exemple pourrait s'exécuter dans un compte à faibles privilèges tout en conservant l'accès aux fichiers de signatures ou aux clés de Registre sensibles. Pour autoriser cet accès, Windows Vista affecterait un SID au service antivirus (s'exécutant dans ce compte à faibles privilèges). Une fois le SID attribué, le programme antivirus pourrait ensuite modifier les listes de contrôle d'accès (ACL) de ses objets de système de fichiers et de Registre pour accorder l'accès au service antivirus exclusivement.

Voici un autre exemple. En 2003 le ver Welchia a commença à profiter d'une vulnérabilité de RPC pour s'écrire lui-même dans %System%\Wins\Dllhost.exe. Il ajoutait également des clés à HKLM\SYSTEM\CurrentControlSet\Services afin d'installer ses propres services sur le système Windows infecté. Aujourd'hui, cependant, Windows Vista pourrait contrecarrer Welchia en limitant l'accès à ces deux emplacements aux seuls services appropriés et en utilisant les comptes à faibles privilèges pour accorder l'accès à ces services.

Accès réseau limité Windows Vista inclut un nouveau pare-feu qui exploite les fonctionnalités fournies dans le pare-feu Windows XP SP2. Les nouvelles fonctionnalités clés incluent le filtrage sortant et l'intégration d'IPSec. Le nouveau pare-feu s'intègre également au Renforcement des services Windows Vista pour que le logiciel malveillant puisse moins facilement s'exécuter dans un service Windows afin d'effectuer certaines activités réseau illégitimes.

Dans le pare-feu de Windows Vista, les services Windows sont affectés de stratégies de pare-feu de réseau qui fournissent des limitations et des restrictions sur le comportement du service. Par exemple, un service comme Plug-and-play, qui peut ne jamais avoir besoin de communiquer via un port réseau, peut se voir affecter la restriction « aucun accès réseau ». Avec cette restriction, une faille conçue pour viser ce service particulier ne pourrait jamais atteindre le service par le biais d'une approche basée sur réseau. N'importe quelle tentative de communiquer, entrante ou sortante, par ce service limité serait bloquée par le pare-feu. Les autres services qui ont des besoins légitimes d'accéder à un réseau peuvent être configurés pour utiliser uniquement des ports spécifiques. Les développeurs peuvent profiter de cette fonctionnalité pour limiter l'accès réseau de leur service.

Les restrictions réseau peuvent s'associer au Renforcement des services pour fournir une bonne défense contre les attaques basées sur les services potentielles, ce qui constitue une amélioration notable par rapport aux versions précédentes de Windows. Auparavant, Windows ne pouvait pas décider comment, où, et quels services étaient autorisés à communiquer via le réseau. Toutefois, en utilisant les restrictions réseau du pare-feu de Windows Vista contre le service RPC, nous pourrions empêcher des virus tels que Blaster, Sasser ou Welchia d'utiliser des services infectés pour communiquer avec d'autres machines.

Isolation de la session 0 La fonction Changement rapide d'utilisateur de Windows XP prend en charge des utilisateurs connectés simultanément en plaçant chaque utilisateur dans une session de Windows différente. La session 0 est créée lors du démarrage et d'autres sessions sont ajoutées si nécessaire. Les services se sont toujours exécutés dans la Session 0 et, avant Windows Vista, des applications utilisateur pouvaient également s'exécuter dans la Session 0. Cependant, l'exécution des applications utilisateur et des services Windows dans la même session pose des problèmes de sécurité, parce que les services s'exécutent avec des privilèges élevés et sont donc des cibles pour les logiciels malveillants qui cherchent un moyen d'élever leur propre niveau de privilège.

Windows Vista élimine ces risques de sécurité en réservant exclusivement la Session 0 aux services exécutant des applications dans les autres sessions, et en rendant la Session 0 non interactive (ce qui signifie qu'un service ne peut pas créer d'interface utilisateur, telle qu'une boîte de dialogue ou une invite, accessible à un utilisateur final). En raison de ces modifications, l'Isolation de la session 0 influe sur la compatibilité des applications pour toute personne développant des services ou des pilotes Windows.

Résumé

Windows Vista est la première version complète de système d'exploitation informatique de bureau fiable de Microsoft et introduit des avancées significatives et durables vers la protection des utilisateurs de Windows. La sécurité informatique est, bien sûr, une discipline en évolution et il ne fait aucun doute que les auteurs de logiciels malveillants recherchent, testent et développent constamment de nouvelles façons d'exploiter Windows. Cependant, les nouvelles fonctionnalités de renforcement des services de Windows Vista élèvent la barre de façon significative en améliorant les paramètres de sécurité par défaut et en réduisant les espaces potentiels pour une attaque. Voir microsoft.com/whdc/system/vista/Vista_Services.mspx pour plus d'informations sur ces améliorations substantielles.

Wole Moses est responsable régional Microsoft Windows et travaille chez Microsoft depuis huit ans. Actuellement basé à Istanbul, Turquie, Wole travaille avec les principaux clients des nouveaux marchés au Moyen-orient et en Afrique pour les aider à visualiser et à concevoir des solutions de base Microsoft destinées à optimiser leur infrastructure informatique tout en optimisant la sécurité.

© 2008 Microsoft Corporation et CMP Media, LLC. Tous droits réservés. Toute reproduction, totale ou partielle, est interdite sans autorisation préalable.