Upload
zakaria-smahi
View
307
Download
1
Embed Size (px)
Citation preview
SÉCURITÉ DES WEB SERVICES SOAP
SMAHI Zakaria
SOMMAIRE
Qu’est ce qu’un WEB Service
Web Services SOAP
Risques et Menaces
Réduction des risques
Conclusion
Questions
QU’EST CE QU’UN WEB SERVICE Programmes accessibles à distance, qui peuvent être déployés sur n’importe quelle plateforme.
Il s’agit d’une forme d’un intergicielle (middleware) qui s’appuie sur des standards bien définis.
Conçus pour supporter l’interaction entre des groupes hétérogènes au sein d'un réseau.
UN PEU D’HISTOIRE
1990 : DCE/RPC - Distributed Computing Environment.
1992 : CORBA - Common Object Request Broker Architecture.
1990-1993 : Microsoft’s DCOM - Distributed Component Object Model.
1995 : RMI – Monde Java.
Pour arriver enfin à une standardisation (toujours en cours) des protocoles, outils, langages et interfaces.
WSDL
JSON
…etc.
Web Services
ENVIRONNEMENT A WEB SERVICES TYPIQUE
SOURCE: Mastering Web Services Security www.wiley.com
WEB SERVICES SOAP Langages:
XML
UDDI
WSDL
XPath
Protocoles:
Transport : HTTP, HTTPS, SMTP, FTP, SSH…etc.
Message: Enveloppe SOAP
Sécurité:
WS-Security (Signature – chiffrement)
LES ACTEURS DU WEB SERVICE SOAP
LES ACTEURS DU WEB SERVICE SOAP - WSDL
LES ACTEURS DU WEB SERVICE SOAP – SOAP
Protocol header
SOAP envelope
SOAP headerSOAP header
SOAP body SOAP body
SOAP faultSOAP fault
Protocol de transport (ex : http)
Définit le document XML comme un message SOAP
Optionnelle : stockage des informations spécifique à la
transaction
Contenant des données à transporter
Gestion des erreurs
RAPPEL MODÈLE STRIDEType Exemple Contrôle de sécurité
Spoofing Accèder et/ou utiliser des informations d’authentification d’un autre utilisateur (username/password).
Authentification
Tampering Modifier les données persistantes d’une base de données ou altérer les données en échange entre deux utilisateurs dans un réseau ouvert.
Intégrité
Repudiation Effectuer des opérations illégales sur un système non capable à retracer les opération interdites
Non-répudiation
Information disclosure
Lire des données en transit. Confidentialité
Denial of Service rendre les services ou les ressources d’une organisation indisponibles pendant un temps indéterminé
Disponiblité
Elevation of Privilege
Avoir un accès non autorisé à un système ( administateur, root).
Authorisation
RISQUES ET MENACES
RISQUES ET MENACES
Threat1: Interception des messages (Informtion disclosure). Modification des messages (Tampering). Usurpation d’identité (Spoofing). Threat2: « XML-Based attacks » Attaque de l’application (SQL Injections, XDOS, …etc.).
XML-BASED ATTACKS
SOAP ne définit aucun mécanisme de sécurité. Le problème apparait avec la syntaxe dite pardonnable de XML. Il existe deux grandes familles d’attaques à base XML: Les attaques de déni de services XML. (XDOS) Les attaques par injection.
Attaques à base XML
XDOS
Oversize/Récursive
XML Bombe
Référence externe
Envoi massif de messages
SOAP
Injections
Injection SQL
Injection de commandes
OS
Injection XML
Injection XPath
INJECTION SQL DANS UN MESSAGE SOAP
OR 1 = 1 -- Injection SQL
BOMBE XML DANS UNE MESSAGE SOAP
<?xml version=”1.0” encoding=”UTF-8”?>
< ! DOCTYPE SOAP-ENV: Envelope [ < ! ELEMENT SOAP-ENV: Envelope ANY> < ! ATTLIST SOAP-ENV: Envelope entityReference CDATA #IMPLIED>< ! ENTITY x0 "foo">< ! ENTITY x1 "foofoo" >< ! ENTITY x2 "foofoofoofoo" > ... < ! ENTITY x98 "&x97;&x97;" >
< ! ENTITY x99 "&x98;&x98;" > ] ><soap:Envelope xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<keyword xmlns="urn:parasoft:ws:store">foo</keyword> </soap:Body></soap:Envelope>
< ! DOCTYPE SOAP-ENV: Envelope [ < ! ELEMENT SOAP-ENV: Envelope ANY> < ! ATTLIST SOAP-ENV: Envelope entityReference CDATA #IMPLIED>< ! ENTITY x0 "foo">< ! ENTITY x1 "foofoo" >< ! ENTITY x2 "foofoofoofoo" > ... < ! ENTITY x98 "&x97;&x97;" >
< ! ENTITY x99 "&x98;&x98;" > ] >
Bombe XML
RÉDUCTION DES RISQUES
Chiffrement du transport.
AuthN.
X509/PKI
Intégrité et confidentialité des messages.
Secure Coding.
XML Firewall ou XML Security Gateway.
RÉDUCTION DES RISQUES
Chiffrement du transport:
HTTPS
SSL/TLS Tunnel
SSH
…etc.
AuthN:
HTTP trust, HTTP Header
WS SAML Authentication token
Kerberos
…etc.
RÉDUCTION DES RISQUES X905/PKI:
SSL/TLS Mutual AuthN
…etc.
Intégrité et confidentialité des messages:
XML Signature
XML Encryption
Secure Coding:
Validation des input, et l’encodage des output
Anti-automatisation
Tester son web service avant de le publier par des outils de tests (SOAPui, WS-fuzzer, SQLmap …etc.)
XML FIREWALLS/XML SECURITY GATEWAYS Une nouvelle technologie introduite afin de sécuriser les web services contre les attaques.
Il est compatible aux différents protocoles de transport, et renforce les insertions de sécurité des messages de services, de port ou d’opération.
Actuellement, on a la tendance d’utiliser le terme «XML Security Gateway» pour les XML Firewall, car on attend de ces pare-feu un travail plus qu’un conventionnel pare-feu.
Les XML Firewalls utilisent soit des techniques exactes (basées sur les signatures) ou des méthodes probabilistes basées sur le data mining et l’intelligence artificielle pour la sécurisation des web services.
XML FIREWALLS/XML SECURITY GATEWAYS
XML FIREWALLS/XML SECURITY GATEWAYS
XML FIREWALLS/XML SECURITY GATEWAYS
from netfilterqueue import NetfilterQueuefrom verification import verifier def verif(pkt) : if not (SOAPmessage(pkt.get_payload()) : pkt.accept() else : if verifier(pkt.get_payload()) : pkt.accept() else : pkt.drop()nfqueue = NetfilterQueue()nfqueue.bind(1, verif)try : nfqueue.run()except KeyboardInterrupt : print
XML FIREWALLS/XML SECURITY GATEWAYS Statistiques des tests effectués:
170 messages injections SQL.
30 messages injections de commandes OS.
120 messages injections XML.
80 messages injections XPath.
150 bons messages déjà vu (période d’apprentissage).
150 bons messages nouveaux.
Un échantillon d’apprentissage de 10000 messages.
Résultats obtenus : 16 Faux Positifs (bon messages signalés malveillants à tord) et 0 faux négatifs (messages malveillants signalés bons par erreur).
CONCLUSION
Implémenter les standards WS-Security.
Utiliser une sécurité périmétrique XML Firewalls.
Secure Coding !
WS-Security VS Sécurité Périmétrique ?
To SOAP or NOT ?
To SECURE SOAP or NOT? That’s the question
Merci de votre attention