27
SÉCURITÉ DES WEB SERVICES SOAP SMAHI Zakaria

Sécurité des web services soap

Embed Size (px)

Citation preview

Page 1: Sécurité des web services soap

SÉCURITÉ DES WEB SERVICES SOAP

SMAHI Zakaria

Page 2: Sécurité des web services soap

SOMMAIRE

Qu’est ce qu’un WEB Service

Web Services SOAP

Risques et Menaces

Réduction des risques

Conclusion

Questions

Page 3: Sécurité des web services soap

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.

Page 4: Sécurité des web services soap

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

Page 5: Sécurité des web services soap

ENVIRONNEMENT A WEB SERVICES TYPIQUE

SOURCE: Mastering Web Services Security www.wiley.com

Page 6: Sécurité des web services soap

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)

Page 7: Sécurité des web services soap

LES ACTEURS DU WEB SERVICE SOAP

Page 8: Sécurité des web services soap

LES ACTEURS DU WEB SERVICE SOAP - WSDL

Page 9: Sécurité des web services soap

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

Page 10: Sécurité des web services soap

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

Page 11: Sécurité des web services soap

RISQUES ET MENACES

Page 12: Sécurité des web services soap

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.).

Page 13: Sécurité des web services soap

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.

Page 14: Sécurité des web services soap

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

Page 15: Sécurité des web services soap

INJECTION SQL DANS UN MESSAGE SOAP

OR 1 = 1 -- Injection SQL

Page 16: Sécurité des web services soap

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

Page 17: Sécurité des web services soap

RÉDUCTION DES RISQUES

Chiffrement du transport.

AuthN.

X509/PKI

Intégrité et confidentialité des messages.

Secure Coding.

XML Firewall ou XML Security Gateway.

Page 18: Sécurité des web services soap

RÉDUCTION DES RISQUES

Chiffrement du transport:

HTTPS

SSL/TLS Tunnel

SSH

…etc.

AuthN:

HTTP trust, HTTP Header

WS SAML Authentication token

Kerberos

…etc.

Page 19: Sécurité des web services soap

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.)

Page 20: Sécurité des web services soap

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.

Page 21: Sécurité des web services soap

XML FIREWALLS/XML SECURITY GATEWAYS

Page 22: Sécurité des web services soap

XML FIREWALLS/XML SECURITY GATEWAYS

Page 23: Sécurité des web services soap

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

Page 24: Sécurité des web services soap

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).

Page 25: Sécurité des web services soap

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

Page 26: Sécurité des web services soap

Merci de votre attention

Page 27: Sécurité des web services soap