Sécurité des web services soap

Preview:

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

Recommended