La division Sécurité des laboratoires de l'IT de l'institut national américain des standards et de la technologie (NIST) publie ses recommandations quant à la sécurisation des Services Web : "Guide to Secure Web Services". Ce guide constitue une excellente introduction à la problématique de sécurisation des échanges via les Services Web.

Le guide débute par une présentation rapide des concepts associés aux Services Web : la mise en relation des services, la transmission de messages, l'accès aux services, les intervenants dans la chaîne d'invocation d'un service (le consommateur, le fournisseur et les intermédiaires), et enfin la nécessaire orchestration.

De façon classique, la sécurité des Services Web reprend les éléments standards de sécurité (Identification, Autorisation, Intégrité, Non répudiation, Confidentialité, et Restriction de l'accès). Ces caractéristiques se traduisent par les dimensions.

  • La sécurisation des messages : au niveau du transport ou bien du message SOAP
  • La protection des ressources : au travers de l'authentification et la gestion des autorisations
  • La négociation des contrats : afin d'établir la future communication, il est nécessaire de
  • L'établissement de relations de confiance : basées sur une authentification point à point ou la mise en place d'une gestion fédérée des identités
  • La prédictibilité, la disponibilité et la conformité sont aussi requis comme pour tout logiciel se prétendant sécurisé.
    • La pile des protocoles concourant à la sécurisation des Services Web y est présentée sous la forme originale d'une stack OSI.

        Web Services Security Standards

      La couverture des fonctionnalités de sécurisation SOA proposée par chaque protocole y est synthétisée comme suit.

      Si bien que le guide présente l'ensemble des menaces de sécurité encourues par les Services Web, et comment les standards WS-* se complètent pour endiguer ces menaces sur la figure suivante :

      Threats Adressed by Current Web Service Standards

      Les rédacteurs soulignent qu'il n'y a pas de standards pour contrer les attaques de type Deny Of Service, et qu'il est bien sûr du ressort de l'infrastructure de préserver la disponibilité des services. Les technologies utilisées pour les applications Web seront de mises sur ce point : Load Balancing, utilisation de clusters et la réplication …

      J'ajoute sur ce point que la stack de communication orientée services WCF de Microsoft ainsi que les fonctionnalités intrinsèques des OS Windows Serveur 2003 (complété par IIS) et Windows Serveur 2008 (complété par IIS 7 et le WAS - Windows Activation Service) sont riches de mécanismes complémentaires pour assurer la disponibilité des services Web ou non (TCP…) .Les articles MSDN suivants présentent ces aspects : Etendre ses services au-delà de HTTP avec WASLoad balancing avec WCF.

      Le guide rappelle ensuite les risques les plus courants auxquels sont confrontés les Services Web, en plus des risques traditionnels encourus par tout logiciel connecté à un réseau :

      • L'utilisation des FireWall est limité puisque les messages sont routés sur un port HTTP, et il est difficile pour des raisons de performances de scruter tous les messages SOAP traversant un firewall
      • La possibilité de router (intercepter, et transmettre) un message un intermédiaire introduit des failles supplémentaires et empêche l'utilisation des protocoles classiques de sécurité HTTPS et SLL sur tous les nœuds de la chaîne de transmission d'un message SOAP
      • Le contrat WSDL présente lui aussi un risque de sécurité, s'il n'est pas correctement filtré, il peut exposer des fonctionnalités dépréciées, des points d'exposition réservés aur développement, bref, autant de zones d'attaques clairement exposées.
      • De la même façon, les annuaires UDDI décèlent des informations telles que les versions de protocoles utilisés, si bien qu'il sera simple d'exploiter une faille de sécurité connue sur tel ou tel protocole. De plus, les annuaires UDDI n'intègrent la possibilité de signer leurs contenus qu'à partir de la version 3, si bien qu'un Service Web malicieux pourrait introduire de fausses entrées !
      • Enfin, les frameworks .Net ou Java utilisés pour implémenter des services Web, mettent en œuvre des mécanismes de sécurité intégrés à la CLR ou la JVM. Les scénarios de sécurité mettant en œuvre des jetons sont intéressants car indépendant de telle ou telle plate-forme. Néanmoins , les frameworks proposent cette fonctionnalité de façon plus ou moins intégrée si bien que le développeur pourra être amené à réaliser des développements sur mesure, source de faille de sécurité.

      Remarque : WCF intègre nativement la gestion des jetons de sécurité. La documentation MSDN présente l'architecture de la sécurité dans WCF, ainsi que l'article Security in Windows Communication Foundation.

      La section 3 présente les principes d'utilisation des protocoles WS-* pour répondre à des besoins précis

      • Gérer l'authentification entre 2 deux services
      • Utiliser un système de gestion des identités
      • Etablir une relation de confiance entre deux services
      • Mettre en œuvre des politiques de sécurité
      • Mettre en œuvre une authentification et des autorisations distribuées
      • Garantir l'intégrité et la confidentialité des échanges entre deux services
      • Tracer les échanges SOA
      • Assurer la disponibilité de ses services
      • Sécuriser la découverte des services

      Pour plus d'informations la sécurité de la SOA Microsoft

      Gestion des identités, consulter l'interview de Bernard Ourghanlian
      http://www.magsecurs.com/spip.php?article7820

      Stéphane Goudeau propose un livre blanc qui couvre la mise en œuvre de scénarios d'échanges sécurisés entre Services Web avec Windows Communication Foundation
      https://www.netfxfactory.org/files/folders/documents/entry105.aspx

      MSDN : Windows Communication Foundation et la sécurité
      http://msdn2.microsoft.com/en-us/library/ms732362.aspx

      Qu'est-ce que le NIST ? Et le CSD ?

      Le National Institute of Standards and Technology (Institut national des standards et de la technologie), aussi connu sous le sigle NIST, est une agence du Département du Commerce des États-Unis. Son but est de promouvoir l'économie en développant des technologies, la métrologie et des standards de concert avec l'industrie. Cette agence a pris la suite en 1988 du National Bureau of Standards, fondé en 1901 avec substantiellement les mêmes missions (ref Wikipedia).

      Le NSIT dispose d'un budget de 843 millions de dollars et emploie environ 2900 personnes dont scientifiques et administratifs,plus 1800 scientifiques externes.

      La division Sécurité des ordinateurs (CSD) de la NSIT fait partie des laboratoires spécialisés dans les technologies de l'information. Cette division a pour objectifs

      • d'améliorer la sécurité des systèmes en augmentant le niveau d'informations concernant les risques IT , en particulier concernant les technologies nouvelles et émergentes.
      • d'effectuer des recherches et prodiguer des conseils en ce qui concerne les zones de fragilités de sécurité de l'IT
      • De promouvoir des standards et des programmes de tests et validation
      • Et enfin de produire des recommandations afin d'améliorer la sécurité des systèmes d'infomation