SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
Introduction a la sécurité des
                      WebServices
                   CONFOO – Montréal
                    Québec - Canada
                     10 Mars 2011


Sébastien Gioria (French Chapter Leader & OWASP Global
Education Committee Member)
sebastien.gioria@owasp.org
                    Copyright © 2009 - The OWASP Foundation
                    Permission is granted to copy, distribute and/or modify this document
                    under the terms of the GNU Free Documentation License.




                    The OWASP Foundation
                                  © 2011 - S.Gioria
                    http://www.owasp.org
Agenda

 Introduction
 Démystification des technologies
 Les attaques sur les WebServices
 Top10 OWASP && WebServices
 Top10 WebServices ?




                                     © 2011 - S.Gioria
Consultant Sécurité Sénior au                                                 Twitter :@SPoint
  sein du cabinet d’audit
  OWASP France Leader - Evangéliste -
    OWASP Global Education Comittee
    Member (sebastien.gioria@owasp.org)
  CISA && ISO 27005 Risk Manager
                      q     Expérience en Sécurité des Systèmes d’Information > 0x0D années

                      q     Différents postes de manager SSI dans la banque, l’assurance et les
                             télécoms

                      q     Expertise Technique
                            ü    Gestion du risque, Architectures fonctionnelles, Audits
                            ü    S-SDLC : Secure-Software Development LifeCycle.
                            ü    PenTesting, Digital Forensics
                            ü    Consulting et Formation en Réseaux et Sécurité
    q Domaines de prédilection :
      ü  Web, WebServices, Insécurité du Web.                              © 2011 - S.Gioria
Un peu d’histoire…

 1990 : DCE/RPC – Distributed Computing Environment
 1992 : CORBA – Common Object Request Broker
  Architecture
 1990-1993 : Microsoft’s DCOM -- Distributed Component
  Object Model
 Pour arriver à une standardisation (toujours en cours)
  des protocoles, outils, langages et interfaces


              WebServices


                                            © 2011 - S.Gioria
La base




          © 2011 - S.Gioria
Qu’est-ce qu’un WebService ?

• D’après Wikipédia :
     http://fr.wikipedia.org/wiki/Web_service
Un service web est un programme informatique permettant la communication et
   l'échange de données entre applications et systèmes hétérogènes dans des
   environnements distribués. Il s'agit donc d'un ensemble de fonctionnalités exposées
   sur internet ou sur un intranet, par et pour des applications ou machines, sans
   intervention humaine, et en temps réel




                                                                    © 2011 - S.Gioria
Qu’est-ce qu’un WebService ?

 Mais d’autres technologies existent


       Requêteur                  Fournisseur
                      XML-RPC

                    POST/GET

      Requêteur                   Fournisseur
                    text/xml



 Un WebService doit :
   Pouvoir être découvrable
   Pouvoir être auto-suffisant
                                                © 2011 - S.Gioria
Qu’est-ce qu’un WebService ?

 Les acteurs :
   L’utilisateur : la personne qui accède à un portail permettant
    d’interroger un WebService
   Le requêteur : l’application cliente du service Web
   L’intermédiaire : un élément qui peut gérer une partie de la
    requête
   Le fournisseur : l’application serveur qui effectuera le traitement
   Le registre : l’annuaire des services et des points d’accès
 La coordination : il existe deux modes de
  fonctionnement des WebServices :
   Le mode direct : principe du client/serveur.
   Le mode « orchestré » : principe de la requête via un tiers.

                                                       © 2011 - S.Gioria
Chorégraphie


                     WS1


                                         WS5
    WS2




               WS3         WS4


                                 © 2011 - S.Gioria
Orchestration


                      WS1




   WS2                                     WS5



                WS3
                            WS4


                                  © 2011 - S.Gioria
Les ingrédients




                  © 2011 - S.Gioria
Démystification des technologies

•  Languages
   •  XML : La base
   •  xPath, xQuery : équivalent à SQL
   •  WSDL : Descripteur de Services

•  Protocoles
   •  Transport : HTTP
   •  Message : SOAP (SOAP = HTTP + XML)

•  Autres éléments :
   •  SAML : Security Assertion Markup Language
   •  WS-Security : Web Services Security


                                                  © 2011 - S.Gioria
Démystification des protocoles

 XML : eXtensible Markup Language
    Standard d’échanges de données basé sur des balises.



<?xml version="1.0" encoding="UTF-8"?>
<!-- '''Commentaire''' -->
<element-document xmlns="http://exemple.org/" xml:lang=";fr">
<elément>Texte</element>
<élément>un second élément </element>
…..
<element attribut="valeur"></element>
</element-document>



                                                © 2011 - S.Gioria
XPath
<?xml version="1.0" encoding="ISO-8859-1"?>
<users>
<user>
<username>gandalf</username>
<password>!c3</password>
<account>admin</account>
</user>
<user>
<username>Stefan0</username>
<password>w1s3c</password>
<account>guest</account>
</user>
</users>



                  //username => Renvoi tous les username
                  //user[username = 'gandalf’]/account => Renvoi le champ
                     account du compte gandalf

                                                           © 2011 - S.Gioria
Démystification des protocoles

 SOAP : Simple Object Access Protocol
   Permet l’envoi de messages XML




                     Enveloppe SOAP


                         Entête SOAP
                   Directives de Traitement

                         Corps SOAP
            (Message XML de requête ou de réponse)

                                                     © 2011 - S.Gioria
SOAP - Type de communication

q    RPC
       Le document XML transmis dans la requête SOAP est
       calqué sur la syntaxe de la méthode invoquée
       Traitement synchrone
q    Document
       Le document XML transmis dans la requête SOAP est
       traité par le serveur, qui renvoie un document XML en
       retour
       Le Client ne sait pas comment le service est
       implémenté, ni comment le message est traité
       Traitement asynchrone
                                               © 2011 - S.Gioria
SOAP – Exemple
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
     <addition xmlns="http://addition.example.com">                                        Requête
       <a>6</a>
       <b>9</b>
     </addition>
  </soapenv:Body>
</soapenv:Envelope>




                                                <?xml version="1.0" encoding="utf-8"?>
                                                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/
                                                soap/envelope/"
                                                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                                                  <soapenv:Body>
            Réponse                                  <additionResponse xmlns="http://addition.example.com">
                                                       <multReturn>15</multReturn>
                                                     </additionResponse>
                                                  </soapenv:Body>
                                                </soapenv:Envelope>                      © 2011 - S.Gioria
Démystification des protocoles




    Découverte            UDDI


    Description           WSDL


    Message XML     XML-RPC/SOAP/XML


    Transport       HTTP/SMTP/FTP/…


                     IP



                                       © 2011 - S.Gioria
Démystification des protocoles

       Relations de confiance – WS Trust/WS Federation/
                         LibertyAlliance

            SOAP – WS Security / SAML /WS Policy


                    XML – XML Encryption


                     XML – Xml Signature


                HTTP – HTTP Authentification


                       TCP – SSL /TLS


                          IP - IPSec
                  Securité Web Classique             © 2011 - S.Gioria
XML Signature
 Objectif: signature numérique d’un document XML
   Garantir l’authenticité et l’intégrité du document
   Signature de tout ou partie du document XML
 Recommandation W3C: XML Signature Syntax and
  Processing
   http://www.w3.org/TR/xmldsig-core/
 Types de signature                      S
                                                 Enveloppante
  1.    Enveloppante (‘enveloping’)                                           S
                                         O
  2.    Enveloppée (‘enveloped’)
                                                         Enveloppée           S
  3.    Détachée (‘detached’)

                      S                   S

                      O          S                  Détachée
                                                          © 2011 - S.Gioria
Xml Encryption

 Objectif: chiffrement d’un document XML
   Garantir la confidentialité de bout en bout du
   document
 Recommandation W3C: XML Encryption
 Syntax and Processing
   http://www.w3.org/TR/xmlenc-core/
 Flexible
   Possibilité d’encrypter tout ou partie du
   document, avec 1 ou différentes clés
                                           © 2011 - S.Gioria
XMLencryption

 Chiffrement symétrique
 Quid de la clé?
   Clé connue des deux parties
   Plusieurs clés communes et identifiant de la clé
   utilisée transmis
   Transmission de la clé partagée encryptée avec la clé
   publique du correspondant




                                             © 2011 - S.Gioria
Xml Encryption

 Chiffrement XML
  1.    Choix d’un algorithme (3DES ou AES)
  2.    Obtention ou génération de la clé
  3.    Sérialisation des données à encrypter
  4.    Chiffrement

 Déchiffrement
  1.    Identifier l’algorithme et la clé utilisés
  2.    Obtenir la clé
  3.    Déchiffrer les données
  4.    Intégrer les données déchiffrées dans le document
                                                © 2011 - S.Gioria
WS-Security
  Objectifs
     Authentification
     Confidentialité des messages
     Intégrité des messages
  Fondation d’autres standards




                                     © 2011 - S.Gioria
WS-Security

 Notion de jeton de sécurité (security
 token)
   Pour l’authentification ou l’autorisation
     §  Ex: username/password, certificat X509, …

 Extension de SOAP
   Définition d’un header SOAP contenant l’information
   de sécurité
     §  Jetons de sécurité
     §  Signatures numériques
     §  Élements encryptés

                                                     © 2011 - S.Gioria
WS-Security

§  Confidentialité des messages SOAP
  §  Utilisation de XML-Encryption
      §    Encryption d’un ou plusieurs éléments du message SOAP
      §    Référence vers les éléments encryptés dans le header

§  Clé partagée
§  Possibilité d’encrypter différents éléments
    avec des clés différentes



                                                           © 2011 - S.Gioria
WS-Policy

§ Objectif: spécifier des
   informations et des exigences
   pour un WS
  §  S’applique aussi bien au serveur qu’au client
§  Exemples:
  §  utilisation d’une version spécifique de SOAP
  §  Exigence de signature
  §  Information sur le format de la réponse (encrypté,
      signée…)
                                               © 2011 - S.Gioria
WS-Trust

§  Modèles de confiance nombreux et
   variés
  §  Et transorganisations

§  Problèmes
  §  Émettre et obtenir des jetons de sécurité
  §  Etablir et valider des relations de confiance

§  Définition d’un Security Token Service
  §  Émet, valide ou échange un jeton de sécurité


                                                 © 2011 - S.Gioria
Les parseurs XML

 2 grandes familles :
    SAX :
     §  Simplistes
     §  Analyse du document en fonction des événements
     §  Appel de fonction lorsque des nœuds sont trouvés
   DOM :
     §  Plus complexes et utiles
     §  Basés sur des principes d’arbres pour créer des hiérarchies du
         document
     §  Compatibles xPath !




                                                      © 2011 - S.Gioria
Les attaques sur les WebServices




                                   © 2011 - S.Gioria
XML Bomb :

 Trivial à effectuer :
      §  Référence récursive à une entité du même document :
     <?xml …
     ….
     <!entity owasp0 « Owasp »>
     <!entity owasp1 « &owasp0;&owasp0>
     ….
     ….
     <!entity owasp424242
     « &owasp424241;&owasp424241 »>
     <owasptest>&owasp424242;</owasptest>


   Peut provoquer un déni de service !



                                                    © 2011 - S.Gioria
Injection XML entity

  La possibilité d’injecter du code XML de type entity system peut être
   catastrophique


                        <?xml version="1.0" encoding="ISO-8859-1"?>
                        <!DOCTYPE foo [
                         <!ELEMENT foo ANY >
                         <!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>



                        Crash du système

                      <?xml version="1.0" encoding="ISO-8859-1"?>
                      <!DOCTYPE foo [
                       <!ELEMENT foo ANY >
                       <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>




                      Obtention des mots de passe


                                                                          © 2011 - S.Gioria
Injection XML
DTD :
<!DOCTYPE users [
      <!ELEMENT users (user+) >
      <!ELEMENT user (username,password,userid,mail+) >
      <!ELEMENT username (#PCDATA) >
      <!ELEMENT password (#PCDATA) >
      <!ELEMENT userid (#PCDATA) >
      <!ELEMENT mail (#PCDATA) >
]>




http://www.example.com/addUser.jsp?
username=tony&password=Un6R34kb!e</password><!--&email=--
><userid>0</userid><mail>s4tan@hell.com

                              Résultat :
                              <?xml version="1.0" encoding="ISO-8859-1"?>
                              <users>
                                         <user>
                                         <username>tony</username>
                                         <password>Un6R34kb!e</password><!--</password>
                                         <userid>500</userid>
                                         <mail>--><userid>0</userid><mail>s4tan@hell.com</mail>
                                    </user>
                              </users>
                                                                          © 2011 - S.Gioria
Injection CDATA

Le contenu des élément CDATA est éliminé lors du parsing.
Soit :

<html>
$HTMLCode
</html>




$HTMLCode = <![CDATA[<]]>script<![CDATA[>]]>alert('xss')<!
[CDATA[<]]>/script<![CDATA[>]]>


                        Avant analyse du parser:
                        <html>
                         <![CDATA[<]]>script<![CDATA[>]]>alert('xss')<![CDATA[<]]>/script<!
                        [CDATA[>]]>
                        </html>

                        Après Analyse:
                        <html>
                        <script>alert('XSS')</script>
                        </html>
                                                                          © 2011 - S.Gioria
Injection xPath

Imaginons la base d’authentification Xml suivante
                                                                     La chaine de recherche étant :
<?xml version="1.0" encoding="ISO-8859-1"?>
<users>
<user>                                                               string(//user[username/text()='gandalf' and
<username>gandalf</username>                                         password/text()='!c3']/account/text())
<password>!c3</password>
<account>admin</account>
</user>
<user>
<username>Stefan0</username>
                                                                                Si l’utilisateur entre :
<password>w1s3c</password>
<account>guest</account>                                                      Username: ' or '1' = '1
</user>                                                                       Password: ' or '1' = '1
</users>




  string(//user[username/text()='' or '1' = '1' and password/text()='' or '1' = '1']/account/text())


                                                                                   © 2011 - S.Gioria
Injection xPath - dump XML

Le dump d’un document XML est rendu possible via le caractère |

Soit le descriptif d’un champ
//item[itemID=‘$id’]/description/text()
                                          Si l’utilisateur entre :
                                          $itemID=chaine’] | /* | //item[itemID=‘chaine




//item[itemID=‘chaine’] | /* | //item[itemID=‘chaine’]/description/text()



              Match de tous les nœuds !!!!!

                                                                                © 2011 - S.Gioria
Rejeu des messages SOAP

 SOAP est un protocole d’échanges
 SOAP ne dispose pas d’un mécanisme de
 sessions :
   Aucune relation entre les messages
   Rejeu possible très facilement :
     §  Authentification
     §  Messages
     §  DOS…




                                         © 2011 - S.Gioria
Les WebServices et le Top10

 A1: Cross Site Scripting (XSS)
   Facilité d’effectuer du XSS persistent via les injections
   XML
 A2: Failles d’injection
   Injections XML/Xpath, SQL, …
 A3: Execution de fichier malicieux
   Via les références et les tags <!entity>
 A4: Référence directe non sécurisée à un objet
   Mêmes problèmes que pour le mode Web.


                                               © 2011 - S.Gioria
Les WebServices et le Top10
 A5: Falsification de requête inter-site (CSRF)
    Cf XSS
 A6: Fuite d’information et traitement d’erreur incorrect
    Différents mécanismes sont disponible via SOAP pour obtenir les
     informations sur les méthodes disponibles
 A7: Violation de gestion de session ou de
  l’authentification
    Aucune fonction disponible dans les protocoles, même problèmes
     qu’en « Web Standard »
 A8: Stockage cryptographique non sécurisé
    Rien de différent qu’en Web.
 A9: Communications non sécurisées
    SOAP n’est pas sécurisé par conception
 A10: Manque de restriction d’accès à une URL
    Rien de différent qu’en Web.                    © 2011 - S.Gioria
Proposition d’un Top 10 WebServices




                                © 2011 - S.Gioria
© 2011 - S.Gioria
A1 – Manque d’authentification

 But :
   Rejeu des transactions
   Elevation de privilèges
 Principe :
   Envoie d’un message SOAP au point d’accès
 Dangerosité :
   Faible à Forte
 Protection :
   Utilisation de SSL
   Utilisation des couches WS-Security
   Mettre en place des principes d’unicité des transactions

                                                      © 2011 - S.Gioria
A2 – Manque d’habilitation

 But :
   Premier => modifier des fichiers/données
   Final => Elevation de privilèges
 Principe :
   Envoie d’un message SOAP au point d’accès contenant des
    identifiants valide
 Dangerosité :
   Faible à Forte
 Protection :
   Mise en place d’une habilitation dans le code
   Protéger les fichiers de politiques et des DTDs
   Ne pas se contenter d’URLs non publiées
                                                      © 2011 - S.Gioria
A3 – Manque de trace d’audit

 Constat :
   Les framework de WebServices ont peu de traces des
    événements.
   Il devient quasi-impossible de pouvoir tracer correctement les
    flux dans le cas d’orchestration complexes.
 Protection :
   Mettre en place des traces d’audit dans le code en particulier des
    appels :
      §    D’authentification
      §    Changement dans le système(creation/destruction/modification)
      §    Dépassement des limites
      §    Lancement, arret de fonctions
      §    …….

                                                            © 2011 - S.Gioria
A4 – Manque de politique de sécurité

 Constat :
   Du à la conception des WebServices, il est très difficile de
    disposer d’une politique globale.
   De base les framework ne comportent pas de contrôle d’accès
 Dangerosité :
   Faible à Forte
 Protection :
   Mettre en place une politique de sécurité des WebServices :
      §    Sur   les protocoles de communication (HTTP/HTTPS/…)
      §    Sur   l’échange des messages
      §    Sur   la gestion des clefs de chiffrement
      §    Sur   la protection contre les rejeux
      §    ….
   Mettre en place les tags WS-SecurityPolicy              © 2011 - S.Gioria
A5 – Défaillance XML
  But :
     Abuser les parseurs XML pour obtenir :
       §  Des informations
       §  Des privilèges
       §  ….
  Dangerosite :
     Forte
  Protection :
     Vérifier que les parseurs XML utiliser sont immunes aux problèmes
      d’injection de type DOS/Entité, ….
     Vérifier la taille des documents XML lors des utilisations
     Vérifier que l’intégralité du document est signé par juste une partie
      (dans le cas d’utilisation des signatures)
     Vérifier le document XML via le schéma le plus strict
     Ne pas faire confiance à une pré-validation des données de l’expéditeur.
                                                              © 2011 - S.Gioria
A6 – Détournement d’identité

 Constat :
   Les WebServices utilisent l’identité de l’appelant dans :
      §  Le contrôle d’accès
      §  Les décisions de routage des appels
      §  La logique métier
   Les frameworks ne disposent pas de fonctions de protection de
    l’identité
 But :
   Elevation de privilèges
   Obtention d’informations
 Dangerosite :
   Forte
 Protection :
   Mettre en place WS-Security, les assertions SAML
   Vérifier les signatures des messages
   Utiliser l’authentification forte                © 2011 - S.Gioria
A7 – Faiblesse des clefs

 Constat :
   Il n’existe pas de protection des messages et de l’authentification
    en XML et HTTP.
   Le standard WS-Security ne suffit pas à protéger les clefs d’accès
    car les données sont passées en clair.
 But :
   Elevation de privilèges
   Obtention d’informations
 Dangerosite :
   Forte
 Protection :
   Mettre en place du chiffrement de bout en bout (SSL/IPSec)
   Utiliser des authentifications fortes (certificats X509, OTP, ..)
   Mettre en place des mécanismes anti-rejeu
                                                          © 2011 - S.Gioria
   Ne pas autoriser d’authentification en clair
A8/A9/A10

 Ces différentes failles sont à lier au Top10
 OWASP classique, mais appliqué aux
 WebServices.




                                         © 2011 - S.Gioria
A voir

 http://www.soaspecs.com/ws.php
 NIST Guide : Securing Web Services :
   http://csrc.nist.gov/publications/nistpubs/800-95/SP800-95.pdf
 Article du CERT :
   https://buildsecurityin.us-cert.gov/bsi/articles/best-practices/
    assembly/639-BSI.html
 Gunnar Peterson
   http://arctecgroup.net/pdf/WebServicesSecurityChecklist.pdf
   Blog : http://1raindrop.typepad.com/
   WebCast SANS : https://www.sans.org/webcasts/security-web-
    services-soa-91958


                                                        © 2011 - S.Gioria

Contenu connexe

Tendances

Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOALilia Sfaxi
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...ENSET, Université Hassan II Casablanca
 

Tendances (20)

Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOA
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Soa & services web
Soa & services webSoa & services web
Soa & services web
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Soa
SoaSoa
Soa
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 

Similaire à Introduction à la sécurité des WebServices

soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnsoapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnHINDGUENDOUZ
 
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretSylvain Maret
 
ASFWS 2012 WS Security - REST vs SOAP par Sylvain Maret
ASFWS 2012 WS Security - REST vs SOAP par Sylvain MaretASFWS 2012 WS Security - REST vs SOAP par Sylvain Maret
ASFWS 2012 WS Security - REST vs SOAP par Sylvain MaretCyber Security Alliance
 
Utilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open SourceUtilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open Sourceguest3be047
 
2010 03-10-web applications firewalls v 0.8
2010 03-10-web applications firewalls v 0.82010 03-10-web applications firewalls v 0.8
2010 03-10-web applications firewalls v 0.8Sébastien GIORIA
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesCERTyou Formation
 
on feature interactions among web services.ppt
on feature interactions among web services.ppton feature interactions among web services.ppt
on feature interactions among web services.pptkusterj
 
Soirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB PetalsSoirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB PetalsNormandy JUG
 
Jee023 formation-jee-hibernate-et-webservices
Jee023 formation-jee-hibernate-et-webservicesJee023 formation-jee-hibernate-et-webservices
Jee023 formation-jee-hibernate-et-webservicesCERTyou Formation
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soapZakaria SMAHI
 
2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_servicesCamus LANMADOUCELO
 
Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...
Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...
Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...CERTyou Formation
 
Le bon, la brute et le truand dans les nuages
Le bon, la brute et le truand dans les nuagesLe bon, la brute et le truand dans les nuages
Le bon, la brute et le truand dans les nuagesConFoo
 
Services web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiServices web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiEl Habib NFAOUI
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 

Similaire à Introduction à la sécurité des WebServices (20)

soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnsoapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
 
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
 
ASFWS 2012 WS Security - REST vs SOAP par Sylvain Maret
ASFWS 2012 WS Security - REST vs SOAP par Sylvain MaretASFWS 2012 WS Security - REST vs SOAP par Sylvain Maret
ASFWS 2012 WS Security - REST vs SOAP par Sylvain Maret
 
Utilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open SourceUtilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open Source
 
03_-_SOA_-_SOAP.pdf
03_-_SOA_-_SOAP.pdf03_-_SOA_-_SOAP.pdf
03_-_SOA_-_SOAP.pdf
 
2010 03-10-web applications firewalls v 0.8
2010 03-10-web applications firewalls v 0.82010 03-10-web applications firewalls v 0.8
2010 03-10-web applications firewalls v 0.8
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservices
 
Soap, wsdl et uddi
Soap, wsdl et uddiSoap, wsdl et uddi
Soap, wsdl et uddi
 
on feature interactions among web services.ppt
on feature interactions among web services.ppton feature interactions among web services.ppt
on feature interactions among web services.ppt
 
Soirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB PetalsSoirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB Petals
 
Jee023 formation-jee-hibernate-et-webservices
Jee023 formation-jee-hibernate-et-webservicesJee023 formation-jee-hibernate-et-webservices
Jee023 formation-jee-hibernate-et-webservices
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soap
 
2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
 
Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...
Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...
Es66 g formation-cours-avance-sur-la-securite-z-os-cryptographie-reseau-racf-...
 
Le bon, la brute et le truand dans les nuages
Le bon, la brute et le truand dans les nuagesLe bon, la brute et le truand dans les nuages
Le bon, la brute et le truand dans les nuages
 
2011 03-09-cloud sgi
2011 03-09-cloud sgi2011 03-09-cloud sgi
2011 03-09-cloud sgi
 
Chp3 - ESB
Chp3 - ESBChp3 - ESB
Chp3 - ESB
 
Services web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiServices web soap-el-habib-nfaoui
Services web soap-el-habib-nfaoui
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Soap
SoapSoap
Soap
 

Plus de ConFoo

Debugging applications with network security tools
Debugging applications with network security toolsDebugging applications with network security tools
Debugging applications with network security toolsConFoo
 
The business behind open source
The business behind open sourceThe business behind open source
The business behind open sourceConFoo
 
Security 202 - Are you sure your site is secure?
Security 202 - Are you sure your site is secure?Security 202 - Are you sure your site is secure?
Security 202 - Are you sure your site is secure?ConFoo
 
OWASP Enterprise Security API
OWASP Enterprise Security APIOWASP Enterprise Security API
OWASP Enterprise Security APIConFoo
 
Opensource Authentication and Authorization
Opensource Authentication and AuthorizationOpensource Authentication and Authorization
Opensource Authentication and AuthorizationConFoo
 
The Solar Framework for PHP
The Solar Framework for PHPThe Solar Framework for PHP
The Solar Framework for PHPConFoo
 
Décrire un projet PHP dans des rapports
Décrire un projet PHP dans des rapportsDécrire un projet PHP dans des rapports
Décrire un projet PHP dans des rapportsConFoo
 
Server Administration in Python with Fabric, Cuisine and Watchdog
Server Administration in Python with Fabric, Cuisine and WatchdogServer Administration in Python with Fabric, Cuisine and Watchdog
Server Administration in Python with Fabric, Cuisine and WatchdogConFoo
 
Marrow: A Meta-Framework for Python 2.6+ and 3.1+
Marrow: A Meta-Framework for Python 2.6+ and 3.1+Marrow: A Meta-Framework for Python 2.6+ and 3.1+
Marrow: A Meta-Framework for Python 2.6+ and 3.1+ConFoo
 
Think Mobile First, Then Enhance
Think Mobile First, Then EnhanceThink Mobile First, Then Enhance
Think Mobile First, Then EnhanceConFoo
 
Metaprogramming in Ruby
Metaprogramming in RubyMetaprogramming in Ruby
Metaprogramming in RubyConFoo
 
Scalable Architecture 101
Scalable Architecture 101Scalable Architecture 101
Scalable Architecture 101ConFoo
 
As-t-on encore besoin d'un framework web ?
As-t-on encore besoin d'un framework web ?As-t-on encore besoin d'un framework web ?
As-t-on encore besoin d'un framework web ?ConFoo
 
Pragmatic Guide to Git
Pragmatic Guide to GitPragmatic Guide to Git
Pragmatic Guide to GitConFoo
 
Building servers with Node.js
Building servers with Node.jsBuilding servers with Node.js
Building servers with Node.jsConFoo
 
An Overview of Flash Storage for Databases
An Overview of Flash Storage for DatabasesAn Overview of Flash Storage for Databases
An Overview of Flash Storage for DatabasesConFoo
 
Android Jump Start
Android Jump StartAndroid Jump Start
Android Jump StartConFoo
 
Develop mobile applications with Flex
Develop mobile applications with FlexDevelop mobile applications with Flex
Develop mobile applications with FlexConFoo
 
WordPress pour le développement d'aplications web
WordPress pour le développement d'aplications webWordPress pour le développement d'aplications web
WordPress pour le développement d'aplications webConFoo
 
Graphs, Edges & Nodes: Untangling the Social Web
Graphs, Edges & Nodes: Untangling the Social WebGraphs, Edges & Nodes: Untangling the Social Web
Graphs, Edges & Nodes: Untangling the Social WebConFoo
 

Plus de ConFoo (20)

Debugging applications with network security tools
Debugging applications with network security toolsDebugging applications with network security tools
Debugging applications with network security tools
 
The business behind open source
The business behind open sourceThe business behind open source
The business behind open source
 
Security 202 - Are you sure your site is secure?
Security 202 - Are you sure your site is secure?Security 202 - Are you sure your site is secure?
Security 202 - Are you sure your site is secure?
 
OWASP Enterprise Security API
OWASP Enterprise Security APIOWASP Enterprise Security API
OWASP Enterprise Security API
 
Opensource Authentication and Authorization
Opensource Authentication and AuthorizationOpensource Authentication and Authorization
Opensource Authentication and Authorization
 
The Solar Framework for PHP
The Solar Framework for PHPThe Solar Framework for PHP
The Solar Framework for PHP
 
Décrire un projet PHP dans des rapports
Décrire un projet PHP dans des rapportsDécrire un projet PHP dans des rapports
Décrire un projet PHP dans des rapports
 
Server Administration in Python with Fabric, Cuisine and Watchdog
Server Administration in Python with Fabric, Cuisine and WatchdogServer Administration in Python with Fabric, Cuisine and Watchdog
Server Administration in Python with Fabric, Cuisine and Watchdog
 
Marrow: A Meta-Framework for Python 2.6+ and 3.1+
Marrow: A Meta-Framework for Python 2.6+ and 3.1+Marrow: A Meta-Framework for Python 2.6+ and 3.1+
Marrow: A Meta-Framework for Python 2.6+ and 3.1+
 
Think Mobile First, Then Enhance
Think Mobile First, Then EnhanceThink Mobile First, Then Enhance
Think Mobile First, Then Enhance
 
Metaprogramming in Ruby
Metaprogramming in RubyMetaprogramming in Ruby
Metaprogramming in Ruby
 
Scalable Architecture 101
Scalable Architecture 101Scalable Architecture 101
Scalable Architecture 101
 
As-t-on encore besoin d'un framework web ?
As-t-on encore besoin d'un framework web ?As-t-on encore besoin d'un framework web ?
As-t-on encore besoin d'un framework web ?
 
Pragmatic Guide to Git
Pragmatic Guide to GitPragmatic Guide to Git
Pragmatic Guide to Git
 
Building servers with Node.js
Building servers with Node.jsBuilding servers with Node.js
Building servers with Node.js
 
An Overview of Flash Storage for Databases
An Overview of Flash Storage for DatabasesAn Overview of Flash Storage for Databases
An Overview of Flash Storage for Databases
 
Android Jump Start
Android Jump StartAndroid Jump Start
Android Jump Start
 
Develop mobile applications with Flex
Develop mobile applications with FlexDevelop mobile applications with Flex
Develop mobile applications with Flex
 
WordPress pour le développement d'aplications web
WordPress pour le développement d'aplications webWordPress pour le développement d'aplications web
WordPress pour le développement d'aplications web
 
Graphs, Edges & Nodes: Untangling the Social Web
Graphs, Edges & Nodes: Untangling the Social WebGraphs, Edges & Nodes: Untangling the Social Web
Graphs, Edges & Nodes: Untangling the Social Web
 

Introduction à la sécurité des WebServices

  • 1. Introduction a la sécurité des WebServices CONFOO – Montréal Québec - Canada 10 Mars 2011 Sébastien Gioria (French Chapter Leader & OWASP Global Education Committee Member) sebastien.gioria@owasp.org Copyright © 2009 - The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. The OWASP Foundation © 2011 - S.Gioria http://www.owasp.org
  • 2. Agenda  Introduction  Démystification des technologies  Les attaques sur les WebServices  Top10 OWASP && WebServices  Top10 WebServices ? © 2011 - S.Gioria
  • 3. Consultant Sécurité Sénior au Twitter :@SPoint sein du cabinet d’audit OWASP France Leader - Evangéliste - OWASP Global Education Comittee Member (sebastien.gioria@owasp.org) CISA && ISO 27005 Risk Manager q  Expérience en Sécurité des Systèmes d’Information > 0x0D années q  Différents postes de manager SSI dans la banque, l’assurance et les télécoms q  Expertise Technique ü  Gestion du risque, Architectures fonctionnelles, Audits ü  S-SDLC : Secure-Software Development LifeCycle. ü  PenTesting, Digital Forensics ü  Consulting et Formation en Réseaux et Sécurité q Domaines de prédilection : ü  Web, WebServices, Insécurité du Web. © 2011 - S.Gioria
  • 4. Un peu d’histoire…  1990 : DCE/RPC – Distributed Computing Environment  1992 : CORBA – Common Object Request Broker Architecture  1990-1993 : Microsoft’s DCOM -- Distributed Component Object Model  Pour arriver à une standardisation (toujours en cours) des protocoles, outils, langages et interfaces WebServices © 2011 - S.Gioria
  • 5. La base © 2011 - S.Gioria
  • 6. Qu’est-ce qu’un WebService ? • D’après Wikipédia : http://fr.wikipedia.org/wiki/Web_service Un service web est un programme informatique permettant la communication et l'échange de données entre applications et systèmes hétérogènes dans des environnements distribués. Il s'agit donc d'un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, et en temps réel © 2011 - S.Gioria
  • 7. Qu’est-ce qu’un WebService ?  Mais d’autres technologies existent Requêteur Fournisseur XML-RPC POST/GET Requêteur Fournisseur text/xml  Un WebService doit :  Pouvoir être découvrable  Pouvoir être auto-suffisant © 2011 - S.Gioria
  • 8. Qu’est-ce qu’un WebService ?  Les acteurs :  L’utilisateur : la personne qui accède à un portail permettant d’interroger un WebService  Le requêteur : l’application cliente du service Web  L’intermédiaire : un élément qui peut gérer une partie de la requête  Le fournisseur : l’application serveur qui effectuera le traitement  Le registre : l’annuaire des services et des points d’accès  La coordination : il existe deux modes de fonctionnement des WebServices :  Le mode direct : principe du client/serveur.  Le mode « orchestré » : principe de la requête via un tiers. © 2011 - S.Gioria
  • 9. Chorégraphie WS1 WS5 WS2 WS3 WS4 © 2011 - S.Gioria
  • 10. Orchestration WS1 WS2 WS5 WS3 WS4 © 2011 - S.Gioria
  • 11. Les ingrédients © 2011 - S.Gioria
  • 12. Démystification des technologies •  Languages •  XML : La base •  xPath, xQuery : équivalent à SQL •  WSDL : Descripteur de Services •  Protocoles •  Transport : HTTP •  Message : SOAP (SOAP = HTTP + XML) •  Autres éléments : •  SAML : Security Assertion Markup Language •  WS-Security : Web Services Security © 2011 - S.Gioria
  • 13. Démystification des protocoles  XML : eXtensible Markup Language  Standard d’échanges de données basé sur des balises. <?xml version="1.0" encoding="UTF-8"?> <!-- '''Commentaire''' --> <element-document xmlns="http://exemple.org/" xml:lang=";fr"> <elément>Texte</element> <élément>un second élément </element> ….. <element attribut="valeur"></element> </element-document> © 2011 - S.Gioria
  • 15. Démystification des protocoles  SOAP : Simple Object Access Protocol  Permet l’envoi de messages XML Enveloppe SOAP Entête SOAP Directives de Traitement Corps SOAP (Message XML de requête ou de réponse) © 2011 - S.Gioria
  • 16. SOAP - Type de communication q  RPC  Le document XML transmis dans la requête SOAP est calqué sur la syntaxe de la méthode invoquée  Traitement synchrone q  Document  Le document XML transmis dans la requête SOAP est traité par le serveur, qui renvoie un document XML en retour  Le Client ne sait pas comment le service est implémenté, ni comment le message est traité  Traitement asynchrone © 2011 - S.Gioria
  • 17. SOAP – Exemple <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <addition xmlns="http://addition.example.com"> Requête <a>6</a> <b>9</b> </addition> </soapenv:Body> </soapenv:Envelope> <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/ soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> Réponse <additionResponse xmlns="http://addition.example.com"> <multReturn>15</multReturn> </additionResponse> </soapenv:Body> </soapenv:Envelope> © 2011 - S.Gioria
  • 18. Démystification des protocoles Découverte UDDI Description WSDL Message XML XML-RPC/SOAP/XML Transport HTTP/SMTP/FTP/… IP © 2011 - S.Gioria
  • 19. Démystification des protocoles Relations de confiance – WS Trust/WS Federation/ LibertyAlliance SOAP – WS Security / SAML /WS Policy XML – XML Encryption XML – Xml Signature HTTP – HTTP Authentification TCP – SSL /TLS IP - IPSec Securité Web Classique © 2011 - S.Gioria
  • 20. XML Signature  Objectif: signature numérique d’un document XML  Garantir l’authenticité et l’intégrité du document  Signature de tout ou partie du document XML  Recommandation W3C: XML Signature Syntax and Processing  http://www.w3.org/TR/xmldsig-core/  Types de signature S Enveloppante 1.  Enveloppante (‘enveloping’) S O 2.  Enveloppée (‘enveloped’) Enveloppée S 3.  Détachée (‘detached’) S S O S Détachée © 2011 - S.Gioria
  • 21. Xml Encryption  Objectif: chiffrement d’un document XML  Garantir la confidentialité de bout en bout du document  Recommandation W3C: XML Encryption Syntax and Processing  http://www.w3.org/TR/xmlenc-core/  Flexible  Possibilité d’encrypter tout ou partie du document, avec 1 ou différentes clés © 2011 - S.Gioria
  • 22. XMLencryption  Chiffrement symétrique  Quid de la clé?  Clé connue des deux parties  Plusieurs clés communes et identifiant de la clé utilisée transmis  Transmission de la clé partagée encryptée avec la clé publique du correspondant © 2011 - S.Gioria
  • 23. Xml Encryption  Chiffrement XML 1.  Choix d’un algorithme (3DES ou AES) 2.  Obtention ou génération de la clé 3.  Sérialisation des données à encrypter 4.  Chiffrement  Déchiffrement 1.  Identifier l’algorithme et la clé utilisés 2.  Obtenir la clé 3.  Déchiffrer les données 4.  Intégrer les données déchiffrées dans le document © 2011 - S.Gioria
  • 24. WS-Security   Objectifs   Authentification   Confidentialité des messages   Intégrité des messages   Fondation d’autres standards © 2011 - S.Gioria
  • 25. WS-Security  Notion de jeton de sécurité (security token)  Pour l’authentification ou l’autorisation §  Ex: username/password, certificat X509, …  Extension de SOAP  Définition d’un header SOAP contenant l’information de sécurité §  Jetons de sécurité §  Signatures numériques §  Élements encryptés © 2011 - S.Gioria
  • 26. WS-Security §  Confidentialité des messages SOAP §  Utilisation de XML-Encryption §  Encryption d’un ou plusieurs éléments du message SOAP §  Référence vers les éléments encryptés dans le header §  Clé partagée §  Possibilité d’encrypter différents éléments avec des clés différentes © 2011 - S.Gioria
  • 27. WS-Policy § Objectif: spécifier des informations et des exigences pour un WS §  S’applique aussi bien au serveur qu’au client §  Exemples: §  utilisation d’une version spécifique de SOAP §  Exigence de signature §  Information sur le format de la réponse (encrypté, signée…) © 2011 - S.Gioria
  • 28. WS-Trust §  Modèles de confiance nombreux et variés §  Et transorganisations §  Problèmes §  Émettre et obtenir des jetons de sécurité §  Etablir et valider des relations de confiance §  Définition d’un Security Token Service §  Émet, valide ou échange un jeton de sécurité © 2011 - S.Gioria
  • 29. Les parseurs XML  2 grandes familles :   SAX : §  Simplistes §  Analyse du document en fonction des événements §  Appel de fonction lorsque des nœuds sont trouvés  DOM : §  Plus complexes et utiles §  Basés sur des principes d’arbres pour créer des hiérarchies du document §  Compatibles xPath ! © 2011 - S.Gioria
  • 30. Les attaques sur les WebServices © 2011 - S.Gioria
  • 31. XML Bomb :  Trivial à effectuer : §  Référence récursive à une entité du même document : <?xml … …. <!entity owasp0 « Owasp »> <!entity owasp1 « &owasp0;&owasp0> …. …. <!entity owasp424242 « &owasp424241;&owasp424241 »> <owasptest>&owasp424242;</owasptest>  Peut provoquer un déni de service ! © 2011 - S.Gioria
  • 32. Injection XML entity   La possibilité d’injecter du code XML de type entity system peut être catastrophique <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo> Crash du système <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo> Obtention des mots de passe © 2011 - S.Gioria
  • 33. Injection XML DTD : <!DOCTYPE users [ <!ELEMENT users (user+) > <!ELEMENT user (username,password,userid,mail+) > <!ELEMENT username (#PCDATA) > <!ELEMENT password (#PCDATA) > <!ELEMENT userid (#PCDATA) > <!ELEMENT mail (#PCDATA) > ]> http://www.example.com/addUser.jsp? username=tony&password=Un6R34kb!e</password><!--&email=-- ><userid>0</userid><mail>s4tan@hell.com Résultat : <?xml version="1.0" encoding="ISO-8859-1"?> <users> <user> <username>tony</username> <password>Un6R34kb!e</password><!--</password> <userid>500</userid> <mail>--><userid>0</userid><mail>s4tan@hell.com</mail> </user> </users> © 2011 - S.Gioria
  • 34. Injection CDATA Le contenu des élément CDATA est éliminé lors du parsing. Soit : <html> $HTMLCode </html> $HTMLCode = <![CDATA[<]]>script<![CDATA[>]]>alert('xss')<! [CDATA[<]]>/script<![CDATA[>]]> Avant analyse du parser: <html> <![CDATA[<]]>script<![CDATA[>]]>alert('xss')<![CDATA[<]]>/script<! [CDATA[>]]> </html> Après Analyse: <html> <script>alert('XSS')</script> </html> © 2011 - S.Gioria
  • 35. Injection xPath Imaginons la base d’authentification Xml suivante La chaine de recherche étant : <?xml version="1.0" encoding="ISO-8859-1"?> <users> <user> string(//user[username/text()='gandalf' and <username>gandalf</username> password/text()='!c3']/account/text()) <password>!c3</password> <account>admin</account> </user> <user> <username>Stefan0</username> Si l’utilisateur entre : <password>w1s3c</password> <account>guest</account> Username: ' or '1' = '1 </user> Password: ' or '1' = '1 </users> string(//user[username/text()='' or '1' = '1' and password/text()='' or '1' = '1']/account/text()) © 2011 - S.Gioria
  • 36. Injection xPath - dump XML Le dump d’un document XML est rendu possible via le caractère | Soit le descriptif d’un champ //item[itemID=‘$id’]/description/text() Si l’utilisateur entre : $itemID=chaine’] | /* | //item[itemID=‘chaine //item[itemID=‘chaine’] | /* | //item[itemID=‘chaine’]/description/text() Match de tous les nœuds !!!!! © 2011 - S.Gioria
  • 37. Rejeu des messages SOAP  SOAP est un protocole d’échanges  SOAP ne dispose pas d’un mécanisme de sessions :  Aucune relation entre les messages  Rejeu possible très facilement : §  Authentification §  Messages §  DOS… © 2011 - S.Gioria
  • 38. Les WebServices et le Top10  A1: Cross Site Scripting (XSS)  Facilité d’effectuer du XSS persistent via les injections XML  A2: Failles d’injection  Injections XML/Xpath, SQL, …  A3: Execution de fichier malicieux  Via les références et les tags <!entity>  A4: Référence directe non sécurisée à un objet  Mêmes problèmes que pour le mode Web. © 2011 - S.Gioria
  • 39. Les WebServices et le Top10  A5: Falsification de requête inter-site (CSRF)  Cf XSS  A6: Fuite d’information et traitement d’erreur incorrect  Différents mécanismes sont disponible via SOAP pour obtenir les informations sur les méthodes disponibles  A7: Violation de gestion de session ou de l’authentification  Aucune fonction disponible dans les protocoles, même problèmes qu’en « Web Standard »  A8: Stockage cryptographique non sécurisé  Rien de différent qu’en Web.  A9: Communications non sécurisées  SOAP n’est pas sécurisé par conception  A10: Manque de restriction d’accès à une URL  Rien de différent qu’en Web. © 2011 - S.Gioria
  • 40. Proposition d’un Top 10 WebServices © 2011 - S.Gioria
  • 41. © 2011 - S.Gioria
  • 42. A1 – Manque d’authentification  But :  Rejeu des transactions  Elevation de privilèges  Principe :  Envoie d’un message SOAP au point d’accès  Dangerosité :  Faible à Forte  Protection :  Utilisation de SSL  Utilisation des couches WS-Security  Mettre en place des principes d’unicité des transactions © 2011 - S.Gioria
  • 43. A2 – Manque d’habilitation  But :  Premier => modifier des fichiers/données  Final => Elevation de privilèges  Principe :  Envoie d’un message SOAP au point d’accès contenant des identifiants valide  Dangerosité :  Faible à Forte  Protection :  Mise en place d’une habilitation dans le code  Protéger les fichiers de politiques et des DTDs  Ne pas se contenter d’URLs non publiées © 2011 - S.Gioria
  • 44. A3 – Manque de trace d’audit  Constat :  Les framework de WebServices ont peu de traces des événements.  Il devient quasi-impossible de pouvoir tracer correctement les flux dans le cas d’orchestration complexes.  Protection :  Mettre en place des traces d’audit dans le code en particulier des appels : §  D’authentification §  Changement dans le système(creation/destruction/modification) §  Dépassement des limites §  Lancement, arret de fonctions §  ……. © 2011 - S.Gioria
  • 45. A4 – Manque de politique de sécurité  Constat :  Du à la conception des WebServices, il est très difficile de disposer d’une politique globale.  De base les framework ne comportent pas de contrôle d’accès  Dangerosité :  Faible à Forte  Protection :  Mettre en place une politique de sécurité des WebServices : §  Sur les protocoles de communication (HTTP/HTTPS/…) §  Sur l’échange des messages §  Sur la gestion des clefs de chiffrement §  Sur la protection contre les rejeux §  ….  Mettre en place les tags WS-SecurityPolicy © 2011 - S.Gioria
  • 46. A5 – Défaillance XML   But :   Abuser les parseurs XML pour obtenir : §  Des informations §  Des privilèges §  ….   Dangerosite :   Forte   Protection :   Vérifier que les parseurs XML utiliser sont immunes aux problèmes d’injection de type DOS/Entité, ….   Vérifier la taille des documents XML lors des utilisations   Vérifier que l’intégralité du document est signé par juste une partie (dans le cas d’utilisation des signatures)   Vérifier le document XML via le schéma le plus strict   Ne pas faire confiance à une pré-validation des données de l’expéditeur. © 2011 - S.Gioria
  • 47. A6 – Détournement d’identité  Constat :  Les WebServices utilisent l’identité de l’appelant dans : §  Le contrôle d’accès §  Les décisions de routage des appels §  La logique métier  Les frameworks ne disposent pas de fonctions de protection de l’identité  But :  Elevation de privilèges  Obtention d’informations  Dangerosite :  Forte  Protection :  Mettre en place WS-Security, les assertions SAML  Vérifier les signatures des messages  Utiliser l’authentification forte © 2011 - S.Gioria
  • 48. A7 – Faiblesse des clefs  Constat :  Il n’existe pas de protection des messages et de l’authentification en XML et HTTP.  Le standard WS-Security ne suffit pas à protéger les clefs d’accès car les données sont passées en clair.  But :  Elevation de privilèges  Obtention d’informations  Dangerosite :  Forte  Protection :  Mettre en place du chiffrement de bout en bout (SSL/IPSec)  Utiliser des authentifications fortes (certificats X509, OTP, ..)  Mettre en place des mécanismes anti-rejeu © 2011 - S.Gioria  Ne pas autoriser d’authentification en clair
  • 49. A8/A9/A10  Ces différentes failles sont à lier au Top10 OWASP classique, mais appliqué aux WebServices. © 2011 - S.Gioria
  • 50. A voir  http://www.soaspecs.com/ws.php  NIST Guide : Securing Web Services :  http://csrc.nist.gov/publications/nistpubs/800-95/SP800-95.pdf  Article du CERT :  https://buildsecurityin.us-cert.gov/bsi/articles/best-practices/ assembly/639-BSI.html  Gunnar Peterson  http://arctecgroup.net/pdf/WebServicesSecurityChecklist.pdf  Blog : http://1raindrop.typepad.com/  WebCast SANS : https://www.sans.org/webcasts/security-web- services-soa-91958 © 2011 - S.Gioria