IT-Sicherheit Web Service Security

Slides:



Advertisements
Ähnliche Präsentationen
SOAP, nur ein neuer XML- Dialekt?
Advertisements

Be.as WEB Technologie
Software Architektur Service­orientierte Architektur und Sicherheit
Entwicklung UnivIS-Anbindung auf Basis von PHP und DOM-XML
ASP.NET Tips & Tricks Uwe Baumann
SQL Server 2005 Übersicht für Entwickler Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Sicherheit in SOA Was kommt auf Entwickler zu? Sebastian Weber
© 2003 Guido Badertscher Spontane Vernetzung - UPnP 9. Jänner 2004 Spontane Vernetzung Guido Badertscher.
SOAP Simple Object Access Protocol
Bernd Oberknapp, UB Freiburg
XML / SOAP Web Services Security
Datenbankzugriff im WWW (Kommerzielle Systeme)
Seite 1Maria, Philipp, Herbert Seite 1 Fitnessplaner Ziele: >Fitnessplaner für Onlinebetrieb >Registrierung >individuelle Trainingsplanerstellung.
Erweiterung B2B Usermanagement / LDAP-Anbindung
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
DOM (Document Object Model)
XINDICE The Apache XML Project Name: Jacqueline Langhorst
SOAP (Simple Object Access Protocol)
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
HTML - Eine erste Annäherung
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Einführung XML XML Einführung Andreas Leicht.
Strukturänderungen Verteilte Anwendungen Wintersemester 06/07 © Wolfgang Schönfeld.
Seminar Internet Technologien
Einführung MySQL mit PHP
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
1 Grundlagen und Anwendung der Extensible Markup Language (XML ) Peter Buxmann Institut für Wirtschaftsinformatik Johann Wolfgang Goethe-Universität Frankfurt.
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
... und alles was dazugehört
Seminar Praktische Informatik Web Services
Vom XML Schema zur relationalen Datenbank Seminararbeit zum Multimedia-Seminar im SS 2002 Erstellt von: Thomas Dickel.
Software Architektur III
Die .NET Common Language Runtime
Die .NET Common Language Runtime
27. Juni 2003 Jan Drewnak – Institut für Geoinformatik, Münster Zugriffskontrolle in Geodateninfrastrukturen Web Authentication Service (WAS) und Web Security.
ArcGIS als WPS Server Aktueller Stand der Umsetzung
Integration heterogener verteilter Systeme mit WS-BPEL – ein Praxisbeispiel Dr. Wolf-Dieter Heinrichs.
Webservice Grundlagen
SQL Server 2005 CLR-Integration
UNIVERSITÄT ZU KÖLN HISTORISCH-KULTURWISSENSCHAFTLICHE INFORMATIONSVERARBEITUNG REUSABLE - CONTENT SS 2013 MARIA WAGNER ReST.
Java für Fortgeschrittene
Software Architektur Service­orientierte Architektur und Sicherheit
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Sesame Florian Mayrhuber
Folgendes kann missbraucht werden: formulare unverschlüsselte login-informationen ungeschützte includes SQL-injection reto ambühler
XML-Serverpages Vortrag im Rahmen des Seminars XML-Technologien Tobias Faessler.
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
XML (Extensible Markup Language)
Webseiten mit PHP, SQL, XML und Webservices Anhand praktischer Beispiele.
Hacking InfoPoint Jörg Wüthrich Infopoint - Hacking - Jörg Wüthrich 2/26 Inhalte Rund um das Thema Hacking Angriffs-Techniken Session.
SOAP.
Universal Plug and Play
Microsoft.NET InfoPoint 8. Juni 2005 Stefan Bühler.
Quelle: xkcd.com SQL Injections.
Internet-Grundtechnologien. Client / Server Client („Kunde“): fordert Information / Datei an im Internet: fordert Internetseite an, z.B.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Peter Brezany Institut für Softwarewissenschaften Universität Wien
Welcome to Web Services & Grid Computing Jens Mache
Sicherheitsaspekte in Service Orientierten Architekturen Eike Falkenberg Sommersemester 2006 Anwendungen I.
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
Pascal Brunner Uniklinik RWTH Aachen Institut für Medizinische Informatik Integration von ImageJ- und Matlab- Servern in das Electronic Data Capture klinischer.
Patrick Richterich Lattwein GmbH Web Services Softwareentwicklung mit SOAP.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Identity Management.  Zentrale Begriffe und Probleme  Modellbildung  Methoden zur Authentisierung über HTTP  Technische Aspekte  Compliance  Hindernisse,
Webservices SOAP und REST Nicole Fronhofs 1. Betreuer: Prof. Dr. Volker Sander 2. Betreuer: B. Sc. Sebastian Olscher.
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
SOAP - WSDL Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 2 Hauptseminar: Virtuelle.
Business Process Excuction Lanaguage
Business Process Excuction Lanaguage
 Präsentation transkript:

IT-Sicherheit Web Service Security Dipl. Inf. (FH) Matthias Besenfelder Dipl. Inf. (FH) Guido Nippe Dipl. Inf. (FH) Paul Mizel info@add2get.de

Zur Person Dipl. Inf. (FH) Paul Mizel Allgemeine Informatik FH Dortmund aktuell Master-Studiengang Informatik Microsoft Student Partner Microsoft Certified Professional

Inhalt Was ist ein WebService? Begriffe Google Service Demo Sünden der Web-Entwicklung

Was ist ein WebService?

Begriffe UDDI Universal Description, Discovery and Integration 3.0.2 http://www.oasis-open.org/committees/uddi-spec/doc/spec/v3/uddi-v3.0.2-20041019.htm WSDL Web Services Description Language (WSDL) 1.1 http://www.w3.org/TR/wsdl SOAP Simple Object Access Protocol 1.2 http://www.w3.org/TR/soap12 RPC Remote Procedure Call CORBA, DCOM, RMI XML Extensible Markup Language http://www.w3.org/XML/

SOAP SOAP Nachricht SOAPHeader(optional) XML Content SOAPEnvelope Request <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:validate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:CardValidator"> <number xsi:type="xsd:string">1234 5678 9876 5432</number> <valid xsi:type="xsd:string">12/08</valid> </ns1:validate> </soapenv:Body> </soapenv:Envelope> Response <ns1:validateResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" <addReturn xsi:type="xsd:boolean">true</addReturn> </ns1:validateResponse> SOAP Nachricht SOAPPart SOAPEnvelope SOAPHeader(optional) SOAPBody XML Content XMLFault AttachmentPart (Optional) MIME Header Content XML or non XML AttachmentPart (Optional) MIME Header Content XML or non XML

WebService Demo DEMO Wie erstelle ich ein WebService? Wie nütze ich ein Webservice?

Google Service in PHP $key = ‘dein google license Schlüssel'; require_once('nusoap.php'); $parameters = array( 'key' => $key, 'q' => 'suchtext', 'start' => 0, 'maxResults' => 10, 'filter' => false, 'restrict' => '', 'safeSearch' => false, 'lr' => 'lang_de', 'ie' => '', 'oe' => '' ); $soapclient = new soapclient('http://api.google.com/search/beta2'); $result = $soapclient->call('doGoogleSearch', $parameters, 'urn:GoogleSearch'); print_r ($result);

Google Service in C# using WebService.com.google.api; const string Key = "dein google license Schlüssel"; global::WebService.com.google.api.GoogleSearchService s = new global::WebService.com.google.api.GoogleSearchService(); global::WebService.com.google.api.GoogleSearchResult r = s.doGoogleSearch(Key, "suchtext", 0,10, false, "", false, "lang_de", "", ""); string data = r.estimatedTotalResultsCount+"\r\n"; foreach (global::WebService.com.google.api.ResultElement var in result.resultElements) { data += var.URL+"\r\n"; } Google WSDL http://api.google.com/GoogleSearch.wsdl

Google Service Demo DEMO Suchen aus eigener Anwendung durch Google

Sünden der Webentwicklung Der Benutzer

Sünden der Webentwicklung Spot the Bug  CREATE PROCEDURE dbo.doQuery(@id nvarchar(128)) AS DECLARE @query nchar(256) SELECT @query=‘select ccnum from cust where id=‘‘‘ + @id + ‘‘‘‘ EXEC @query RETURN

Sünden der Webentwicklung SQLInjection CREATE PROCEDURE dbo.doQuery(@id nvarchar(128)) AS DECLARE @query nchar(256) SELECT @query=‘select * from cust where id=‘‘‘ + @id + ‘‘‘‘ EXEC @query RETURN Id=“‘1 OR 1=1‘“ SELECT @query=‘select * from cust where id=‘1 OR 1=1‘‘ Id=“1' DROP TABLE cust --“ Id=“1' exec xp_cmdshell('defrag.exe') --“ Abhilfe? Arbeiten Sie mit parametrisierten SQL-Abfragen auf dem Datenbankserver Arbeiten Sie mit Regular Expressions, um ungültige Eingabeformate auszuschliessen

Sünden der Webentwicklung Spot the Bug  string status = "No"; string sqlstring = ""; try { // SQL Zugriffscode } catch (SqlException se) { Status = sqlstring + " failed\r\n"; foreach (SqlError e in se.Errors) Status += e.Message + "\r\n"; } if (Status.CompareTo("No") != 0) { Response.WriteLine(Status);

Sünden der Webentwicklung Information Leakage

Sünden der Webentwicklung Lösung für Information Leakage try { // SQL Zugriffscode } catch (SqlException se) { Status = sqlstring + " failed\r\n"; foreach (SqlError e in se.Errors) Status += e.Message + "\r\n"; WindowsIdentity user = WindowsIdentity.GetCurrent(); WindowsPrincipal prin = new WindowsPrincipal(user); if (prin.IsInRole(WindowsBuiltInRole.Administrator)) Response.WriteLine(Status); else { Response.Write("An error occurred, please bug your admin"); EventLog.WriteEntry("SqlApp", Status, EventLogEntryType.Error); }

Sünden der Webentwicklung TMI - Too Much Information Benutzername oder Paßwort falsch? Versionsinformationen verwendeter Software IP-Adressen, MAC-Adressen, etc... Pfade Genaue Fehlermeldungen Abhilfe? Informationen zur Fehlersuche an vertrauenswürdiger Stelle ablegen EventLog Ggf. Geeignet abgesichertes Logfile Informationen nur an Administratoren ausgeben

Danke Sicherheit 

Zur Person Dipl. Inf. (FH) Guido Nippe Wirtschaftsinformatik FH Dortmund aktuell Master-Studiengang Informatik Microsoft Student Partner Microsoft Certified Professional

Inhalt Web-Service Sicherheit SSL als erster Ansatz Probleme bei SSL Standards für sichere Webservices WS-Security

Web-Service Sicherheit In der ersten Web-Services-Euphorie wurde Sicherheit wenig beachtet Heute aber zentrale Fragestellungen: Vertrauliche Nutzung von Web Services? Authentifizierung von Client und Server? Integrität der ausgetauschten Dokumente? Zugriffssteuerung, Verfügbarkeit? Wichtiges Problem: Sicherheit traditionell als zusätzlicher (add-on) Dienst, z.B. auf der Basis von Firewalls Web Services sind aber so entworfen, dass sie Firewalls leicht überwinden  Integrierte Lösung notwendig

SSL als erster Ansatz Verschlüsselte Übertragung Authentifizierung des Servers Authentifizierung des Client (selten)

Probleme bei SSL Nur bei SOAP über HTTP Gesicherte Verbindung auf Transportebene, nicht des XML-Dokuments selbst Sicherung von Punkt zu Punkt nicht Ende zu Ende Problematisch besonders bei mehrstufigem Workflow Beispiel: Kreditkartendaten zum Webshop – Weiterleitung an Abrechnungsstelle

Standards für sichere Webservices Security Assertion Markup Language (SAML) Trust context service XML Digital Signatures (XML-DigSig) Integrität für XML-Dokumnente und Attribute XML Encryption (XML-Enc) Vertraulichkeit für XML-Dokumente und Attribute eXtensible Access Control Markup Language (XACML) XML Schema, das die Darstellung und Verarbeitung von Autorisierungs-Policies standardisiert XML Key Management Specification (XKMS) Auf XML basierender Schlüssel-Verwaltungs-Dienst Extensible Rights Markup Language (XrML). Universelle Sprache zur sicheren Beschreibung von digitalen Nutzungsrechten für vertrauliche Inhalte und Dienste WS-Security Sicherheitsstandards für Web-Services und SOAP

WS-Security Ursprüngliche Spezifikation wurde Oktober 2001 von Microsoft, IBM und VeriSign freigegeben Definiert einen Standardsatz an SOAP-Erweiterungen, die es Anwendungen erlauben, sichere SOAP-Nachrichten auszutauschen Ermöglicht die Implementierung von Mechanismen zum Austausch von Authentifizierungsmerkmalen, zur Nachrichtenintegrität und zur Vertraulichkeit Setzt bestehende Standards und Spezifikationen wie X.509, Kerberos (Authentifizierung) XML Encryption (Vertraulichkeit) XML Signature (Integrität) XML Canonicalization (Vorbereitung des XML-Dokumentes) wirksam ein

Implementierung WS-Security mit WSE 3.0 Microsoft patterns & practices Group Web-Service-Enhancements 3.0 Client Sendet in der Anfrage Benutzername/Passwort und einen generierten Sitzungsschlüssel, verschlüsselt mit dem öffentlichen Schlüssel des Servers, an den Server Server überprüft Benutzername/Passwort gegen das Active Directory Server antwortet auf die Anfrage des Clients

Asymmetrische Verschlüsselung

Zur Person Dipl. Inf. (FH) Matthias Besenfelder Wirtschaftsinformatik FH Dortmund aktuell Master-Studiengang Informatik Microsoft Certified Professional

Verwundbarkeit von Web-Services Die bisher besprochenen Sicherheitsstandards sind eine gute Grundlage zur Authentifizierung, Signierung (Integrität) und Verschlüsselung. Aber: Es gibt Verwundbarkeiten in der Anwendung selbst! Kurz gesagt: SSL schützt nicht gegen SQL-Injections

Verwundbarkeit von Web-Services

Verwundbarkeit von Web-Services Dieser Teil des Vortrags behandelt Angriffe auf den Schichten XML XML ist mittlerweile von einer großen Familie an Standards umgeben: XSLT XSD XPath XQuery DTD… Wenige Menschen verstehen die wichtigsten Aspekte der Technologien Keiner versteht alle Aspekte SOAP Aktuelle Entwicklungsumgebungen verwandeln zwei Zeilen Code in vollständige Web-Services. Die einfache Entwicklung lenkt oft von sicherheitskritischen Aspekten ab, wie etwa der Serialisierung.

Verwundbarkeit von Web-Services XML XML ist auf einigen wenigen Regeln aufgebaut, etwa Nur ein Root-Node, Tags müssen geöffnet und geschlossen werden, … Ein Angriff auf einen Web-Service setzt gültiges XML voraus, da ansonsten der Parser den Angriff frühzeitig verwirft. XML-Schemas können viele Angriffe verhindern, sofern sie sinnvoll eingesetzt werden. Injections können z.B. durch Eingaberestriktionen verhindert werden.

Verwundbarkeit von Web-Services XML - DoS Es gibt zwei Typen von XML-Parsern SAX (Schritt für Schritt) Generell nicht anfällig für DoS-Attacken DOM Angriff: DoS Extrem komplizierte, aber valides XML wird gesendet. Der Speicherbedarf ist enorm. Dieser Angriff multipliziert extrem gut (XML parsen), andere DoS-Typen sind wesentlich aufwendiger. Custom-Parsers sehr anfällig für Angriffe (z.B. parsen über RegEx)

Verwundbarkeit von Web-Services XML - CDATA CDATA-Felder XML erlaubt über CDATA-Felder, nicht-erlaubte Zeichen zu übertragen. Entwickler unterliegen oft der Annahme, dass bestimmte Datentypen nicht in XML eingebettet werden können. Das führt zur Verwendung von CDATA-Feldern. Beim Parsen werden CDATA-Komponenten getrennt. Es gibt keine weitere Filterung! Wo entstehen Angriffsmöglichkeiten? SQL-Injection XML-Injection XPath-Injection XSS (Cross-Site-Scripting)

Verwundbarkeit von Web-Services XML - CDATA Beispiel Cross-Site-Scripting über CDATA-Feld <TAG1> <![CDATA[<]]>SCRIPT<![CDATA[>]]> alert(‘XSS’); <![CDATA[<]]>/SCRIPT<![CDATA[>]]> </TAG1> Beispiel SQL-Injection über CDATA-Feld <TAG2> <![CDATA[‘or 1=1 or ‘’=‘]]> </TAG2>

Verwundbarkeit von Web-Services XML - XPath XPath erlaubt das einfache Auffinden von Informationen in einem XML-Dokument XPath kann dazu benutzt werden, auf XML-fähige Datenbanken zuzugreifen. SQL Server 2000 und 2005, Oracle 8i+, … Warum ist das gefährlich? XPath verwendet Trennzeichen zwischen Code und Daten Hochkomma ´ Im Gegensatz zu SQL gibt es keine Zugriffskontrolle in XML oder XPath Gelingt es einem Angreifer, Daten in einer XPath-Abfrage zu kontrollieren, kann er auf beliebige Teile der XML-Datei zugreifen oder beliebige Daten zurückgeben

Verwundbarkeit von Web-Services XML - XPath XPath-Beispiel <auto> <hersteller>BMW</hersteller> <name>M3 CSL</name> </auto> XPath-Queries //auto Gibt alle auto-Elemente im Dokument zurück //auto/[name=`M3 CSL`] Gibt alle autos zurück, die eine Child-Node name mit dem Wert M3 CSL haben

Verwundbarkeit von Web-Services XML - XPath Beispiel – XPath Abfrage von Username und Passwort in XML //user[name=`Matthias` and pass=`willrein`] Gibt den Benutzer mit Name und Passwort zurück. //user[name=`Matthias` or 1=1 or ``=`` and pass=`willrein`] Gibt alle Benutzer zurück. //user[name=`Matthias` or userid=1 or ``=`` and pass=`willrein`]/userid Gibt alle Benutzer mit userid=1 zurück.

Verwundbarkeit von Web-Services SOAP - WSDL SOAP-Schnittstellen werden durch WSDL beschrieben (Web Services Description Language) WSDLs sind oft sehr komplex WSDLs werden weder manuell erstellt noch gelesen WSDLs sind einfach zu bekommen (http://api.google.com/GoogleSearch.wsdl) WSDLs verraten einem Angreifer alles, was er zum Zugriff auf die Schnittstelle des Web-Services braucht. Typen Nachrichten, … Das Freigeben all dieser Informationen ist nicht erforderlich, wenn nicht beliebige Clients auf den Service zugreifen sollen!

Verwundbarkeit von Web-Services SOAP - WSDL Angriff: Vermeintlich „versteckte“ Debug-Methoden werden versehentlich über WSDL offengelegt. Besondere Gefahr bei klassischen Anwendungen, die zum Web-Service portiert wurden! Vorgänge, die nur durch Geheimhaltung oder Verworrenheit sicher sind, werden eventuell durch WSDL bekannt. Beispiel unverschlüsselte Übertragungen. Manuelles Entfernen von kritischen Teilen aus WSDLs hilft nicht immer, da oft Methoden zum automatischen Generieren der WSDL existieren.

Verwundbarkeit von Web-Services SOAP SOAP Header bieten Informationen, wie eine Nachricht behandelt werden soll. Oft überflüssig, aber von Web-Service-Frameworks generiert und beachtet. Angriff: XML DoS im SOAP-Header Session Management SOAP ist statuslos, daher muss der Entwickler den Status verwalten. Angriff: Replay-Attacks

Verwundbarkeit von Web-Services DoS Alle DoS-Angriffe versuchen, Multiplikatoren zu finden CPU-Zeit Tiefe Strukturen Referenzen auf externe Dokumente (Timeouts etc.) DOM für komplexe XML-Dokumente Speicherverbrauch Tiefe und breite Strukturen Große Datenmengen in häufig verwendeten Feldern. Datenbankverbindungen Oft ein einfacher Angriffspunkt, da wenige Datenbanken einen Flaschenhals bilden.

Verwundbarkeit von Web-Services DoS Was einen schlagkräftigen Angriff ausmacht Gültiger SOAP-Request Korrekte DTD-/XSD-Syntax Entspricht einer tatsächlichen SOAP-Methode Eventuell ist eine gültige Session-ID erforderlich Geschwindigkeit Mehrere Prozesse Für manche Angriffe muss auf eine Antwort reagiert werden Wie verteidigt man sich? DoS-Angriffe auf Web-Services müssen getestet werden! Die Komplexität einer Anfrage sollte vor dem Parsen geprüft werden XML-Firewalls Strict XML-Schema verification

Verwundbarkeit von Web-Services Fazit Web-Services sind mächtig, einfach zu bedienen und ein offener Standard D.h. sie sind außergewöhnlich gefährlich. Viele Sicherheitsfragen sind nicht geklärt Die sich schnell entwickelnden Standards müssen analysiert werden WS-Security WS-Routing WS-Inspection WS-…..

Links Web Services Enhancements (WSE) http://msdn.microsoft.com/webservices/webservices/building/wse/default.aspx Microsoft patterns & practices Home http://msdn.microsoft.com/practices/ Security DevDays 2006 Dank an Dirk Primbs https://www.microsoft.com/germany/msdn/experts/DirkPrimbs/default.mspx Wikipedia http://www.wikipedia.de _