Plan • Introduction • Attaques aux services web • Sécurité des services Web • Mécanismes de base de sécurité • Sécurisation des services web • Standards de sécurisation des services web • Conclusion
Introduction • Les services Web sont utilisés de plus en plus pour des transactions d’affaires réelles • Une nouvelle technologie introduit de nouvelles menaces et vulnérabilités • Exple: le piratage des cartes bancaire Quelle sont les attaques aux services web ?? Comment sécuriser les services web??
Attaques aux Services web “Les services Web XML vont réouvrir 70% des chemins d’attaques fermés par les pare-feu lors de la dernière décennie. Ils peuvent transporter virtuellement toutes les données utiles sur le port 80 et le pare-feu ne peut les arrêter.” - Gartner Group, 2003
Attaques aux Services web: Quelques types d’attaque • Parsing: • Données utiles récursives • Données utiles surdimensionnées • Attaque de rejeu • Activité non détectée comme une intrusion: • Adresse source valide • Comportement du paquet normal • Requête HTTP bien formée M M M M Attaquant M Internet M M service M M M M M M M M M M M
Attaques aux Services web :Quelques types d’attaque • Attaques classiques (Man-in-the-middle) • Eavesdropping • Interception et étude du trafic • Rejeu • Envoyer de nouveau une message capturer pour bénéficier d’un service • Perte d’intégrité • Modification des données interceptées
Attaques aux Services web :Quelques types d’attaque • Attaque d’entités externes • Manipulation des liens URL utilisé par les messages SOAP rediriger vers une source malicieuse ou peu fiable Forcer à ouvrir des fichiers douteux
Attaques aux Services web :Quelques types d’attaque Exemple: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.pirate.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.pirate.org/soap/encoding/"> <SOAP-ENV:Header> <m:Transaction xmlns:m="Some-URI">123</m:Transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:GetClient xmlns:m="Some-URI"> <identifiant>ABC-123</identifiant> </m:GetClient> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Attaques aux Services web :Quelques types d’attaque • Attaque d’entités externes • Détournement du routage • WS-Addressing permet de spécifier une route à suivre pour le trafic SOAP en utilisant des balises XML un pirate contrôle l’un de ces routes intermédiaires: • Insérer d’autres routes non fiables détourner de l’information confidentielle • Rediriger l’information à une destination inexistante créer un déni de service
Attaques aux Services web :Quelques types d’attaque • Contenu malicieux • Injection SQL Exemple: <client> <NomduClient>ABC</NomduClient> <IDClient>12345</IDClient> </client> <Client> <NomduClient>ABC</NomduClient> <IDClient>12345; drop table utisateurs; --</IDClient> </client>
Attaques aux Services web :Quelques types d’attaque • Contenu malicieux • Message SOAP avec fichier attaché • Fichier dans le message XML • De plus en plus d’applications supportent XML nativement (Office 2003,2007) • Buffer Overflow • Vérifier s’il y a vérification de la longueur maximale du champ • Exemple:service Web destiné à recevoir une liste de numéros de téléphone
Sécurité des services Web:Mécanisme de base de sécurité • Authentification • Autorisation d’accès • Encryptage / Décryptage • Gestion des certificats • Signature électronique • Audit • Intégrité et confidentialité • Non-répudiation • Infrastructure à la clef public
Sécurité des services Web:Sécurisation des services web • Sécurisation de l’infrastructure informatique • Sécurisation des connexions • Authentification et contrôle d’accès • Sécurisation du protocole SOAP • Standard de sécurité XML
Sécurité des services Web:Sécurisation des services web • Sécurisation de l’infrastructure informatique • Une identification des risques(virus, pirate,…) • Une analyse des conséquences d'une violation de la sécurité • Intégrer les mesures de sécurité à touts les niveaux du réseau de l'entreprise(l'audit de sécurité). • Sécurisation des connexions Une des solutions les plus faciles pour sécuriser les services web et d'assurer la fiabilité de la connexion entre le client et le serveur. • le protocole SSL (Secure Sokets Layer) • Les réseaux privés virtuels (VPN, Virtyal Private Network).
Sécurité des services Web:Sécurisation des services web • Authentification et contrôle d’accès • L’authentification est le processus qui consiste à vérifier l’identité d’une personne, d’un service et ou d’une application émetteur d’un message. • Pour qu’il y ait accès à un système, les informations concernant l’entité sont comparées avec des informations de contrôle des accès.
Sécurité des services Web:Sécurisation des services web • Sécurisation du protocole SOAP Le message SOAP a besoin d’être encrypté pour protéger les contenus de changement. • Encrypter le corps SOAP et/ou des données définies dans les champs header SOAP. • Utiliser SSL (Secure Sockets Layer) pour encrypter le trafic HTTP. • Établir les connexions avec VPN qui est encrypté par défaut.
Sécurité des services Web:Sécurisation des services web • Standard de sécurité XML Les techniques les plus simples pour la sécurité des services web sont: • l’identifiant de l’utilisateur et le password pour l’authentification; • Les listes de contrôle d’accès ou de permissions pour l’autorisation; • Des abrégés de message pour l’intégrité • SSL (Secure Sokets Layer) pour l’encryptage assurant ainsi la confidentialité.
Sécurité des services Web:Standards de sécurisation des services web • XML Digital Signature : procure l’intégrité et la non-répudiation et l’authentification • XML Encryption : chiffre et déchiffre le contenu d’un message • XML Key Management Specification (XKMS) : procure une méthode d’obtention des clés cryptogra-phiques • SAML (Security Assertion Markup Language) : échange d’information sur l’authentification et l’autorisation des utilisateurs et des postes/serveurs
Sécurité des services Web:Standards de sécurisation des services web • XML signature digitale Signature numérique exprimée en XML • Portion (ex.: élément) ou tout le document peut être signé • Un ou plusieurs signatures XML dans un même document XML • Une signature s’applique à tout URI ou contenu non XML (ex.: un fichier .jpg) • Seulement ce qui est signé est considéré sécuritaire
XML signature digitale Élimination des variations dans le message (ex.: crlf en Windows et lf en Unix <Signature> <SignedInfo> (CanonicalizationMethod) (SignatureMethod) (<Reference (URI=)? > (Transforms)? (DigestMethod) (DigestValue) </Reference>)+ </SignedInfo> (SignatureValue) (KeyInfo)? (Object)* </Signature> Pointe àun URI (ex.: URI="#someElementID") DSAwithSHA1 pour stratégie de clé publique Ou HMAC-SHA1 pour l’intégrité Algorithm="http://www.w3.org/2000/09/ xmldsig#sha1" Valeur du condensé (digest) exprimé en base64 Signature numérique du block SignedInfo exprimé en base64
Sécurité des services Web:Standards de sécurisation des services web • Encryptage avec XML • Chiffre une portion du message • Algorithmes variés utilisé pour le cryptage • Utilise quelques balises de XML Signature (dont l’élément KeyInfo) • Chiffrement persistent • Dans la transmission d’un message SOAP qui passe par plusieurs points • En cas de stockage dans une base de données
Sécurité des services Web:Standards de sécurisation des services web • Encryptage avec XML • Exemple sans chiffrement <?xml version='1.0'?> <InfoPaiementxmlns='http://test.org/details'> <Name>Luc Utilisateur</Name> <CarteCreditLimite='12,000' Currency=‘CA'> <Numero>1234 5678 9012 3456</Numero> <Emetteur>Banque Locale</Emetteur> <Expiration>12/06</Expiration> </CarteCredit> </InfoPaiement>
Exemple avec chiffrementcomplet de l’élément CarteCredit <?xml version='1.0'?> <InfoPaiement xmlns='http://test.org/details'> <Name>Luc Utilisateur</Name> <EncryptedData Type='http://www.w3.org/2001/04/ xmlenc#Element’ xmlns='http://www.w3.org /2001 /04/ xmlenc#'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </InfoPaiement>
Exemple avec chiffrement ducontenu de l’élément CarteCredit <?xml version='1.0'?> <InfoPaiement xmlns='http://test.org/details'> <Name>Luc Utilisateur</Name> <CarteCredit Limite='12,000' Monnaie=‘CA'> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </CarteCredit> </InfoPaiement>
Exemple avec chiffrement ducontenu de l’élément CarteCredit • Super-encryptage : <?xml version='1.0'?> <InfoPaiementxmlns='http://test.org/details'> <EncryptedData ID=‘ED1’ xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <CipherData> <CipherValue>original Encryptdonnees</CipherValue> </CipherData> </EncryptedData> </InfoPaiement> Le super encryptage serait: <?xml version='1.0'?> <InfoPaiementxmlns='http://test.org/details'> <EncryptedData ID=‘ED1’ xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <CipherData> <CipherValue>nouveau Encryptdonnees </CipherValue> </CipherData> </EncryptedData> </InfoPaiement>
Sécurité des services Web:Standards de sécurisation des services web • XKMS(XML Key Management Specification ) • Permet la gestion des clés publiques utilisées par exemple avec XML Encryption et XML Signature • Définit deux services Web • XML Key Registration Service Specification (X-KRSS) supporte les opérations (register, recover, reissue, and revoke) qui gèrent le cycle de vie d’une clé publique • XML Key Information Service Specification (X-KISS) supporte les opérations (locate & validate) de requêtes pour obtenir et valider une clé publique
Sécurité des services Web:Standards de sécurisation des services web • WS-Security ou Web Services Security(WSS) • Une spécification d‘une extension de SOAP • Définit une façon standard de représenter l'information sur la sécurité dans un message • WS-Security permet : • De passer des tokens pour l’authentification et l’autorisation dans le header du message SOAP • De signer de manière numérique tout ou une partie du message et transmettre la signature • De chiffrer tout ou une partie du message • De passer l’information sur les clés de chiffrement et de vérification de la signature
WS-Security • Dans l’enveloppe SOAP, l’entête de sécurité inclut : • Horodateur (Timestamp) • Aide à prévenir les attaques de rejeu (replay) • Jetons identifiant le sujet et les clés • Username token: nom et mot de passe • X509: nom et clé publique • Autres incluant les billets Kerberos, et clés de session
WS-Security • Signatures • Syntaxe donnée par le standard XML-DSIG • Lier ensemble une liste d’éléments du message, avec la clé dérivée d’un jeton de sécurité • Clés de chiffrement • Syntaxe donnée par le standard XML-ENC • Plusieurs éléments du message peuvent être chiffrés
Exemple d’intégration des diversstandards en sécurité
Nom d’utilisateur/mot de passe, certificats digitaux X.509, Assertions SAML, Tickets Kerberos <S:Envelope> <S:Header> <wsse:Security> <!-- Security Token --> <wsse:UsernameToken> ... </wsse:UsernameToken> <!-- XML Signature --> <ds:Signature> ... <ds:Reference URI="#body"> ... </ds:Signature> <!-- XML Encryption Reference List --> <xenc:ReferenceList> <xenc:DataReference URI="#body"/> </xenc:ReferenceList> </wsse:Security> </S:Header> <S:Body> <!-- XML Encrypted Body --> <xenc:EncryptedData Id="body" Type="content"> ... </xenc:EncryptedData> </S:Body> </S:Envelope>
Sécurité des services Web:Standards de sécurisation des services web • SAML • SAML (une identité portable) permet le transport des attributs de sécurité d’un individu • Précède les services Web mais a été appliqué à ceux-ci et introduit dans WS-Security • Dans un contexte de commerce électronique, chaque entité conserve son mécanisme d’authentification et SAML permet la confiance inter-domaine. • Chaque organisation fait ou non le choix de faire confiance aux membres d’une autre organisation basé sur les assertions SAML
Sécurité des services Web:Standards de sécurisation des services web • SAML • SAML définit trois types d’assertion • Authentification (mot de passe, Kerberos, X.509, etc.) • Autorisation (peut accéder une ressource donnée de la manière spécifiée) • Attribut d’entité (donne de l’information sur une assertion d’authentification ou d’autorisation) • SAML un protocole de requêtes/réponses pour échanger et générer les assertions
Conclusion • Utiliser la sécurité au niveau du message si possible versus le niveau transport et les méthodes propriétaires • Surveiller l’évolution des standards • Surveiller l’évolution des pare-feu pour accommoder les services Web (i.e. pare-feu XML et XML Gateways) • Ne pas négliger l’impact de la sécurité sur la performance des services Web
À retenir • WS-Security n’est pas suffisant • Les standards répondent à certains types d’attaques • Besoins d’heuristiques pour contrevenir aux autres types d’attaques (XDoS, XVirus, etc.) • Une nouvelle classe d’appareil réseau est nécessaire: le parefeu XML • Inspecte les messages XML lorsqu’ils franchissent les frontières de l’organisation • Ajoute un niveau de sécurité et d’interopérabilité à l’infrastructure • Implémente les standards et les heuristiques et permettent de mettre en place les pratiques exemplaires