XML / SOAP Web Services Security

Download Report

Transcript XML / SOAP Web Services Security

XML / SOAP Web Services Security
Vortrag für das
Seminar IT-Sicherheit WS 02/03
von
Dietmar Mühmert
Inhalt







Begriffserläuterungen: Web Services, XML, SOAP,
WSDL, UDDI
Einsatzgebiete von Web Services
Merkmale und Sicherheitsrisiken von XML Web
Services
Welche Probleme sind neu?
XML Web Services bezüglich einzelner Schutzziele
Welchen Attacken sind Web Services ausgesetzt?
Fazit
Begriffe
Was sind Web Services?


Web Services sind Softwarekomponenten, die über
Beschreibungsstandards und Standardprotokolle im Internet zugänglich
sind.
XML Web Services nutzen XML als Beschreibungssprache und HTTP
als Übertragungsprotokoll.
Einsatzmöglichkeiten
Heterogene
Systeme
EAI
Web Services
als mögliche Lösung
Mobile
Endgeräte
B2B
Begriffe
Was ist XML?



eXtensible Markup Language (XML) strukturiert Daten und versieht sie
mit Bezeichnerelementen
Daten liegen in textueller Form vor
ermöglicht den Austausch von Daten zwischen verschiedenen
Applikationen
Beispiel: XML Listing
<?xml version="1.0" encoding="UTF-8"?>
<uni:Referat xmlns:uni="http://www.inf.fu-berlin.de">
<uni:Titel>XML Web Services Security</uni:Titel>
<uni:Autor>Dietmar Mühmert</uni:Autor>
</uni:Referat>
Begriffe
XML Schemas




XML Dokumente können unterschiedlich aufgebaut sein, obwohl sie
den gleichen Inhalt haben
Man braucht eine gemeinsame Vereinbarung für XML Dokumente
Man kann mit Hilfe von XML Schemas eigene Datentypen definieren
Klassen, die in der Programmiersprache, wie z.B. Java oder Perl,
erstellt wurden, lassen sich somit ineinander umwandeln.
Begriffe
XML Schemas
Mit Hilfe von XML Schemas kann man folgendes überprüfen:

Die Struktur von Elementen und Attributen

Die Reihenfolge der Elemente

Die Datenwerte der Elemente und Attribute, abhängig von
Wertebereichen, Aufzählungen und Pattern Matching

Die Eindeutigkeit der Werte
Begriffe
Was ist SOAP?



Simple Object Access Protocols (SOAP)
ist ein XML Dialekt
definiert ein Rahmenwerk für die Übertragung von XML-Nachrichten
über ein standardisiertes und anerkanntes Transportprotokoll
SOAP Envelope
Header
Header
SOAP Header
Nachricht mit Daten
SOAP Body
SOAP Envelope
Beispiel: SOAP Listing
<SOAP-ENV:Envelope xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/enevelope">
<SOAP-ENV:Header>
<sec:credentials
xmlns:sec="http://schemas.xmlsoap.org/ws/2002/01/sec"
mustUnderstand="1">
<sec:userName>muehmert</sec:userName>
<sec:userPassword>z65rfe3w</sec:userPassword>
</sec:credentials>
</SOAP-ENV:Header>
<SOAP-Env:Body>
<SOAP:GetUserID xmlns:SOAP="http://www.inf.fuberlin.de/webservices">
<userName>muehmert</userName>
</SOAP:GetUserID>
</SOAP-Env:Body>
</SOAP-ENV:Envelope>
Begriffe
Remote Procedure Call (RPC) entfernter Methodenaufruf
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
-----------------------------HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Begriffe
Was ist WSDL?



Web Services Description Language (WSDL), definiert die Web
Services Interfaces, die Datentypen und das Zusammenspiel mit dem
Übertragungprotokoll
XML-basierend
über WSDL erfährt ein SOAP-Client, wie eine Anfrage auszusehen hat
Begriffe
Was ist UDDI?




Universal Description, Discovery and Integration (UDDI), ist ein Web
Service Register mit Metadaten
Ein unabhängiges Konsortium aus Unternehmen wie Microsoft, IBM,
Hewlett-Packard und SAP verwalten einen öffentlichen UDDI Server
(vom Konzept her, so ähnlich wie DNS-Server)
dient zum Auffinden von Web Services
enthält Informationen über die verschiedenen Web Services und unter
anderem deren WSDLs
Begriffe
1. Discovery
(optional)
UDDI
2. Definition
(optional)
WSDL
Web Service A
SOAP
3. Communication
Web Service B
Merkmale von Web Services
Web Services sind charakterisiert durch:




dezentrale Architektur und Administration
heterogene Implementierungen und Systeme
unternehmensübergreifende Kommunikation und Verbindungen
öffentlicher Zugang über das Internet
Merkmale von Web Services
neue Probleme und häufig gestellte Fragen:





Wie setzt man eine übergreifende Sicherheitspolitik durch?
Wie kann man versichern, dass Sicherheitspolitiken eingehalten werden,
besonders bei Heimanwendern?
Wie arbeitet man mit anderen “schwachen” Systemen zusammen?
Was macht man mit älteren Anwendungen, die nie für's Internet gedacht
waren?
Wie administriert und logt man systemübergreifend?
WWW-Security / Web Services Security



Im Vergleich zu einem Web-Server hat eine Firewall für die Sicherheit
von Web Services wenig nutzen.
Eine Verschlüsselung des Kommunikationskanal per Secure Sockets
Layer (SSL) ist nicht vollkommen ausreichend.
Attacken, die gegen Web Server durchgeführt werden, kann man leicht
abgewandelt auch gegen Web Services anwenden.
Schutzziele




Datenschutz / Verschlüsselung
Authentifizierung
Autorisierung
Unleugbarkeit / Datenintegrität
Schutzziele
Datenschutz / Verschlüsselung






Übertragung im Klartext ermöglicht unbefugten Dritten das Lesen der
Daten
Verschlüsselung mit Hilfe eines asymmetrischen Verfahrens (RSA)
Kommunikationskanal per Secure Sockets Layer (SSL) schützen
falls sensible Daten an einen dritten Service-Provider weitergeleitet
werden, kann man Teile einer XML-Nachricht verschlüsseln und so den
Header mit Routing Informationen unverschlüsselt lassen.
XML Encryption (siehe Beispiel)
Viren lassen sich in verschlüsselten Attachments nicht ausfindig machen
(Viren-Scan erst nach dem Entschlüsseln möglich)
Beispiel: XML Encryption
<?xml version='1.0'?>
<PaymentInfo xmlns='http://example.org/paymentv2'>
<Name>John Smith</Name>
<CreditCard Limit='5,000' Currency='USD'>
<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'
Type='http://www.w3.org/2001/04/xmlenc#Content'>
<CipherData>
<CipherValue>A23B45C56</CipherValue>
</CipherData>
</EncryptedData>
</CreditCard>
</PaymentInfo>
Schutzziele
Authentifizierung




Bisher hat sich nur der Anwender beim Web-Server angemeldet, um an
Informationen zu gelangen.
Nun sollten sich sowohl der Service-Requester als auch der ServiceProvider gegenseitig authentifizieren, da sensible Daten in beide
Richtungen versendet werden.
Man kann z.B. Passwörter, Zertifikate, Kerberos, Lightweight Directory
Access Protocol (LDAP) oder Active Directory verwenden.
Single sign-on
Schutzziele
Autorisierung




Prüfen, ob Benutzer Zugang zu bestimmten Ressourcen hat und welche
Operationen der Benutzer ausführen darf.
Es empfiehlt sich nach dem Prinzip “least privilege” vorzugehen.
Mehrere Administratoren mit unterschiedlichen Rechten, um Risiken zu
verteilen.
Nur Leserechte auf Logdateien für Admins.
Schutzziele
Unleugbarkeit / Datenintegrität



Nachweisen des Ursprungs einer Nachricht
mittels Signaturen lässt sich feststellen, ob die Nachricht unterwegs
verändert wurde (signieren mit dem private key, verifizieren mit dem
public key)
Logdateien signieren, um zu verhindern, dass Hackerspuren verwischt
werden können.
Beispiel: Signatur Listing
<Signature Id="MyFirstSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
<Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>
<KeyInfo>
<KeyValue>
<DSAKeyValue>
<P>...</P><Q>...</Q><G>...</G><Y>...</Y>
</DSAKeyValue>
</KeyValue>
</KeyInfo>
</Signature>
Sicherheitsrisiken
Single sign-on



Ziel: einmalige Authentifizierung für mehrere Web Services
Ansatz: Security Assertion Markup Language (SAML), ist ein Standard
in XML, womit man für verschiedene Web Services Informationen zur
Authentifizierung und Autorisierung festhalten kann.
somit kann jeder Web Service bei einer SAML-Autorität die SAMLZuweisungen bezüglich eines Anwenders abfragen
Attacken




die Daten werden durch die Firewall durchgelassen (Port 80 bzw. 443),
da bekommt jeder Administrator Bauchschmerzen
man kann aber Firewalls oft so konfigurieren, dass sie SOAP
Nachrichten generell blocken
man muss sich den Inhalt der Nachrichten genauer angucken und
auswerten
Web Services bieten aufgrund ihrer unfangreichen Funktionalität eine
große Angriffsfläche für Hacker
Attacken
Web
Service
HTTP
Port 80/443
Firewall
Hacker
Web
Service
Web
Service
interne
Bedrohung
Attacken
Denial of Service




Abhängig von der Art des Web Services
Daten sammeln
XML-Nachrichten auswerten
Mustererkennung
Attacken
Fehlerhafte Parameter




ältere Systeme rechnen eventuell nicht mit falsch formatierten
Eingaben
Parameter angeben, die die Maximallänge überschreiten
Wildcards oder Escape-Zeichen einbauen
Werte und Attribute mittels XML Schemas prüfen
Attacken
Dictionary Attack


Verwendung von starken Passwörtern
häufiges Wechseln
Sicherheitslöcher schliessen



System runterzufahren (nicht so einfach wie z.B. bei einem WebServer)
Wichtig: Standards für die Logdateien und Sicherheitspolitiken
entwickeln. Nur so ist eine Systemübergreifende Fehlersuche möglich.
Die Koordination unter den einzelnen Administratoren ist wichtig!
Fazit



Web Services stehen noch am Anfang ihrer Entwicklung
Sicherheitsrisiken hindern Web Services am großen Durchbruch
Viele Unternehmen wagen nicht den ersten Schritt, sondern warten auf
andere Vorreiter.
Quellen
Bücher / Artikel:

XML Web Service-Anwendungen mit Microsoft .NET (Christian Weyer)

Understanding Web Services (Eric Newcomer)

eAI Journal, September 2002, Web Services Security (Andy Yang)
Internet:

XML: http://www.w3.org

WSS: http://www.oasis-open.org/committees/wss

...und viele mehr