Securisation des web services soap contre les attaques par injection

167
Mémoire de fin d’études Pour l’obtention du diplôme d’Ingénieur d’Etat en Informatique Option : Systèmes Informatiques (SIQ) Thème Réalisé par : Proposé et encadré par : - Mr. SMAHI Zakaria - Mr. AMROUCHE Hakim Soutenu le : 16/09/2014 Devant le Jury composé de : Mr. CHALLAL.Y (Président) Mr. KHELOUAT.B (Assesseur1) Mr. DELLYS. H (Assesseur2) Mr. AMROUCHE. H (Assesseur3) Promotion: 2013 - 2014 Sécurisation des Web Services SOAP contre les attaques par injection par la méthode Khi-2 (χ²)

description

Securisation des web services soap contre les attaques par injection

Transcript of Securisation des web services soap contre les attaques par injection

  • 1. Mmoire de fin dtudesPour lobtention du diplme dIngnieur dEtat en InformatiqueOption : Systmes Informatiques (SIQ)ThmeScurisation des Web Services SOAP contre les attaquespar injection par la mthode Khi-2 ()Ralis par : Propos et encadr par :- Mr. SMAHI Zakaria- Mr. AMROUCHE HakimSoutenu le : 16/09/2014Devant le Jury compos de : Mr. CHALLAL.Y (Prsident) Mr. KHELOUAT.B (Assesseur1) Mr. DELLYS. H (Assesseur2) Mr. AMROUCHE. H (Assesseur3)Promotion: 2013 - 2014

2. Ddicaces ceux qui ont sacrifi une partie de leur vie pour me voir grandir etrussir, ceux qui mont toujours soutenu et encourag, A vous ma chremaman et mon chre papa, que dieu vous garde. la mmoire de mes grands-parents, et ma grande mre et mongrand pre, que dieu les garde. mes deux adorables frres, Abdeldjalil et Salaheddine. mon PC El-Nino ;) mes amis denfance Ayoub, Saddam, Nadir et les autres. mes amis les plus proches Nasro, Lyes, Islem, Aziz, Warda et Selma. mes amis les Others Assem, islem mennouchi et Abdelhadi. mes amis de la cit BOURAOUI Amar El-Hachemi, Krimo, Hamza,Tarek et les autres. mes amis du club scientifique CSE avec qui jai pass les momentsles plus heureux de mon cursus lESI, chacun par son nom. mes enseignants du primaire, jusqu luniversit. tous ceux que ce papier na pas pu contenir.Zakariai 3. RemerciementsAu terme de ce travail je tiens tout dabord remercier Allah le toutpuissant de mavoir donn la foi, la volont et la persvrance pourlaboutissement de ce modeste travail.Je prsente mes sincres remerciements mon encadreur Mr AM-ROUCHEHakim qui ma soutenu et encadr durant toutes les tapesde ce projet de fin dtude, je le remercie infiniment pour sa disponi-bilit,sa patience, sa rigueur scientifique, et ses remarques et conseilspertinents.Je remercie aussi, lensemble des enseignants Mr. GUERROUT, Mr.ARIES et Mr. BENCHERIF de lESI et Mr. BENDJIMA et Mr. BE-NAHMEDde luniversit de Bechar et Mr. BOUTEFARA de luniversitde Jijel pour leur aide, leurs conseils et leurs remarques.Je remercie les membres de la grande communaut de lopen sourceet la scurit informatique Mr. Djamil SLIMANI (aka Chevrosky), Mr.Islem MENNOUCHI et Mr. Assem CHELLI pour leurs aides techniqueset documentaires.Je tiens remercier galement lensemble des ingnieurs et doctor-antde lESI : Mr.DAIFALLAH, Melle. BOUHAFS, Mr. HAMIDI, Mr.BENMAMMERI et Mr. DJEBLI pour leurs feedbacks.Je remercie les membres de jury pour avoir accept de participer valuer ce projet.Enfin, mes sincres remerciements tous ceux qui, de prs ou de loin,ont contribu par leurs conseils et leurs encouragements ldificationde ce mmoire.iii 4. RsumLes Web Services sont des applications bases sur XML qui fournissent uneinfrastructure pour dcrire (WSDL), dcouvrir (UDDI) et invoquer (SOAP) desservices. Malheureusement, une plateforme base sur les web services est confronte un certains nombre dattaques dues lutilisation du XML comme format pourles messages de communication SOAP.Ces attaques sont gnralement de type injection (do lappellation attaquespar injection) et reposent sur le problme quil nexiste aucune sparation stricteentre les instructions dun programme et les donnes quun utilisateur y saisit. Lafamille dattaques par injection regroupe les injections SQL, les injections surles fichiers XML (injections XML, injections XPath et injections XQuery)et les injections de commandes du systme.Pour fournir un mcanisme de scurit plus efficace pour les plateformes basessur les web services, les pare-feu XML ont t rcemment introduits comme uneextension pour les pare-feux conventionnels. Dans ce contexte nous allons concevoiret raliser un pare-feu XML, qui peut tre utilis pour scuriser les web servicescontre les attaques par injection. Notre firewall reoit en entre un message SOAP,qui lui extrait ses diffrents n-grammes et les compare avec un model dej crcontenant des bons messages du web service (un vecteur moyen) en utilisant unalgorithme de calcul de similarit entre chanes de caractres qui est la distanceKhi-2 () ; cette distance permet de dcider si le message est bon ou malveillant.Enfin, pour montrer lefficacit de notre pare-feu, nous lavons test sur uneplateforme base dun web service permettant aux clients de sauthentifier et desinscrire et ce pour pouvoir tester les diffrents types dinjections. Suite une sriede tests ; nous montrerons comment une injection peut tre dtcte efficacementpar notre pare-feu.Mots cls : Web services, scurit, SOAP, attaques base XML , attaques parinjection, n-gramme, Khi-2.v 5. AbstractWeb Services are XML-based applications that provide infrastructure for de-scribing(WSDL), discovering (UDDI) and invoking (SOAP) services. Unfortu-nately,web services based plateforms are faced to a number of attacks caused bythe use of XML as a the format of SOAP communication messages.These attacks are usually injection-type (injection attacks), and they are basedon the problem that there is no strict separation between program instructions anduser inputs data. The injection attacks family includes SQL injections, XMLfiles injections (XML injections, XPath injections and XQuery injections)and OS commands injections.To provide more effective security mechanism for web services and their plat-forms,XML firewalls have been recently introduced as an extension to conven-tionalfirewalls. In this context we will design and implement an XML firewall,which can be used to secure web services against injection attacks.Our firewall receives a SOAP message, and extracts its different n-grams andcompares them with a previously created model from web service good messages(a mean vector) using an algorithm for calculation of similarity between stringswhich is the Khi-squared () distance; this distance allows to decide whetherthe message is good or malicious.Finally, to show the effectiveness of our firewall, we tested it on a web servicebased plateform that allows clients to authenticate and subscribe, so we can testdifferent types of injections. Following a series of performed tests ; we show howan injection attack can be detected effectively by our firewall.Keywords: Web services, Security, SOAP, XML based-attacks, injection attacks,n-gram, Khi-2.vii 6. Table des matiresDdicaces iRemerciements iiiRsum vAbstract viiTable des matires ixTable des figures xvListe des tableaux xviiListe des algorithmes xixListe des abrviations xxiIntroduction Gnrale 1tude bibliographique 51 Les web services SOAP 71.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Dfinitions des Web Services . . . . . . . . . . . . . . . . . . . . . . 71.2.1 Dfinition du W3C . . . . . . . . . . . . . . . . . . . . . . . 71.2.2 Dfinition de IBM . . . . . . . . . . . . . . . . . . . . . . . . 81.3 Caractristiques des Web services . . . . . . . . . . . . . . . . . . . 9ix 7. TABLE DES MATIRES1.4 Technologies des Web Services . . . . . . . . . . . . . . . . . . . . . 91.4.1 XML (eXtensibleMarkupLanguage) . . . . . . . . . . . . . . 101.4.1.1 Dfinition du W3C . . . . . . . . . . . . . . . . . 101.4.1.2 Autre dfinition . . . . . . . . . . . . . . . . . . . . 101.4.2 WSDL (Web Services Description Language) . . . . . . . . . 101.4.3 SOAP(Simple Object Access Protocol) . . . . . . . . . . . . 111.4.3.1 Messages SOAP du Cot Client . . . . . . . . . . . 121.4.3.2 Messages SOAP du Cot Serveur . . . . . . . . . . 121.4.3.3 Caratristiques du protocole SOAP . . . . . . . . . 131.4.3.4 Structure dun message SOAP . . . . . . . . . . . . 131.4.4 UDDI (Universal Description Discovery and Integration) . . 151.5 Fonctionnement des web services . . . . . . . . . . . . . . . . . . . 151.6 Avantages dutilisation des web services . . . . . . . . . . . . . . . . 171.7 Inconvnients dutilisation des web services . . . . . . . . . . . . . . 171.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Attaques par injection sur les web services 192.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 Les vulnrabilits dans les Web Services . . . . . . . . . . . . . . . 192.3 Attaques base XML sur les web services . . . . . . . . . . . . . . 202.4 Les attaques de dni de services XDOS . . . . . . . . . . . . . . . . 212.5 Les attaques par injection . . . . . . . . . . . . . . . . . . . . . . . 222.5.1 Injection XML . . . . . . . . . . . . . . . . . . . . . . . . . 232.5.1.1 Injection XML simple . . . . . . . . . . . . . . . . 232.5.1.2 Injection de code XML Malform . . . . . . . . . . 242.5.1.3 Injection de balises XML automatiques . . . . . . . 252.5.1.4 Injection XML Persistante . . . . . . . . . . . . . 262.5.1.5 Injection XML dans les messages SOAP . . . . . . 272.5.2 Injection XPath . . . . . . . . . . . . . . . . . . . . . . . . . 292.5.2.1 Injection XPath Simple . . . . . . . . . . . . . . . 292.5.2.2 Dumping dun Document XML . . . . . . . . . . . 312.5.2.3 Blind XPath Injection . . . . . . . . . . . . . . . . 312.5.2.4 Injection XQuery . . . . . . . . . . . . . . . . . . . 312.5.2.5 Injection XPath dans les messages SOAP . . . . . 322.5.3 Injection SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 332.5.3.1 Manipulation du SQL . . . . . . . . . . . . . . . . 332.5.3.2 Injection de Code . . . . . . . . . . . . . . . . . . . 342.5.3.3 Injection des appels de fonctions . . . . . . . . . . 352.5.3.4 Blind SQL Injection . . . . . . . . . . . . . . . . . 362.5.3.5 Injection SQL dans les messages SOAP . . . . . . . 37x 8. TABLE DES MATIRES2.5.4 Injection de commandes OS . . . . . . . . . . . . . . . . . . 392.5.4.1 Injection de commandes OS dans les messages SOAP 402.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Approches de scurisation des web services 433.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.2 Firewall XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.2.1 Pare-feu (Firewall en anglais) . . . . . . . . . . . . . . . . . 433.2.2 Pare-feu XML . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3 Les approches de scurisation des web services . . . . . . . . . . . . 443.3.1 Les expressions rgulires . . . . . . . . . . . . . . . . . . . . 443.3.2 Test du Khi-2 2 . . . . . . . . . . . . . . . . . . . . . . . . 453.3.3 Les approches base de signatures . . . . . . . . . . . . . . 483.3.3.1 Avantages : . . . . . . . . . . . . . . . . . . . . . . 483.3.3.2 Inconvnients : . . . . . . . . . . . . . . . . . . . . 483.3.4 Les approches probabilistes . . . . . . . . . . . . . . . . . . 483.3.4.1 Comparaison et calcul de similarit entre chanesde caractres . . . . . . . . . . . . . . . . . . . . . 493.3.4.2 Quelques travaux sur la dtection des attaques parinjection . . . . . . . . . . . . . . . . . . . . . . . . 533.3.5 Synthse des travaux . . . . . . . . . . . . . . . . . . . . . . 543.3.5.1 Les Approches par signature et les approches prob-abilistes. . . . . . . . . . . . . . . . . . . . . . . . 543.3.5.2 Les approches probabilistes . . . . . . . . . . . . . 543.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Conception 574 Conception 594.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.2 Les attaques dtectes par notre pare-feu . . . . . . . . . . . . . . . 594.3 Architecture globale de notre firewall . . . . . . . . . . . . . . . . . 604.4 Le noyeau dadministration . . . . . . . . . . . . . . . . . . . . . . 604.4.1 Cration/Mise--jour dun profil web service . . . . . . . . . 614.4.1.1 Cration dun profil web service . . . . . . . . . . . 614.4.1.2 Modification de profil du web service . . . . . . . 674.5 Le noyeau de protection . . . . . . . . . . . . . . . . . . . . . . . . 674.5.1 Interception du message SOAP . . . . . . . . . . . . . . . . 674.5.2 Extraction des n-grammes et de la table de frquences . . . 684.5.3 Calcul de la distance Khi-2 . . . . . . . . . . . . . . . . . . . 68xi 9. TABLE DES MATIRES4.6 Fichier de configuration . . . . . . . . . . . . . . . . . . . . . . . . 714.7 Journal des vnements (log) . . . . . . . . . . . . . . . . . . . . . . 714.7.1 Visualisation et suppression du journal . . . . . . . . . . . . 734.8 Algorithme de protection . . . . . . . . . . . . . . . . . . . . . . . 754.9 Etude de cas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.9.1 Les mthodes de notre service web . . . . . . . . . . . . . . 764.9.2 Ajout du web service Users . . . . . . . . . . . . . . . . 764.9.2.1 Profil du web service . . . . . . . . . . . . . . . . . 764.9.2.2 Extraction des mthodes . . . . . . . . . . . . . . 764.9.2.3 Rcupration du log . . . . . . . . . . . . . . . . . 764.9.2.4 Extraction des n-grammes et gnration du vecteurmoyen . . . . . . . . . . . . . . . . . . . . . . . . . 764.9.3 Scnarios dattaques . . . . . . . . . . . . . . . . . . . . . . 774.9.3.1 Injection SQL . . . . . . . . . . . . . . . . . . . . . 774.9.3.2 Injection XPath . . . . . . . . . . . . . . . . . . . . 774.9.3.3 Injection XML . . . . . . . . . . . . . . . . . . . . 784.9.3.4 Injection de commandes OS . . . . . . . . . . . . . 794.9.3.5 Tester une attaque . . . . . . . . . . . . . . . . . . 794.9.4 Scnario un bon message . . . . . . . . . . . . . . . . . . . . 804.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Ralisation et Tests 815 Ralisation 835.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.2 Systme dexploitation . . . . . . . . . . . . . . . . . . . . . . . . . 835.3 Environnement de dveloppement . . . . . . . . . . . . . . . . . . . 845.3.1 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.3.2 CGI-BIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.3.3 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.3.4 SoapUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.3.5 La bibliothque NetfilterQueue . . . . . . . . . . . . . . . . 875.4 La Ralisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875.4.1 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . 875.4.2 Architecture technique du firewall . . . . . . . . . . . . . . . 895.4.3 Noyeau de Protection . . . . . . . . . . . . . . . . . . . . . . 895.4.3.1 Interception . . . . . . . . . . . . . . . . . . . . . . 905.4.3.2 Vrification . . . . . . . . . . . . . . . . . . . . . . 925.4.4 Noyeau dAdministration . . . . . . . . . . . . . . . . . . . . 925.4.4.1 Interface Login Panneau dadministration . . . . . 93xii 10. TABLE DES MATIRES5.4.4.2 Interface globale du Panneau dadministration . . . 935.4.4.3 Interface Profils des web services . . . . . . . . . . 945.4.4.4 Interface de Configuration . . . . . . . . . . . . . . 955.4.4.5 Interface Journal des vnements . . . . . . . . . . 965.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 Tests et Rsultats 996.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996.2 Lensemble de donnes utilises pour la construction du vecteurmoyen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996.2.1 Mesures dvaluations utilises . . . . . . . . . . . . . . . . . 1006.2.1.1 Matrice de confusion . . . . . . . . . . . . . . . . . 1006.2.1.2 Courbe de ROC . . . . . . . . . . . . . . . . . . . 1016.3 La configuration de la plateforme des tests . . . . . . . . . . . . . . 1026.4 Rsultats des exprimentations . . . . . . . . . . . . . . . . . . . . 1026.4.1 Mthode Login . . . . . . . . . . . . . . . . . . . . . . . . . 1026.4.1.1 Test 1 : 1000 messages . . . . . . . . . . . . . . . . 1036.4.1.2 Test 2 : 5000 messages . . . . . . . . . . . . . . . . 1056.4.1.3 Test 3 : 10000 messages . . . . . . . . . . . . . . . 1076.4.2 Mthode Subscribe . . . . . . . . . . . . . . . . . . . . . . . 1096.4.2.1 Test 1 : 1000 messages . . . . . . . . . . . . . . . . 1096.4.2.2 Test 2 : 5000 messages . . . . . . . . . . . . . . . . 1116.4.2.3 Test 3 : 10000 messages . . . . . . . . . . . . . . . 1136.5 Discussion et Synthse . . . . . . . . . . . . . . . . . . . . . . . . . 1156.5.1 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156.5.1.1 Taille du vecteur moyen . . . . . . . . . . . . . . . 1156.5.1.2 Temps moyen dexecution . . . . . . . . . . . . . . 1156.5.1.3 Taux de faux positifs et faux ngatifs . . . . . . . . 1156.5.1.4 Courbe de ROC . . . . . . . . . . . . . . . . . . . 1166.5.2 Synthse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Conclusion gnrale et perspectives 119Bibliographie 121xiii 11. TABLE DES MATIRESAnnexes 127A Le langage XPath 129A.1 La forme dune expression XPath . . . . . . . . . . . . . . . . . . . 131B Algorithme de distance de Levenshtein 133C La commande IPTables/La Bibliothque NetfilterQueue 137C.1 La commande IPTables . . . . . . . . . . . . . . . . . . . . . . . . 137C.1.1 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 137C.2 La Bibliothque NetfilterQueue . . . . . . . . . . . . . . . . . . . . 138C.2.1 Principaux objets et mthodes de la bibliothque . . . . . . 139D Les vecteurs dattaques utilises dans ce projet 141D.1 Injection SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141D.2 Injection de commandes OS . . . . . . . . . . . . . . . . . . . . . . 142D.3 Injection XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142D.4 Injection XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143xiv 12. Table des figures1.4.1 Structure gnrale dun fichier WSDL . . . . . . . . . . . . . . . . 111.4.2 Description du fonctionnement du protocole SOAP . . . . . . . . . 121.4.3 Structure du message SOAP . . . . . . . . . . . . . . . . . . . . . 141.4.4 Exemple dun message SOAP . . . . . . . . . . . . . . . . . . . . . 141.5.1 Les principaux acteurs dans un web service . . . . . . . . . . . . . 162.3.1 Attaques base XML . . . . . . . . . . . . . . . . . . . . . . . . . 202.5.1 Les attaques par injection . . . . . . . . . . . . . . . . . . . . . . . 232.5.2 Injection XML dans un message SOAP . . . . . . . . . . . . . . . 282.5.3 Rponse du serveur au message SOAP envoy . . . . . . . . . . . . 282.5.4 Injection XPath dans un message SOAP . . . . . . . . . . . . . . . 322.5.5 Rponse du service web : lister tous les (username,password) . . . 332.5.6 Injection SQL dans un message SOAP . . . . . . . . . . . . . . . . 382.5.7 Rponse SOAP linjection SQL . . . . . . . . . . . . . . . . . . . 382.5.8 Injection Commandes dans un message SOAP . . . . . . . . . . . 402.5.9 Injection Commandes dans un message SOAP . . . . . . . . . . . 413.2.1 Systme bas sur les web services protg par un pare-feu XML . 443.3.1 Table de Khi-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.3.1 Architecure globale pare-feu XML . . . . . . . . . . . . . . . . . . 604.4.1 Profils des web services . . . . . . . . . . . . . . . . . . . . . . . . 624.4.2 Ajouter un web service . . . . . . . . . . . . . . . . . . . . . . . . 634.4.3 mcanisme dajout dun web service . . . . . . . . . . . . . . . . . 644.4.4 Parser du fichier WSDL . . . . . . . . . . . . . . . . . . . . . . . . 644.4.5 Acquisiteur de requtes autorises . . . . . . . . . . . . . . . . . . 654.4.6 Extraction des n-grammes et de tableau de frquences des n-grammes 664.4.7 Vecteur moyen des frquences de n-grammes . . . . . . . . . . . . 664.4.8 Processus de modification dun profil web service . . . . . . . . . . 674.5.1 Schma de dcision de malveillance ou pas du message . . . . . . . 694.6.1 Structure du fichier de configuration . . . . . . . . . . . . . . . . . 71xv 13. TABLE DES FIGURES4.7.1 Structure dun fichier journal . . . . . . . . . . . . . . . . . . . . . 724.7.2 Structure dun fichier journal dattaques . . . . . . . . . . . . . . . 724.7.3 Visualisation et suppression du journal . . . . . . . . . . . . . . . 734.7.4 Exemple dun fichier Journal (log) . . . . . . . . . . . . . . . . . . 745.2.1 Systme Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.2.2 Logo de la distribution ubuntu . . . . . . . . . . . . . . . . . . . . 845.3.1 Langage Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.3.2 Principe de fonctionnement du CGI . . . . . . . . . . . . . . . . . 855.3.3 Twitter Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.3.4 SoapUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875.4.1 Diagramme de classes de la solution propose . . . . . . . . . . . . 885.4.2 Architecture de notre firewall . . . . . . . . . . . . . . . . . . . . . 895.4.3 Injection SQL envoye via loutil SoapUI . . . . . . . . . . . . . . 905.4.4 Interface dauthentification . . . . . . . . . . . . . . . . . . . . . . 935.4.5 Interface globale du Panneau dadministration . . . . . . . . . . . 945.4.6 Interface des Profils des Web Services . . . . . . . . . . . . . . . . 955.4.7 Interface configuration du firewall . . . . . . . . . . . . . . . . . . 965.4.8 Journal des attaques dtectes . . . . . . . . . . . . . . . . . . . . 976.3.1 Configuration du rseau LAN utilise pour les tests . . . . . . . . 1026.4.1 Graphe de variations de FP et FN cas 1000 messages . . . . . . . 1046.4.2 Courbe de ROC pour la mthode login cas 1000 messages . . . . . 1046.4.3 Graphe de variations de FP et FN cas 5000 messages . . . . . . . 1066.4.4 Courbe de ROC pour la mthode login cas 5000 messages . . . . . 1066.4.5 Graphe de variations de FP et FN cas 10000 messages . . . . . . . 1086.4.6 Courbe de ROC pour la mthode login cas 10000 messages . . . . 1086.4.7 Graphe de variations de FP et FN cas 1000 messages . . . . . . . 1106.4.8 Courbe de ROC pour la mthode subscribe cas 1000 messages . . 1106.4.9 Graphe de variations de FP et FN cas 5000 messages . . . . . . . 1126.4.10 Courbe de ROC pour la mthode subscribe cas 5000 messages . . 1126.4.11 Graphe de variations de FP et FN cas 10000 messages . . . . . . . 1146.4.12 Courbe de ROC pour la mthode subscribe cas 10000 messages . . 114A.1 Le modle XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . 130xvi 14. Liste des tableaux2.1 Rsultat danalyse du fichier XML . . . . . . . . . . . . . . . . . . 272.2 Exemple dinjection de commande . . . . . . . . . . . . . . . . . . 403.1 Exemples expressions rgulires . . . . . . . . . . . . . . . . . . . . 453.2 Signature de quelques attaques par inejction (cas injection SQL) . 483.3 1-grammes et bigrammes extraits de la chane par exemple . . . 514.1 Attaque Injection SQL . . . . . . . . . . . . . . . . . . . . . . . . 774.2 Attaque Injection XPath . . . . . . . . . . . . . . . . . . . . . . . 784.3 Attaque Injection XML . . . . . . . . . . . . . . . . . . . . . . . . 784.4 Attaque Injection de commandes OS . . . . . . . . . . . . . . . . . 796.1 Les diffrentes tailles dchantillons dapprentissage utiliss . . . . 1006.2 Exemple matrice de confusion . . . . . . . . . . . . . . . . . . . . 1016.3 Taille et Temps Gnration du Vecteur moyen cas 1000 messages . 1036.4 Taux de F.Ps et F.Ns, T.M de dtection cas 1000 messages . . . . 1036.5 AUC mthode login cas 1000 messages . . . . . . . . . . . . . . . . 1036.6 Taille et Temps Gnration du Vecteur moyen cas 5000 messages . 1056.7 Taux de F.Ps et F.Ns cas 5000 messages . . . . . . . . . . . . . . . 1056.8 AUC mthode login cas 5000 messages . . . . . . . . . . . . . . . . 1056.9 Taille et Temps Gnration du Vecteur moyen cas 10000 messages 1076.10 Taux de F.Ps et F.Ns cas 10000 messages . . . . . . . . . . . . . . 1076.11 AUC mthode login cas 10000 messages . . . . . . . . . . . . . . . 1076.12 Taille et Temps Gnration du Vecteur moyen cas 1000 messages . 1096.13 Taux de F.Ps et F.Ns cas 1000 messages . . . . . . . . . . . . . . . 1096.14 AUC mthode subscribe cas 1000 messages . . . . . . . . . . . . . 1096.15 Taille et Temps Gnration du Vecteur moyen cas 5000 messages . 1116.16 Taux de F.Ps et F.Ns cas 5000 messages . . . . . . . . . . . . . . . 1116.17 AUC mthode subscribe cas 5000 messages . . . . . . . . . . . . . 1116.18 Taille et Temps Gnration du Vecteur moyen cas 10000 messages 1136.19 Taux de F.Ps et F.Ns cas 10000 messages . . . . . . . . . . . . . . 113xvii 15. LISTE DES TABLEAUX6.20 AUC mthode subscribe cas 10000 messages . . . . . . . . . . . . 113D.1 Injections SQL les plus usuelles cas MySQL . . . . . . . . . . . . . 141D.2 Injections de commandes OS cas Linux . . . . . . . . . . . . . . . 142D.3 Injections XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142D.4 Injections XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143xviii 16. Liste des algorithmes2.1 Script Perl vulnrable linjection XPath . . . . . . . . . . . . . . . 302.2 Code C vulnrable linjection de commandes . . . . . . . . . . . . 393.1 Distance de Khi-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.2 Algorithme de LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.3 Formule de similarit de cosinus . . . . . . . . . . . . . . . . . . . . 503.4 Formule de Coefficient de Dice . . . . . . . . . . . . . . . . . . . . . 514.1 Distance de Khi-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.2 Distance 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.3 Algorithme de protection . . . . . . . . . . . . . . . . . . . . . . . . 755.1 Code Dinterception de messages SOAP . . . . . . . . . . . . . . . . 915.2 Code De vrification du message SOAP . . . . . . . . . . . . . . . . 92B.1 Algorithme Distance de Levenshtein . . . . . . . . . . . . . . . . . . 134C.1 Exemple dutilisation de la bibliothque NetfilterQueue . . . . . . . 139xix 17. Liste des abrviationsAPI Application Programming InterfaceAUC Area Under CurveDNS Domain Name SystemFW FireWallHTTP HyperText Transfer ProtocolHTTPS HyperText Transfer Protocol over SSLOASIS Organization for the Advancement of StructuralInformation StandardsOS Operating SystemOWASP Open Web Applications Security ProjectROC Receiver Operating CharacteristicSOAP Simple Object Access ProtocolSQL Structured Query LanguageSSL Secure Socket LayerSVM Support Vector MachineUDDI Universal Description, Discovery and IntegrationURI Uniform Resource IdentifierURL Uniform Resource LocatorXDOS XML Denial Of ServiceXML eXtensible Markup LanguageXPath XML PathXQuery XML QueryW3C World Wide Web ConsortiumWEBAPPSEC WEB APPlication SECurity consortiumWS Web ServiceWSDL Web Service Description LanguageWWW World Wide Webxxi 18. Introduction GnraleCadre gnral et objectifsUn web service est un composant applicatif mis la disposition dautres systmeset applications sur un rseau, il dispose de mthodes qui peuvent tre invoques distance via des protocoles rseau standards (HTTP). La communication entreles Web Services seffectue grce lutilisation du langage XML, et du protocoleSOAP.Les web services sont vulnrables un certain nombre dattaques dites attaques base XML ou XML-based attacks , ces attaques sont en gnral des attaquesde type injection. Nous nous intrssons ce type, car il a une forte relation avecles donnes entres par un client du web service et qui ; en gnral ; ne sont pasvalides et controles avant tre envoyes au web service. Ce type dattaques ; et linstar de touts attaque base XML; nest pas malheureusement trait par lespare-feu existants, suite leur inhabilit inspecter les contenus XML.Afin de remdier ce problme, les firewalls XML sont introduits comme solutionet extension aux firewalls existants. Ils se chargent danalyser les contenus XMLcontenu dans les messages SOAP et de les filtrer.Lobjectif principal de notre travail est didentifier les diffrentes attaques parinjection contre les web services pouvant tre excutes travers les messagesSOAP, et de proposer un mcanisme de scurit qui permettra de dtecter cesattaques.ContributionsNotre solution consiste utiliser un algorithme de calcul de similarit entrechanes de caractres (distance de Khi2) comme un mcanisme pour dtcter lesattaques de type injection. cet algorithme compare un message entrant avec unensemble dj construit auparavant (un dataset) dans une phase dite phase dap-prentissage.Le rsultat de comparaison sera une dcision si le message est bon ou1 19. Introduction Gnralemalveillant.A travers cette solution nous visons crer un scnario dune plateforme basesur un web service, ainsi que des scnarios dattaques sur cette plateforme ; pourenfin crer un model firewall XML pour scuriser les web services contre les at-taquespar injection ; qui sera un middleware invisible pour les deux cots de lacommunication en web service (le web service lui-mme et ses clients).Organisation du mmoireCe document est compos de trois parties :Etude bibliographique :Cette partie porte sur une tude dun tat de lart relatif notre problmatique, savoir, les diffrentes attaques auxquelles est confronte une plateforme basesur les web services. Elle comporte trois chapitres : Chapitre 1 intitul Les web services SOAP : qui prsente la technolo-giede web services : les dfinitions donnes, les standards utiliss et leursarchitectures. Chapitre 2 intitul Attaques par injection sur les web services : dansce chapitre nous abordons les attaques sur les web services et nous dtaillonsles attaques de type injection et leurs impacts sur les web services. Chapitre 3 intitul Approches de scurisation des web services : nousprsentons ici les diffrents travaux effectus dans le domaine de scurisationdes web services, nous essayons par la fin de les synthtiser et montrer leurspoints forts et leurs insuffisances.Conception :Cette partie contient un seul chapitre : Chapitre 4 intitul Conception : qui portera sur ltude conceptuelle etla description de notre solution dveloppe, ainsi que les diffrents modules deson architecture, enfin nous prsenterons une tude dun cas rel sur laquellenous montrons le fonctionnement de notre solution et ce travers des scnariosde diffrents types dattaques par injection.Ralisation et tests :Cette partie est consacre aux dtails techniques de notre solution et ses perfor-mances.Elle comporte deux chapitres :2 20. Chapitre 5 intitul Ralisation : on dtaillera ici la mise en oeuvre de lasolution propose dans la deuxime partie, en prsentant les outils utiliss etlimplmentation du firewall XML. Chapitre 6 intitul Tests et Rsultats : dans ce chapitre nous effectuonsune srie de tests afin de montrer lfficacit de notre firewall, en lxecutantdans un environnement rel contenant une plateforme base de web service.A travers une srie de scnarios dattaques et de non-attaques nous testons lesperformances de cette solution, les rsultats ainsi obtenus seront intrprt etanalys et synthtis la fin pour en sortir avec une meilleure configurationde ce pare-feu.En fin, nous allons conclure ce travail par une conclusion gnrale, et les perspec-tivesenvisages et les possibilits dextension de notre solution, et les ventuellesamliorations.3 21. tude bibliographique Once you stop learning, youstart dying (Albert EINSTEIN) 22. Chapitre 1Les web services SOAP1.1 IntroductionLes Web services sont devenus de plus en plus populaires, non seulement dansles rseaux intranet, mais aussi dans les communications inter-entreprises ; et cegrce la manire dont ils dfinissent et traitent les donnes et les faire agir avecdautres applications.Les web services sont des applications base XML, mis la disposition dedautres applications et systmes sur un rseau. Ils sont des complments auxprogrammes et applications existantes dveloppes laide des langages tel queC++, Java, Python . . . etc., qui assurent les communications des programmes entreeux.Alors cest quoi un web service ? Cest quoi XML? Et comment les web servicescommuniquent avec les autres applications ?1.2 Dfinitions des Web ServicesIl existe plusieurs dfinitions des web services, cependant elles convergent toutesvers le fait que les web services sont des programmes accessibles distance, quipeuvent tre dploys sur nimporte quel plateforme, et peuvent tre utiliss pardautres programmes y compris dautres web services. Il sagit dune forme de tech-nologieintergicielle (Middleware) qui sappuie sur des standards, principalementproposs par le World Wide Web Consortium (W3C), comme XML,WSDL.1.2.1 Dfinition du W3C A Web service is a software system designed to support interop-erablemachine-to-machine interaction over a network. It has an in-7 23. Chapitre 1 Les web services SOAPterface described in a machine-processable format (specifically WSDL).Other systems interact with the Web service in a manner prescribed byits description using SOAP messages, typically conveyed using HTTPwith an XML serialization in conjunction with other Web-related stan-dards. [Booth, 2004].Traduction :Un Web service est un systme logiciel conu pour soutenir linteraction in-teroprablemachine--machine.Il dispose dune interface dcrite dans un formatlisible en machine (en particulier WSDL).Les systmes interagissent avec un service web travers la manire prescritepar sa description en utilisant les messages SOAP, typiquement transmis via leprotocole HTTP avec une srialisation XML en conjonction avec dautres normeslies au Web.1.2.2 Dfinition de IBM A Web service is an interface that describes a collection of opera-tionsthat are network accessibe through standardized XML messaging.A Web service is described using a standard, formal XML notion, calledits service descrption. It covers all the details necessary to interactwith the service, including message formats (that detail the operations),transport protocols and location. The interface hides the implementa-tiondetails of the service, allowing it to be used independently of thehardware or software platform on which it is implemented and also in-dependentlyof the programming language in which it is written. Thisallows and encourages Web Services-based applications to be looselycoupled, Component-oriented, cross-tcehnology implementations. WebServices fulfill a specific task or a set of tasks. They can be used aloneor with other Web Services to carry out a complex aggregation or abusiness transaction [Kreger, 2001].Traduction :UnWeb Service est une interface qui dcrit une collection doprations accessibesvia rseau travers une messagerie XML standardise. Un Web Service est dcriten utilisant une notion de la norme XML, formelle, appele sa descrption de service.Elle (i.e la description du service) couvre tous les dtails ncessaires pour interagiravec le service, y compris les formats de messages (qui dtaillent les oprations),les protocoles de transport et lemplacement.8 24. 1.3 Caractristiques des Web servicesLinterface masque les dtails du service, ce qui permet de lutiliser indpendam-mentde la plate-forme matrielle (hardware) ou logicielle (software) laquelle ilest mis en oeuvre et galement indpendamment du langage de programmationdans lequel il est crit ; ceci qui assure et encourage un faible couplement et desimplmentations inter-technologies.Les web services remplissent une tche spcifique ou une srie de tches. Ilspeuvent tre utiliss seuls ou avec dautres web services pour raliser une agrgationcomplexe ou une transaction commerciale.Ces deux dfinitions mettent en valeur les points suivants : Linterface du web service, interprtable par dautres machines, permettantaux applications daccder dune manire automatique au service. Lutilisation des protocoles et langages indpendants des plateformes de d-ploiementqui renforcent linteroprabilit entre services. Lutilisation des normes actuelles du Web permettant la ralisation des inter-actionsfaiblement couples et favorisant aussi linteroprabilit.1.3 Caractristiques des Web servicesLes web services sont en gnrales caractrises par ces caractristiques [Hugo, 2002] : Interactions entre machines Accords dynamiques Pas de connaissance a priori des services avec lesquelles le programme est eninteraction. Laccessibilit via le rseau. Son interface, permet aux applications daccder dune manire automatiqueau service1.4 Technologies des Web ServicesAfin de rendre les web services interoprables, lorganisation WS-I a propos dedfinir les web services en introduisant des profils.Lun de ces profils est le WS-IBasic qui est compos de quatre parties[Rabhi, 2012] : La description de linterface du service web grce au langage WSDL (WebServices Description Language). La srialisation des messages transmis via le protocole SOAP(Simple ObjectAccess Protocol). Lindexation des servicesWeb dans des registres UDDI (Universal Description,DiscoveryIntegration).9 25. Chapitre 1 Les web services SOAP La scurit des services Web, obtenue essentiellement grce des protocolesdauthentification et de cryptage XML.1.4.1 XML (eXtensibleMarkupLanguage)1.4.1.1 Dfinition du W3C Extensible Markup Language (XML) is a simple, very flexible textformat derived from SGML (ISO 8879). Originally designed to meetthe challenges of large-scale electronic publishing, XML is also playingan increasingly important role in the exchange of a wide variety of dataon the Web and elsewhere. [Bray, 1998].1.4.1.1.1 TraductionExtensible Markup Language (XML) est un format texte simple, trs soupledriv de SGML (ISO 8879). Initialement conu pour rpondre aux dfis de ldi-tionlectronique grand chelle, XML joue galement un rle de plus en plusimportant dans lchange dune grande varit de donnes sur le Web et ailleurs.1.4.1.2 Autre dfinitionLes Web Services se fondent sur XML qui est un langage de bannires, permet-tantdcrire des contenus organiss de manire hirarchique. Le principal intrtdXML est que ce format de document permet de transmettre linformation, etles mtadonnes qui indiquent sa signification, et la structure de linformation changer[Rabhi, 2012].Ces deux dfinitions mettent en valeur les points suivants : XML est un langage de balisage driv du langage SGML. Sa syntaxe est extensible ce qui permet de dfinir des espaces de noms (names-paces); i.e des langages spcifiques avec leurs vocabulaires et grammaires. Lobjectif initial du XML est de faciliter lchange automatis de contenuscomplexes entre systmes dinformations htrognes (interoprabilit) ; doson utilisation dans les web services.1.4.2 WSDL (Web Services Description Language)WSDL fournit une description de linterface des Web Services. Il permet dedcrire lensemble des oprations fournies par un Web Service. Les messages missont consomms par ces oprations, sans se proccuper de limplantation de celles-ci[Hassen, 2009].10 26. 1.4 Technologies des Web Servicesle fichier WSDL est un fichier XML qui peut tre divis en deux parties, lapremire partie lentte qui est compose des dfinitions abstraites, et la secondepartie qui se compose de descriptions concrtes [Chollet, 2009]. Description abstraite : concerne linterface du service, les oprations sup-portes,ainsi les paramtres et les types de donnes. Description concrte : concerne laccs au service (port, protocole spci-fiquedaccs, etc.).La figure suivante (figure 1.4.1) montre bien la structure dun fichier WSDL :Figure 1.4.1 : Structure gnrale dun fichier WSDL1.4.3 SOAP(Simple Object Access Protocol)SOAP est construit comme tant un nouveau protocole pour les environnementsdcentraliss et distribus. Il utilise le rseau internet et XML pour changer lesinformations entre les noeuds [Suda, 2003].11 27. Chapitre 1 Les web services SOAPSOAP, dvelopp par IBM et Microsoft, est une recommandation W3C qui ledfinit comme tant un protocole de communication bas sur XML pour perme-ttreaux applications de schanger des informations via HTTP. Il permet ainsilaccs aux services web et linteroprabilit des applications travers le web. Ilest portable et donc indpendant de tous systme dexploitation et du type dor-dinateur.Le message SOAP est chang entre un client et un serveur.1.4.3.1 Messages SOAP du Cot ClientLe client envoie des messages au serveur correspondant des requets SOAP-XMLenvelopps dans des requtes HTTP. De mme, les rponses du serveur sontdes rponses HTTP qui renferment des rponses SOAP-XML. Dans le processusclient, lappel de service est converti en une requte SOAP qui est ensuite enveloppdans une HTTP.1.4.3.2 Messages SOAP du Cot ServeurCest lgrement plus compliqu car il requiert un processus listener correspon-dantau processus serveur en attente de connexion cliente. Le listener est souventimplment travers dun servlet qui sexcute et qui a comme tache lextractiondu message XML-SOPA partir de la requte HTTP, de le d-srialiser cest dire de sparer le nom de la mthode et les paramtres fournis puis invoquer lamthode du service en consquence. Le rsultat de la mthode est alors srialis,encod HTTP et renvoy au demandeur.La figure suivante (figure 1.4.2) montre le fonctionnement du protocole SOAP[Michel, 2002].Figure 1.4.2 : Description du fonctionnement du protocole SOAP12 28. 1.4 Technologies des Web Services1.4.3.3 Caratristiques du protocole SOAP SOAP repose sur le langage XML. Cest un protocole peu restrictif, qui laisse aux composants desWeb Services lesoin de dfinir comment ils formateront le contenu du message [Dominique, 2008]. Le transport et le systme dopration sont indpendants, car il est construiten utilisant le protocole http et le langage de balisage XML [Suda, 2003]. SOAP est fondamentalement un modle de communication One-way, qui as-surequun message cohrent est transfr de lexpditeur au destinataire, ycompris potentiellement les noeuds intermdiaires, qui peuvent traiter unepartie, ou ajouter lunit de message.1.4.3.4 Structure dun message SOAPSOAP dfinit un format pour lenvoi des messages. Les messages SOAP sontstructur en un document XML et comporte 2 lments obligatoires : Une en-veloppeet un corps (une entte facultative).La structure dun message SOAP estla suivante [Rossberg, 2006] : SOAP Enveloppe : Cest llment racine du message SOAP, elle dfinit lecontexte du message, son destinataire et son contenu. Elle contient un lmentden-tte optionnel. SOAP Header : Cest un bloc optionnel qui contient des informations den-ttessur le message. SOAP Header donne des directives au destinataire, con-cernantle traitement du message. Ces directives concernent gnralement lascurit : dclaration dassertions, dclaration de signature, dclaration dechiffrement, information sur une cl cryptographique,. . . etc. SOAP Body : Cest llment contenant les donnes utiles transmettre.Chacune de ses entres contient des informations applicatives que le desti-natairedoit traiter. Llment Body est galement utilis pour transmettreun message derreur dans le cas o une erreur survient. Il doit absolumenttre prsent dune manire unique dans chaque message, et tre contenu dansle bloc SOAP enveloppe. Des attachements optionnels, tel que le SOAP Fault : Ce bloc est la seulestructure dfinie par SOAP dans le bloc Body, et sa prsence nest pas obli-gatoire.Il sert reporter des erreurs lors du traitement du message, ou lorsde son transport. Il ne peut apparatre quune seul fois par message.La figure suivante (figure 1.4.3) montre bien la structure du message SOAP [Rossberg, 2006] :13 29. Chapitre 1 Les web services SOAPFigure 1.4.3 : Structure du message SOAPVoici un exemple dun message SOAP pour une mthode de login ou les paramtressont le nom dutilsateur et le mot de passe.Figure 1.4.4 : Exemple dun message SOAP14 30. 1.5 Fonctionnement des web services1.4.4 UDDI (Universal Description Discovery and Integration) UDDI est la spcification rgissant linformation relative la publi-cation,la dcouverte et lutilisation dun Web Service. En dautre termeUDDI dtermine comment nous devons prsenter lentreprise et le WebService quelle offre la communaut afin de permettre cette derniredy avoir accs. Do le concept UDDI est vu en deux aspects : len-registrementde linformation, et la dcouverte de cette information.En effet, UDDI est un annuaire (registre) web sous un format XML. [Michel, 2002].UDDI est une spcification dannuaire qui propose denregistrer et de rechercherdes fichiers de description desWeb Services, correspondant aux attentes dun client[Chollet, 2009].Il se comporte comme le DNS, la diffrence quil rsout le nom de service aulieu des noms de domaines. Il nest pas affili avec le W3C, mais il a t soumis lorganisme de normalisation OASIS pour lexaminer. Comme le registre UDDIest un Web Service, il gagne tous les avantages du langage XML et du protocoleSOAP [Suda, 2003].Il est comme un annuaire lectronique qui fournit une classification, et un cata-loguedes Web Services, les fournisseurs de services peuvent enregistrer leurs ser-vicesdans le serveur UDDI, lutilisateur dun Web Service peut rechercher un WebService spcifique en utilisant le registre UDDI [Radhamani, 2007].UDDI est un standard spcifi par OASIS (Organization for the Advancement ofStructured Information Standards), pour la publication et la dcouverte desweb services. UDDI est un annuaire de services bas sur XML qui permetdautomatiser les communications entre les fournisseurs du service web etclients.1.5 Fonctionnement des web servicesLes web services sont des technologies qui permettent des applications de dia-loguervia internet, par lchange des messages fonds sur des standards web. Troisacteurs principaux figurent dans lutilisation dun service web [Kreger, 2001] : Le fournisseur du service (provider). Le demandeur de service (requester). Lannuaire de service permettant la dcouverte du service web et son four-nisseur(registry).Le schma suivant (figure 1.5.1) rsume lutilisation dun service web et ses acteursprincipaux :15 31. Chapitre 1 Les web services SOAPFigure 1.5.1 : Les principaux acteurs dans un web service16 32. 1.6 Avantages dutilisation des web services1.6 Avantages dutilisation des web servicesLes web services sont, de nos jours, utiliss grand chelle et ce grce auxavantages quelles offrent :[Alkamari, 2008] Les web services rduisent le temps de mise en march des services offerts parles diverses entreprises. Les web services utilisent des normes et protocoles ouverts (SOAP, XML,HTTP). Les protocoles et les formats de donnes sont offerts, le plus possible, enformat texte pour que la comprhension du fonctionnement des changes soitplus intuitive. Grce au protocole HTTP, les web services peuvent fonctionner malgr lespare-feu sans pour autant ncessiter des changements sur les critres de fil-trage. Grce aux web services, les cots sont rduits par lautomatisation interne etexterne des processus commerciaux.1.7 Inconvnients dutilisation des web servicesMalgr les avantages offerts par les web services, elles ont plusieurs inconvnients,qui sont en premier lieu des problmes de scurit, tels que : Leurs vulnrabilits facilitant le contournement des mesures de scurit. Labsence des mcanismes didentification, dauthentification et de chiffragedans la technologie SOAP, la technologie principale des web services. Les problmes de fiabilit : Il est difficile de sassurer de la fiabilit dunservice car on ne peut garantir, que ses fournisseurs ainsi que les personnesqui linvoquent travaillent dune faon fiable. Les problmes de disponibilit : Les web services peuvent bien satisfaire unou plusieurs besoins du client [Alkamari, 2008].1.8 ConclusionLa technologie des web services, est lune des technologies les plus connues et lesplus utilises. Elle est base sur le standard XML, permet de rendre disponiblesdans un annuaire UDDI des services dont les fonctionnalits sont dcrites dansdes fichiers WSDL. Le protocole SOAP permet aux consommateurs dinterrogerlannuaire et dinvoquer le service facilement travers un rseau.Dans le chapitre suivant nous allons voir en dtail, les attaques sur les webservices ; en gnral ; et les attaques par injection en particulier.17 33. Chapitre 2Attaques par injection sur les webservices2.1 IntroductionUne plateforme base sur les web services est confronte plusieurs types dat-taqueset menaces dus des failles dans la communication (message SOAP) entreles web services. Ces attaques, souvent appeles XML-Based Attacks (les at-taque base XML), exploitent les vulnrabilits de XML tel que : XPath injection,XML-based denial of service (XDoS), XML injection,...etc.Dans ce chapitre nous allons prsent, les attaques par injection en gnral, Ilsagit bien des attaques XPath, XML, SQL et linjection de commandes systmes,on verra par la suite chaque attaque dans les web services, pour cel nous avonsutilis loutil SOAPUI pour tester ses injections sur des web service rels.2.2 Les vulnrabilits dans les Web ServicesLes Web services sont devenus une partie importante du Web, grce aux avan-tagesquelles offrent, tel que lutilisation des protocoles standards comme XML,SOAP et HTTP. Toutefois, ces caractristiques les rendent vulnrables de nom-breusesmenaces de scurit.En gnral, le processus dattaque sur une application consiste dcouvrir, toutdabord, ses faiblesses et par la suite essayer dy pntrer ;le processus reste lemme pour les web services.Les pirates aujourdhui dcouvrent de nouvelles techniques dattaques, desniveaux de donnes XML/SOAP. Entre autres, un attaquant peut nuire lascurit, et pntrer dans les systmes, en sappuyant sur la structure des mes-19 34. Chapitre 2 Attaques par injection sur les web servicessages SOAP pour dvelopper un modle dattaque pour parvenir ses objectifs[Yaron, 2007].Nous allons voir dans ce qui suit les principales vulnrabilits SOAP/XML.2.3 Attaques base XML sur les web servicesNous avons vu dans le paragraphe prcdent que les web services sont devenusde plus en plus vulnrable. Cette vulnrabilit est due en gnral la maniredchange de donnes entre les web services par le protocole SOAP.Lchange de donnes entre web services se fait par le biais du protocole SOAPqui est un protocole de type requte/rponse, et un mcanisme dchange de don-nesXML travers un protocole de communication http. Cependant SOAP nedfinit aucun mcanisme de scurit, ce qui fait que les messages SOAP sont vul-nrables tre capturs et modifis par un attaquant. Un autre point de moinscontre SOAP; cest que la plupart des problmes ne concernent pas seulement leprotocole lui-mme mais dautres protocoles utiliss comme http et XML. Nousallons voir quelques problmes et attaques sur XML et SOAP; dites les attaquesbases sur XML XML-based Attacks .Il existe de grandes familles des attaques sur XML, comme le montre la figuresuivante (figure 2.3.1) :Figure 2.3.1 : Attaques base XML20 35. 2.4 Les attaques de dni de services XDOS2.4 Les attaques de dni de services XDOSUne attaque de type dni de service en anglais Denial Of Service abrge Dos est un type dattaque visant rendre les services ou les ressources duneorganisation indisponibles pendant un temps indtermin. Cette menace concerneen gnral le fournisseur de service. Il sagit la plupart du temps dattaques lencontre des serveurs dune entreprise, afin quils ne puissent tre utiliss et con-sults.Le principe de lattaque DOS consiste saturer le fournisseur de service, en luienvoyant des messages XML non valides ; qui peuvent engendrer une rcursivitinfinie en les analysant par le fournisseur [Wells, 2007].Les attaques par dni de service sont un flau pouvant toucher tout serveurdentreprise, ou tout particulier reli internet. Le but dune telle attaque nestpas de rcuprer ou daltrer des donnes, mais de nuire la rputation de socitsayant une prsence sur internet, et ventuellement de nuire leur fonctionnementsi leur activit repose sur un systme dinformation [CCM, 2014a].Cette classe regroupe les attaques suivantes : Attaque oversize / rcursive :Il sagit dune attaque dpuisement desressources. Cette attaque vise liminer la disponibilit dun service en puisantles ressources du systme du service, comme la mmoire, les ressources detraitement, ou la bande passante du rseau. Une faon classique pour ef-fectuerune telle attaque est dinterroger un service en utilisant un messageSOAP de grande taille [Jensen, 2009]. Attaque dite XML bombe : Une bombe XML est un message composet envoy avec lintention de la surcharge dun analyseur XML (gnralementde serveur HTTP). Les Bombes XML exploitent le fait que XML permet dedfinir des entits. Par exemple, dfinir lentit e1 tre dfinie par 20 entitse2, qui son tour est dfinie de 20 entit e3. Si nous continuons dans lemme schma jusqu e8, lanalyseur XML va analyser une occurrence dee1 et 1 280 000 000 entits e8 prenant 5 Gio de mmoire. Le but ultime decette attaque est de consommer les ressources de lanalyseur XML find decauser un dni de service [SoapUI, 2011]. Attaque par rfrence externe : Au lieu de dfinir des chanes de remplace-mentdentit en tant que constantes, il est galement possible de les dfinirde sorte que leurs valeurs sont extraites des URI externes par ex. !ENTITYstockprice SYSTEM http ://www.contoso.com/currentstockprice.ashx. Lidela plus simple pour cette attaques est denvoyer le parser XML une ressourceexterne qui ne retourne jamais, lenvoyer par ex. une boucle infinie [Bryan, 2009]. Attaque par envoie massif de messages SOAP : Le but de cette attaqueest de surcharger le Web Service par lenvoi des messages SOAP rptitifs. Le21 36. Chapitre 2 Attaques par injection sur les web servicesmessage SOAP lui-mme est valide, mais le serveur XML ne peut pas traitertous ces messages envoys en une priode courte, et cela peut provoquer lanon rception des messages SOAP des non attaquants par le Web Service[Radhamani, 2007] .2.5 Les attaques par injectionLes attaques par injections reprsentent les attaques prdominantes contre lesweb services aujourdhui. Ce type dattaque repose sur le problme quil nexisteaucune sparation stricte entre les instructions dun programme et les donnesquy saisit un utilisateur [Lackey, ]. Lorsque les donnes passent sans tre validescorrectement, un utilisateur malveillant peut injecter du code malicieux, dans lebut dextraire ou de modifier des donnes confidentielles.Pour raliser une attaque par injection, il faut russir placer, dans des saisiesclassiques, des donnes interprtes comme des instructions. Le succs de lopra-tionrepose sur trois lments [Lackey, ] : Identifier la technologie sur laquelle repose lapplication web. Les attaques parinjection dpendent beaucoup du langage de programmation ou du matrielimpliqu. tablir la liste de toutes les saisies utilisateur possibles. Dans certains cas,elles seront videntes. Trouver la saisie utilisateur vulnrable.Cette classe dattaques comprend les attaques suivantes ; les plus rpandues ; : Les injections XML Les injections XPath Les inejctions SQL Les injections de commandes systmesOn peut schmatiser la taxonomie des attaques par inejction par la figuresuivante (figure 2.5.1) :22 37. 2.5 Les attaques par injectionFigure 2.5.1 : Les attaques par injection2.5.1 Injection XMLLes XML injections sont utiliss pour manipuler le contenu XML. Le but decette attaque est denvoyer au serveur des donnes en rentrant par exemple, desinformations didentification contenant des caractres spciaux, qui pourrait nepas tre prisent en charge par lapplication.Voici les diffrentes formes des injections XML :2.5.1.1 Injection XML simplePrenons le fichier XML suivant des utilisateurs pour une fonction dauthentifi-cation(login).Le fichier contient lentre suivante user avec nom dutilisateur username :Alice et mot de passe password : secret :23 38. Chapitre 2 Attaques par injection sur les web servicesFichier XML des utilisateurs et leurs mots de passe?xml version=1.0 encoding=ISO-8859-1 ?usersuserusernameAlice/usernamepasswordSecret/password/user/usersAfin dexploiter cette vulnrabilit, on fait entrer des donnes composes demtadonnes comme ou . La requte peut devenir alors :Fichier XML des utilisateurs vulnrable ?xml version=1.0 encoding=ISO-8859-1 ?usersuserusernameAlice/usernamepasswordSecret/password/user/usersOn a obtenu donc un code XML Malveillant. Le fait dinsrer ce caractre bloque les analyseurs des fichiers XML (XML Parser) danalyser ce fichierla prochaine fois en indiquant une erreur lors la lecture (un dbut dune baliseouvrante ou fermante).Nota que la plupart des Parsers XML ont balays ce probmme en encodantles caractres spciaux ,, nanmoins, il existe toujours des XML StreamReader qui sont toujours vulnrable cette faille.2.5.1.2 Injection de code XML MalformCe type dinjection est une amlioration du type prcdent, elle consiste in-jecterdes balises XML mal formes.Prenons le fichier XML suivant des utilisateurs pour une fonction dauthentifi-cation(login).Le fichier contient lentre suivante user avec nom dutilisateur username :Alice et mot de passe password : secret :24 39. 2.5 Les attaques par injectionFichier XML des utilisateurs et leurs mots de passe?xml version=1.0 encoding=ISO-8859-1 ?usersuserusernameAlice/usernamepasswordSecret/password/user/usersAfin dexploiter cette vulnrabilit, on va injecter les balises mal formes :xmljoke/xml/jokeLa requte peut devenir alors :Fichier XML des utilisateurs vulnrable ?xml version=1.0 encoding=ISO-8859-1 ?usersuserusernameAlicexmljoke/xml/joke/usernamepasswordSecret/password/user/usersOn a obtenu donc un code XML Malveillant. Le fait dinsrer les balises malformes xmljoke/xml/joke bloque, comme dans le type vu prcdem-ment; les analyseurs des fichiers XML (XML Parser) danalyser ce fichier la prochainefois en indiquant une erreur lors la lecture (error parsing xml).2.5.1.3 Injection de balises XML automatiquesIl sagit du fait de rajouter une information que lon met soi-mme dans larequte en spcifiant par exemple manuellement son ID, alors quen temps normalil est gnr automatiquement [Stamos, 2005].Lutilisateur fait entrer les donnes de la manire suivante :Username : Charly/usernameID0/IDusernameUne fois insre le fichier XML sera de la forme :Injection de balises XML?xml version=1.0 encoding=ISO-8859-1 ?usersuserusernameCharly/usernameID0/IDusernameAlice/username/user/users25 40. Chapitre 2 Attaques par injection sur les web servicesCharly aura maintenant un ID de 0 qui pourrait par exemple reprsenter lesadministrateurs. On arrivait donc ajouter un utilisateur au groupe des adminis-trateurs,qui devrait normalement tre secrt.2.5.1.4 Injection XML PersistanteCest une simple attaque XML, la diffrence rside quelle est stocke sur le provider et excute par le serveur lorsque la requte est servie [Renaud, 2010].Soit le fichier XML suivant :Fichier XML des utilisateurs et leurs mots de passe?xml version=1.0 encoding=ISO-8859-1 ?usersuserusernameAlice/usernamepasswordSecret/[email protected]/emailadresse Bechar /adressezip 08000 /zip/user/usersEn utilisant la balisedinclusion xi pour inclure le fichier /etc/passwd desmots de passe des utilisateurs. Le fichier sera alors :Fichier XML des utilisateurs et leurs mots de passe?xml version=1.0 encoding=ISO-8859-1 ?usersuserusernameAlice/usernamepasswordxi :include href=file :///etc/passwd parse=text/ /[email protected]/emailadresse Bechar /adressezip 08000 /zip/user/usersAprs lanalyse (parsing) du fichier XML, on aura le rsultat suivant (tableau2.1) :26 41. 2.5 Les attaques par injectionBalise Valeur retourneusername zsmahiroot :x :0 :0 :root :/root :/bin/bashpassword daemon :x :1 :1 :daemon :/usr/sbin :/bin/shbin :x :2 :2 :bin :/bin :/bin/shemail [email protected] Becharzip 08000Table 2.1 : Rsultat danalyse du fichier XMLOn a pu donc obtenir le contenu du fichier des mots de passe sous Linux/etc/passwd, maintenant avec une simple attaque de type force brute en util-isantloutil John The Ripper par exemple , on aura tous les mots passe desutilisateurs du serveurs hbergeant ce fichier XML et le web service, y compris lesuper-utilisateur root.2.5.1.5 Injection XML dans les messages SOAPLinjection XML est prsente dans les web services qui utilisent un fichier XMLpour sauvegarder les donnes, ceci est un exemple (figure 2.5.2) illustrant un exploitvia un message SOAP :27 42. Chapitre 2 Attaques par injection sur les web servicesFigure 2.5.2 : Injection XML dans un message SOAPA travers cet exemple ; nous avons essay dinjecter un code XML mal formqui est : xmljoke/xml/joke. La rponse ainsi sera la suivante (figure2.5.3) :Figure 2.5.3 : Rponse du serveur au message SOAP envoy28 43. 2.5 Les attaques par injectionLanalysur a gnr une erreur lors de lanalyse (parsing) due la balise malforme injecte xmljoke/xml/joke.2.5.2 Injection XPathLes documents XML sont devenus de plus en plus compliqus et trop chargs,cela a conduit dfinir un langage dinterrogation des fichiers XML. Le langagequi a t cr alors est XPath.XPath est un langage de requtes spcialis, qui joue un rle comparable celuide SQL dans les contextes des bases de donnes. Mais malgr sa simplicit il poseaussi des problmes dinjection (voir Annexe A).Lorsquon choisit de stocker des donnes sensibles en XML plutt que dansune base de donnes SQL, les attaquants peuvent sappuyer sur une injection deXPath pour contourner une authentification, comme pour inscrire des donnes surle systme distant [Lackey, ].2.5.2.1 Injection XPath SimpleLe document XML suivant users.xml renferme les numros didentifiants, nomsdutilisateurs et mots de passe employs par un service web [OWASP, 2013b] :Fichier XML dauthentification des utilisateurs?xml version=1.0 encoding=ISO-8859-1 ?usersuserid1/idusernameAdmin/usernamepassword xpathr00lz /password/useruserid2/idusernametestuser/usernamepasswordtest123/password/user/usersUn simple programme peut charger le document XML et recherche le numro di-dentifiantassoci au nom dutilisateur et au mot de passe proposs. En supposantque ces valeurs soient respectivement admin et xpathr00lz , la requte XPath seprsenterait comme suit ://users[username/text()=admin and password/text()=xpathr00lz]/id/ text()29 44. Chapitre 2 Attaques par injection sur les web servicesOn remarquera que cette saisie dutilisateur nest pas chappe dans le codesource de sorte quun attaquant pourra y insrer toute donne ou instruction XPathsouhaite. En choisissant pour mot de passe or 1=1, la requte deviendraitainsi ://users[username/text()=admin ]/id/text() and password/text()= or 1=1Cette instruction renverra le numro correspondant lidentifiant admin et quien outre, soit dispose dun mot de passe vide (cas de figure hautement improbable),soit vrifie un gale un ce qui est toujours vrifi. Par consquent, linjection de or 1=1 renvoie lID de ladministrateur sans que lattaquant nait besoin denconnatre le mot de passe.Signalons que XPath est un sous-ensemble dun langage XML de requtes pluslarge, appel XQuery. Comme XPath et SQL, ce dernier souffre de problmesdinjection comparables.Voici un exemple dun script perl vulnrable cette attaque (Algoritme 2.1) :Algorithme 2.1 Script Perl vulnrable linjection XPath#!/usr/bin/perluse XML : :XPath ;use XML : :XPath : :XMLParser ;my $login = $ARGV[0] ;my $pass = $ARGV[1] ;my $userfile = users.xml ;my $expr = //user[username=$login and password=$pass] ;my $xp = XML : :XPath-new(filename = $userfile) ;my $nodeset = $xp-find($expr) ;if($nodeset-size) { print Authentication successfuln ; }else { print Authentication failedn ; }Ce script lis le nom dutilisateur et le mot de passe donns comme paramtres(ARGV[0] et ARGV[1]) et intrroge les fichier XML via une requte XPath, lavulnrabilit rside dans le fait quil est possbile dinjecter la chane vulnrable or 1 = 1 aprs le mot de passe, donc lexpression $expr va contenir la valeur ://user[username=$login and password=$pass or 1 = 1]le code sera excut et le rsultat sera vrai toujours ; cela permet de rcuprerles utilisateurs enregistrs comme dcrit prcdemment.30 45. 2.5 Les attaques par injection2.5.2.2 Dumping dun Document XMLLe Dumping se fait laide de loprateur| [Renaud, 2010].Cet oprateur est : Loprateur identique UNION mais plus flexible. Effectue des oprations squentielles. Exploite labsence de restrictions daccs aux parties dun document.2.5.2.2.1 Utilisation dans une injection XPath La requte de description dun attribut via XPath : //item[itemID=$id]/description/text() Injection : $itemID = whatever] | /* | //item[itemID=whatever. Expression devient alors : //item[itemID=whatever] | /* | //item[itemID=whatever]/description/text() Cette technique ncessite une connaissance pralable de lexpression.2.5.2.3 Blind XPath InjectionLe Blind XPath Injection a t introduite pour la 1re fois en 2004 par AmitKLEIN [Klein, 2005], elle permet de rcuprer lintgralit du document XML,sans connaissance de lexpression XPath.2.5.2.3.1 Mode opratoire1. Trouver une injection standard2. Remplacer le prdicat 1=1 par une expression E dont le rsultat est binaire3. E est utilis pour valuer : Chaque bit du nom ou de la valeur dun lment Le nombre dlments de chaque type (lment, texte, PI etc.)2.5.2.3.2 Contraintes Lent (-la Brute Force) Dmontr mais pas dimplmentation disponible2.5.2.4 Injection XQueryXPath est un sous-ensemble dun langage de requte sous XML plus large, quiest XQuery, et que ce dernier lui aussi souffre dun grand problme de scurit etplus prcisment problme des injections [WEBAPPSEC, 2010].Linjection XQuery est une variante de la fameuse attaque injection SQL :31 46. Chapitre 2 Attaques par injection sur les web services Elle utilise les mauvaises donnes passes une requte XQuery pour traverseset excuter les routines XQuery. Elle peut tre utilise pour lister les lments dun environnement victime,injecter des commandes en local ou excuter des commander distance. Un attaquant peut injecter des requtes XQuery dans un message SOAP pourmanipuler un document XML au niveau du fournisseur du service web.Lexemple suivant montre comment interroger le fichier users.xml afin de rcuprerla liste des utilisateurs.doc(users.xml)//user[name=*]Il existe plusieurs formes des injections XQuery quon ne peut pas listes toutes,cependant elles sont toutes dues la non vrification des champs de saisie avantlenvoi de la requte.2.5.2.5 Injection XPath dans les messages SOAPLinjection XPath est prsente dans les web services qui utilisent un fichier XMLpour sauvegarder les donnes, ceci est un exemple (figure 2.5.4) illustrant un exploitvia un message SOAP; o on a inject la chane vulnrable or 1 = 1 or a =a :Figure 2.5.4 : Injection XPath dans un message SOAP32 47. 2.5 Les attaques par injectionLe web service recevra ainsi une requte XPath malveillante de lister tous lesutilisateurs et leurs mots de passe, la rponse est la suivante (figure 2.5.5) :Figure 2.5.5 : Rponse du service web : lister tous les (username,password)2.5.3 Injection SQLLes injections SQL consistent insrer ou injecter du code SQL via des don-nesentres par lutilisateur lapplication. un exploit russi dune injectionSQL peut lire donnes sensibles depuis la base de donnes, modifier ces donnes(Insertion/Mise--jour/Suppresion), xecuter des oprations dadministration de labase de donnes (ex. Arrter le SGBD), rcuprer le contenu dun fichier prsentdans le systme de fichiers du SGBD, ou dans certains cas xecute des commandesdu systme dexploitation [OWASP, 2014b].Les injections SQL sont un type dattaques par injection, dont cest le code SQLqui est inject dans le champ de saisie fain dxecuter une commande SQL biendfinie.Il existe plusieurs formes dinjections SQL, qui sont :2.5.3.1 Manipulation du SQLCest la forme la plus commune, lattaquant essaye de modifier le code SQLexistant en ajoutant des lments la clause WHERE ou tendre la requte SQLpar des oprations comme UNION, MINUS ou INTERSECT. Il existe bienvidemment dautres formats mais ceux sont les plus rpandus et les plus frquents[Scambray, 2006].Exemple 01La manipulation de SQL la plus classique est durant une fonction dauthentifi-cation login . Une application web ou un service web vrifie lauthentificationde lutilisateur en xecutant la requtes suivante et vrifiant si des lignes sontretournes ou pas.Requte SQL pour authentificationSELECT * FROM usersWHERE username = zsmahi and password = mypassword33 48. Chapitre 2 Attaques par injection sur les web servicesLattaquant essayera alors de manipuler le code SQL pour lxecuter de cettefaonRequte SQL pour authentificationSELECT * FROM usersWHERE username = zsmahi and password = mypassword or a = aLa clause WHERE est vraie pour chaque ligne et le pirate obtient laccs total lapplication.Exemple 02Loprateur UNION est souvent utilis dans les injections SQL. Le but est demanipuler SQO afin de retourner des enregistrement dune autre table. Un exempledune telle requete :Requte SQL typiqueSELECT product_name FROM all_productsWHERE product_name like %Chairs%un pirate tentera de manipuler SQL afin dxecuter cette requte :Requte SQL avec injection UNIONSELECT product_name FROM all_productsWHERE product_name like %Chairs%UNIONSELECT username FROM dba_usersWHERE username like %Cette requte retourne non seulement les noms des produits mais aussi tous lesnoms dutilisateurs.2.5.3.2 Injection de CodeLinjection de code essaye dajouter du code SQL ou bien des commandes au codecode SQL existant. Ce type dattaques est utilis frquement utilis contre le SGBDMicrosoft SQL Server et rarement avec Oracle. Linstruction EXECUTE dansSQL Server est une cible frquente des attaques par injection SQL [Kost, 2004].Requte SQL avec injection UNIONSELECT * FROM usersWHERE username = zsmahi ans password = mypassword ; DELETEFROM users WHERE username =admin ;Nota que cette faille nest disponible que dans un certains nombre de langagesde programmation et de API qui autorisent lxecution de plusieures requtes SQL la fois.34 49. 2.5 Les attaques par injection2.5.3.3 Injection des appels de fonctionsLinjection des appels de fonctions est linsertion des fonctions de la base de don-nesOracle ou des fonctions spciales dans un code SQL vulnrable [Kost, 2004].Ces appels sont utiliss pour faire des appels systmes ou bien pour manipuler lesdonnes de la base.En utilisant les standards des fonctions Oracle, lattaquant peut envoyer desinformations depuis la base de donnes jusqu un Serveur (ou PC) distant ouxecuter dautres attaques depuis le serveur de la base de donnes. Plusieurs pa-quetagesdes base de donnes Oracle peuvent tre exploit par un attaquant. Cespaquetages peuvent inclure des fonctions pour changer les mots de passes ou f-fectuerdautres transactions sensibles.Le problme avec ce type dinjections est que nimporte quelle requte SQLgnre automatiquement, mme la requte la plus simple peut tre exploite.Les dveloppeurs dapplications utilisent des fois des fonctions de bases de don-nesau lieu du native code (ex. Java) pour effectuer des tches courantes. Unexemple trs courant et qui vient tout de suite lesprit cest bien la fonctionTRANSLATE qui na pas dquivalant en Java, donc le programmeur dcidedutiliser les requtes SQL la place.Lexemple suivant montre la fonction translate et comment on peut lutiliserpour effecuter un exploit dinjection SQL :Requte SQL TRANSLATESELECT TRANSLATE(user input,0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ,0123456789)FROM dual ;Cette requte nest pas vulnrable aus types vues prcdemment mais elle estfacilement manipule via une injection dappel de fonction, on peut la modifierpour xecuter le code suivant :Injection dAppel de fonction dans la requte TRANSLATESELECT TRANSLATE(|| UTL_HTTP.REQUEST(http ://192.168.1.1/)|| ,0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ,0123456789)FROM dual ;La nouvelle requte SQL va intrroger une page depuis un serveur web. Lat-taquantpeut manipuler la chane et lURL pour inclure autres fonctions finde rechercher des informations utiles depuis le serveur de la base de donnes etlenvoyer au serveur web via lURL. Cette faille peut tre utilise pour attaquerdautres serveurs et web services dans le rseau interne.35 50. Chapitre 2 Attaques par injection sur les web servicesDes fonctions particulires et les fonctions de paquetages particuliers peuventaussi tre xecutes. Un exemple est une application avec une fonction ADDUSER(ajouter utilisateur) dans le paquetage MYAPPADMIN. Le dveloppeur a mar-qula fonction avec PRAGMA TRANSACTION une fonctionnalit des bases dedonnes Oracle qui permet lapplication dcrire la base de donnes mme avecune requte SQL.Injection dAppel de fonctionSELECT TRANSLATE(|| myappadmin.adduser(admin,newpass)|| ,0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ,0123456789)FROM dual ;Executer la requte prcdente permet mme dajouter un utilisateur admin avec le mot de passe newpass .2.5.3.4 Blind SQL InjectionLe Blind SQL Inejction est un type dinjections SQL, qui intrroge la base dedonnes travers des requtes vrai/faux (true/false) et dtrmine la rponses basesur les rponses dapplication. Cette attaque figure souvent lorsquune applicationest configure pour afficher des messages derreurs gnriques et nindique pas quilya une vulnrabilit aux injections SQL [OWASP, 2013a].Quand un attaquant exploite une injection SQL, des fois le service web ; oulapplication web en gnral ; affiche des messages derreurs indiquant une erreurdans la syntaxe SQL. Le Blind SQL Injection est similaire linjection SQL simple ;la diffrence rside dans la manire que les donnes sont rcupres depuis la basede donnes.Une base de donnes qui naffiche pas les donnes dans une rponse (messageSOAP, page web, API ...etc.) force les pirates voler les donnes en interrogeantla base par une srie de questions vrai/faux, ceci met lexploit plus difficile maispas impossible.Il existe plusieurs formes de cette attaque,2.5.3.4.1 Blind bas sur le contenu (Content-Based)lURL http ://newspaper.com/items.php ?id=2 envoie la requte suivante :SELECT title, description, body FROM items WHERE ID = 2Le pirate essayera dinjecter une requte qui retourne false (faux) : http ://newspaper.com/items.php ?id=2 and 1=2 36 51. 2.5 Les attaques par injectionMaintenat la requte est :SELECT title, description, body FROM items WHERE ID = 2 and 1=2Si lapplication est vulnrable aux injections SQL, alors il est probables quellene fait retourner rien. Pour sassurer le pirate tente dinjection une requte quiretourne true : http ://newspaper.com/items.php ?id=2 and 1=1 Si le contenu de la page qui retourne true est diffrent de celui de false alorslattaquant est capable de distinguer quand la requt fait retourner vrai ou faux.Une fois vrifie, les seuls limitations sont les privilges faites par ladministrateurde la base de donne, la syntaxe SQL et limagination et le savoir-faire du pirate.2.5.3.4.2 Blind bas sur le temps dattente (Time-Based)Elle est base sur les appels dattente de chaque SGBD pour indiquer lxecutionavec succs de la requte. Lattaquant numre chaque lettre de la rponse dsireen suivant cette logique : Si la 1ere lettre du 1er nom de la base de donnes est A : pause de 10 sec. Si la 1ere lettre du 1er nom de la base de donnes est B : pause de 10 sec.,...etc.Pour effectuer ceci, on a recours certains fonctions de pause des SGBD :comme waitfor delay pour MS-SQL Server, by n seconds de MySQL, pg_sleep()de PostegreSQL ...etc.Le blind SQL nest pas, en gnral, facile exploiter mais en mme temps il estpossible de lexploiter, tout dpendera de lexprimentation du pirate.2.5.3.5 Injection SQL dans les messages SOAPLinjection SQL est prsente dans les web services. Lexemple (figure 2.5.4) suiv-antillustre comment lexploiter via un message SOAP : Voir figure suivante (figure2.5.6) o on a inject la chane vulnrable OR 1 = 1 :37 52. Chapitre 2 Attaques par injection sur les web servicesFigure 2.5.6 : Injection SQL dans un message SOAPLe web service recevra ainsi une requte SQL malveillante pour tout lister, larponse est la suivante (figure 2.5.7) :Figure 2.5.7 : Rponse SOAP linjection SQL38 53. 2.5 Les attaques par injection2.5.4 Injection de commandes OSLinjection de commandes du systme (OS) ou plus communement linjection decommande est un type dinjection ou lobjectif est dxecuter des commandes sur lamachine hte via une application vulnrable. Cette injection est possible lorsquuneapplication passe des donnes vulnrables entres par lutilisateur( cookies, en-ttesHTTP ...etc.) au shell du systme[Lackey, ]. Les commandes systmes envoyessont souvenet excutes avec les privilges de lapplication vulnrable. Linjectionde commande est due labsence ou linsuffisance de validation de donnes delinput [OWASP, 2014a].Ci-dessous un code en langage C qui est vulnrable cette injectionAlgorithme 2.2 Code C vulnrable linjection de commandes#include stdio.h#include unistd.hint main(int argc, char **argv){char cat[] = cat;char *command ;size_t commandLength ;commandLength = strlen(cat) + strlen(argv[1]) + 1 ;command = (char *) malloc(commandLength) ;strncpy(command, cat, commandLength) ;strncat(command, argv[1], (commandLength - strlen(cat)) ) ;system(command) ;return (0) ;}39 54. Chapitre 2 Attaques par injection sur les web servicesCe code ne fait rien dautre quimprimer le contenu dun fichier pass comme1er argument en utilisant la commande cat de UNIX. On lxecute comme suit :$ ./commandeCat fichier.txtLe rsultat est :Ceci est le contenu du fichier fichier.txt xecutons le mme programme cette fois-ci en remplaons le paramtre fichier.txtpar fichier.txt ; ls ; rappelons que la commande ls sert lister le contenu dunrpertoire.Le rsultat sera alors cette fois-ci (tableau 2.2) :RsulatCeci est le contenu du fichier fichier.txt fichier.txt ; unAutreFichier.txt ; unRepertoireTable 2.2 : Exemple dinjection de commandeLinjection de commande est prsente frquement dans les services web qui pro-posentdes services rseaux tel que le ping et le traceroute.2.5.4.1 Injection de commandes OS dans les messages SOAPLinjection de commandes est prsente dans les web services. Lexemple (figure2.5.8) suivant illustre comment lexploiter via un message SOAP dans un serviceweb qui propose des ping :Figure 2.5.8 : Injection Commandes dans un message SOAP40 55. 2.5 Les attaques par injectionOn a inject la chane ; cat /etc/passwd pour lister le fichier des mots depasse des utilisateurs du serveur hbergeant le web service. La rponse a t lasuivante (figure 2.5.9) ; on a pu effectu le ping et en plus on a list le fichierpasswd :Figure 2.5.9 : Injection Commandes dans un message SOAP41 56. Chapitre 2 Attaques par injection sur les web services2.6 ConclusionLes Web Services sont de plus en plus dploys sur lInternet en raison de leursprotocoles normaliss, et des techniques qui permettent lintgration efficace desapplications faiblement couples sur les rseaux. Toutefois, en raison de linterfaceouverte pour une architecture oriente services, les attaques contre les systmesaxs sur les Web Services sont plus compliques que les attaques classiques quipeuvent tre traites par des pare-feu traditionnels. Ainsi, il est ncessaire dintro-duirede nouveaux mcanismes de scurit pour protger les systmes axs sur lesWeb Services.Nous allons vois dans le chapitre suivant les principaux travaux qui ont t faitesafin de scuriser les web services contre les attaques par injection.42 57. Chapitre 3Approches de scurisation des webservices3.1 IntroductionNous avons vu prcdemment que les web services sont confronts un certainnombre dattaques qui visent les dtruire. Malheureusement ces attaques ne sontpas prises par les outils de protection, existants tel que les pare-feu.Pour assurer une protection effective et relle des web services, les pare-feuXML ont t introduits comme extension des pare-feu actuels et comme approchede scurisation des web services.On verra dans cette section cest quoi un pare-feu XML et quels sont les rechercheseffectues dans ce domaine ainsi les solutions proposes.3.2 Firewall XMLLes pare-feu XML (XML firewall en anglais) est une nouvelle technologie intro-duiteafin de scuriser les web services contre les attaques. Avant dintroduire lanotion dun pare-feu XML, nous rappelons la notion de pare-feu.3.2.1 Pare-feu (Firewall en anglais)Cest est un systme qui assure la protection dun ordinateur, ou un rseaudordinateurs des incursions provenant dun rseau internet. Il sagit dun systmede filtrage des paquets de donnes changes avec le rseau[Xu, 2008].Les pare-feux sont gnralement mis en oeuvre pour bloquer et restreindre cer-tainsaccs et implmenter les rgles de la politique de scurit [Cheswick, 2003].43 58. Chapitre 3 Approches de scurisation des web services3.2.2 Pare-feu XMLIl est particulirement appropri pour neutraliser les actes malveillants contreles Web Services. Il utilise les informations de scurit contenues dans chaquemessage chang, pour scuriser les diffrentes parties dun message SOAP chang[Ayachit, 2006].Ainsi ; Il est compatible aux diffrents protocoles de transport, et renforce les in-sertionsde scurit des messages de services, de port ou dopration [CCM, 2014b].Actuellement, on a la tendance dutiliser le terme XML Security Gateway pourles XML Firewall, car on attend de ces pare-feu un travail plus quun conventionnelpare-feu[Patterson, 2007].La figure suivante (figure 3.2.1) montre un systme bas sur les web servicesprotgs par un pare-feu XML[Xu, 2008] :Figure 3.2.1 : Systme bas sur les web services protg par un pare-feu XML3.3 Les approches de scurisation des web servicesAfin de scuriser un web service plusieurs travaux et recherches ont t effectuesproposant chacune une architecture dun systme de scurisation (XML Firewall).Nous allons dans cette section introduire les diffrentes approches et les mthodes.Avant dentammer les approches de scurit, rappelons la notion des expressionsrgulires et de la distance de Khi-2.3.3.1 Les expressions rguliresUne expression rgulire ou rationnelle est une chane de caractres (appelleparfois un motif ) qui dcrit un ensemble de chanes de caractres possibles selon44 59. 3.3 Les approches de scurisation des web servicesune syntaxe prcise. Les expressions rgulires sont issues des thories mathma-tiquesdes langages formels des annes 1940. Leur puissance dcrire des ensemblesrguliers explique quelles se retrouvent dans plusieurs domaines scientifiques dansles annes daprs-guerre et justifie leur adoption en informatique. Les expressionsrationnelles sont aujourdhui utilises par les informaticiens dans ldition et lecontrle de texte ainsi que dans la manipulation des langues formelles que sont leslangages de linformatique[Desgraupes, 2008].ExemplesVoici quelques exemples des expressions rgulires les plus utilises (tableau 3.1)[loribel, 2003] :caractres Signification. nimporte quel caractre(123.5 = 123.5, 12345...etc.)? le caractre prcdent ? est optionnel(12 ?34 = 1234, 134...etc.)* le caractre prcdent * peut tre rpt 0 ou plusieurs fois(12*34 = 134, 1234, 12234, 122234...etc)+ le caractre prcdent * peut tre rpt 1 ou plusieurs fois12+34 = 1234, 12334, 12222234...etc. mais ne trouvera pas 134$ le carcatre est la fin dune lignetoto$ = toute ligne finissant pas totoTable 3.1 : Exemples expressions rgulires3.3.2 Test du Khi-2 2Le test du Khi2 (khi deux ou khi carr) fournit une mthode pour dterminerla nature dune rpartition, qui peut tre continue ou discrte. Il est utilis dansdiffrents domaines tels que la comparaison des chantillons, Recherche de liaisonentre les donnes ou Recherche de linfluence dune donne autre que celle tudie[Zerrouk, 2011].Principe : Formuler H0 (la distribution observe nest pas diffrente de la distributionsuppose daprs la loi que lon souhaite tester). Rpartir les donnes en classes. Dterminer le nombre de degrs de libert partir du nombre de classes. Fixer un risque de se tromper (la valeur 5 % est souvent choisie par dfaut).45 60. Chapitre 3 Approches de scurisation des web services Calculer algbriquement la distance entre les ensembles dinformations com-parer. Dterminer Khi-2 thorique (dduire la distance critique laide dune tablede 2 ). Conclure si cette distance est suprieure la distance critique (on conclut quele rsultat nest pas d seulement aux fluctuations dchantillonnage).Une statistique de khi-2 entre une distribution observe et une distribution atten-duese calcule comme celui-l (Algorithme 3.4) :Algorithme 3.1 Distance de Khi-2D2(O,E)=PNi=1(OiEi)2EiDans cette formule D(O,E) est la distance Khi-2 2 entre une distributionobserve O et un rsultat attendue E ( souvent un dataset extrait partir dunephase dapprentissage) et N-1 est le degr de libert du test de 2.La distance D calcul et le degr de libert N-1(cas dun test dajustement) sontutiliss pour obtenir une valeur p de la table 2. La valeur p indique la probabilitde la distribution observe pour tre compatible avec la distribution attendue.La distance D est compare un seuil 2(,N-1) (( est gnralement pris 0.05(ou erreur 95%) , 2(,N-1) est le seuil de dcision pour une distribution 2avec un degr de libert de N-1.) Deux hypothses sont poses alors H0 et sonalternative H1 : H0 : D2(,N-1) H1 : D2(,N-1)H0= {les i chantillons sont issus dune seule population}Contre H1 = {les i chantillons sont issus de deux populations diffrentes}Procdure de lecture partir de La table Khi-2 On calcule dabord la distance de Khi-2 (formule Algorithme 1.4). On cherche cette valeur dans la table (Figure 3.3.1) pour un degr de libertprcis ( les lignes de la table). Une fois trouve (ou bien un voisinage de la valeur est trouv) on remonte la valeur trouv en colonne qui reprsente une valeur p de probabilit. la valeur p est compare au seuil dfini au pralable et on dcide dadmettreou de rejet lhypothse nulle H0.46 61. 3.3 Les approches de scurisation des web servicesFigure 3.3.1 : Table de Khi-247 62. Chapitre 3 Approches de scurisation des web services3.3.3 Les approches base de signaturesCes approches sont les plus anciennes et les plus basiques. Elles consistent rechercher dans les messages SOAP entrants les empreintes ou les signature dat-taquesconnues. Cette approches a t utilise dans les IDS (Intrusion DetectionSystem) et dans les antivirus.3.3.3.1 Avantages : Un firewall XML utilisant cette approche est facilement conu et dveloppeet maintenu par la suite. Il permet galement une classification relativement facile de la criticit desattaques signales.3.3.3.2 Inconvnients : Lincovnient majeur de cette approche est quelle est limite, un firewallXML utilisant cette approche est purement ractif, il ne peut dtcter que lesattaques dont il possde dj la signature, de ce fait, il ncessite des mises jour quotidiennes. Un autre inconvnient de cette approche est quelle est bonne que lest labase de signature, si les signatures sont errones ou incorrectement conues lesystmes est inefficace, cest pourquoi ces systmes sont souvent contournspar les pirates qui utilisent des techniques dvasion qui consistent camouflerles attaques utilises. Ces techniques de camouflage ont tendance faire varierles signatures des attaques qui ainsi ne sont par reconnues par le firewall XML.Les signatures sont souvent reprsentes par des formats compacts tel que les ex-pressionsrgulires. Ci-dessous (tableau 3.2) quelques expressions rgulires util-isesafin de bloquer quelques attaques par injection [Mookhey, 2004] :Inejction Expression rgulires , ## /(%27)|()|(--)|(%23)|(#)/ix or /w*((%27)|())((%6F)|o|(%4F))((%72)|r|(%52))/ix exec /exec(s|+)+(s|x)pw+/ixTable 3.2 : Signature de quelques attaques par inejction (cas injection SQL)3.3.4 Les approches probabilistesNous avons dfini prcdement ; la 1re approche utilise afin de scuriser lesweb services contre les attaques par injection (lapproche par signature), et ses48 63. 3.3 Les approches de scurisation des web servicesinsuffisances. Dans cette section nous prsentons une autre approche qui nestpas exacte comme lapproche par signature, vu quelle est base sur des modlesstatistiques ou probabilistes, mais en revanche elle balaye aux insuffisances delancienne approche ; tel que la dtection de nouvelles attaques ; et elle donne debons rsultats. Une approche probabiliste utilise des notions du data mining .Il existe plusieurs algorithmes probabilistes qui ont t proposs pour scuriserles web services bass tous sur le data mining, on va se limiter dans cette sectionaux approches utilisants la comparaison et la similarit entre chanes de caractrescomme critre de classification.3.3.4.1 Comparaison et calcul de similarit entre chanes de caractresLa comparaison entre chanes de caractres est une opration importante dansplusieurs disciplines (biologie molculaire, Recherche de lInformation R.I, cat-gorisationdes textes ...etc.). Aprs isolation et squenage dune chane de car-actres,qui peut consister de plusieurs centaines voir des milliers de caractresalphanumriques et symboles, les chercheurs essayent souvent de trouver une basede donnes de chanes de caractres connues -dans un certain domaine de recherche-afinde mettre la ressemblance par la suite. En faisant a, ils esprent que les r-sultatsprcdents aideront tirer des conclusions au sujet de leur nouveau volet ;dou est ne la thorie de comparaison de chanes de caractres [Lipton, 1985].Par la suite on verra, les diffrents algorithmes et distance utilises pour calculerla similarit entre deux chanes de caractres.3.3.4.1.1 Distance de LevenshteinLa distance de Levenshtein mesure le degr de similarit entre deux chanes decaractres. Elle est gale au nombre minimal de caractres quil faut supprimer,insrer ou remplacer pour passer dune chane lautre. Cest une distance au sensmathmatique du terme, donc en particulier cest un nombre positif ou nul, etdeux chanes sont identiques si et seulement si leur distance est nulle. On a aussides proprits de symtrie, et lingalit triangulaire de la gomtrie est ici aussivrifie. (Algorithme voir annexe B)[Nicolas, 2012].Exemple1. La distance de Levenshtein entre kitten and sitting est 3 :a) Substitution de k par s.b) Substitution de e par ic) Insertion de g la fin.2. La distance de Levenshtein entre rosettacode and raisethysword est 8.49 64. Chapitre 3 Approches de scurisation des web services3.3.4.1.2 LCS (Longest Common Subsequence) : La plus longue squenceCommuneLe problme de la plus longue squence commune est de trouver consiste trouver la plus longue squence commune toutes les squences dans un ensemblede squence (souvent deux). Notez quune squence est diffrente de la sous-chanepar le fait que les termes ne sont pas ncessairement conscutifs dans la chaneoriginale. Il sagit dun problme informatique classique utilis dans la comparaisonde fichiers tels que diff, et en bioinformatique. La complexit de cet algorithmeest O(nm).Voici lalgorithme (Algorihme 3.1) rcursif de la fonction LCS : On note LCS(XiYj)pour la plu