Title: IT-Sicherheit
1IT-Sicherheit
Dipl. Inf. (FH) Matthias Besenfelder Dipl. Inf.
(FH) Guido Nippe Dipl. Inf. (FH) Paul
Mizel info_at_add2get.de
2Zur Person
- Dipl. Inf. (FH) Paul Mizel
- Allgemeine Informatik FH Dortmund
- aktuell Master-Studiengang Informatik
- Microsoft Student Partner
- Microsoft Certified Professional
3Inhalt
- Was ist ein WebService?
- Begriffe
- Google Service Demo
- Sünden der Web-Entwicklung
4Was ist ein WebService?
5Begriffe
- 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/
6SOAP
- Request
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltsoapenvEnvelope xmlnssoapenv"http//schemas.xm
lsoap.org/soap/envelope/" - xmlnsxsd"http//www.w3.org/200
1/XMLSchema" - xmlnsxsi"http//www.w3.org/200
1/XMLSchema-instance"gt - ltsoapenvBodygt
- ltns1validate soapenvencodingStyle"http//sche
mas.xmlsoap.org/soap/encoding/" - xmlnsns1"urnCardValidator"gt
- ltnumber xsitype"xsdstring"gt1234 5678 9876
5432lt/numbergt - ltvalid xsitype"xsdstring"gt12/08lt/validgt
- lt/ns1validategt
- lt/soapenvBodygt
- lt/soapenvEnvelopegt
- Response
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltsoapenvEnvelope xmlnssoapenv"http//schemas.xm
lsoap.org/soap/envelope/" - xmlnsxsd"http//www.w3.org/200
1/XMLSchema" - xmlnsxsi"http//www.w3.org/200
1/XMLSchema-instance"gt
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
7WebService Demo
- DEMO
- Wie erstelle ich ein WebService?
- Wie nütze ich ein Webservice?
8Google Service in PHP
- key dein google license Schlüssel'
- require_once('nusoap.php')
- parameters array(
- 'key' gt key,
- 'q' gt 'suchtext',
- 'start' gt 0,
- 'maxResults' gt 10,
- 'filter' gt false,
- 'restrict' gt '',
- 'safeSearch' gt false,
- 'lr' gt 'lang_de',
- 'ie' gt '',
- 'oe' gt ''
- )
- soapclient new soapclient('http//api.google.co
m/search/beta2') - result soapclient-gtcall('doGoogleSearch',
parameters, 'urnGoogleSearch')
9Google Service in C
- using WebService.com.google.api
- const string Key "dein google license
Schlüssel" - globalWebService.com.google.api.GoogleSearchServ
ice s new - globalWebService.com.google.api.GoogleSearchServ
ice() - globalWebService.com.google.api.GoogleSearchResu
lt r - s.doGoogleSearch(Key,
- "suchtext",
- 0,10,
- false, "", false, "lang_de", "", "")
-
- string data r.estimatedTotalResultsCount"\r\n"
- foreach (globalWebService.com.google.api.Res
ultElement var in result.resultElements) -
- data var.URL"\r\n"
-
10Google Service Demo
- DEMO
- Suchen aus eigener Anwendung durch Google
11Sünden der Webentwicklung
12Sünden der Webentwicklung
CREATE PROCEDURE dbo.doQuery(_at_id
nvarchar(128)) AS DECLARE _at_query nchar(256)
SELECT _at_queryselect ccnum from cust where
id _at_id EXEC _at_query RETURN
13Sünden der Webentwicklung
- SQLInjection
- CREATE PROCEDURE dbo.doQuery(_at_id nvarchar(128))
- AS
- DECLARE _at_query nchar(256)
- SELECT _at_queryselect from cust where id
_at_id - EXEC _at_query
- RETURN
- Id1 OR 11
- CREATE PROCEDURE dbo.doQuery(_at_id
nvarchar(128)) - AS
- DECLARE _at_query nchar(256)
- SELECT _at_queryselect from cust where id1
OR 11 - EXEC _at_query
- RETURN
- Id1' DROP TABLE cust --
- Id1' 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
14Sünden der Webentwicklung
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)
15Sünden der Webentwicklung
16Sü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)
17Sü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
18Danke
19Zur Person
- Dipl. Inf. (FH) Guido Nippe
- Wirtschaftsinformatik FH Dortmund
- aktuell Master-Studiengang Informatik
- Microsoft Student Partner
- Microsoft Certified Professional
20Inhalt
- Web-Service Sicherheit
- SSL als erster Ansatz
- Probleme bei SSL
- Standards für sichere Webservices
- WS-Security
21Web-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
22SSL als erster Ansatz
- Verschlüsselte Übertragung
- Authentifizierung des Servers
- Authentifizierung des Client (selten)
23Probleme 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
WorkflowBeispiel Kreditkartendaten zum Webshop
Weiterleitung an Abrechnungsstelle
24Standards 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
25WS-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
26Implementierung 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
27Asymmetrische Verschlüsselung
28Zur Person
- Dipl. Inf. (FH) Matthias Besenfelder
- Wirtschaftsinformatik FH Dortmund
- aktuell Master-Studiengang Informatik
- Microsoft Certified Professional
29Verwundbarkeit 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
30Verwundbarkeit von Web-Services
31Verwundbarkeit 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.
32Verwundbarkeit von Web-ServicesXML
- 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.
33Verwundbarkeit von Web-ServicesXML - DoS
- Es gibt zwei Typen von XML-Parsern
- SAX (Schritt für Schritt)
- Generell nicht anfällig für DoS-Attacken
- DOM
- Angriff DoSExtrem 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)
34Verwundbarkeit von Web-ServicesXML - 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-Komponentengetrennt. Es
gibt keine weitere Filterung! - Wo entstehen Angriffsmöglichkeiten?
- SQL-Injection
- XML-Injection
- XPath-Injection
- XSS (Cross-Site-Scripting)
35Verwundbarkeit von Web-ServicesXML - CDATA
- Beispiel Cross-Site-Scripting über CDATA-Feld
- ltTAG1gt
- lt!CDATAltgtSCRIPTlt!CDATAgtgt
- alert(XSS)
- lt!CDATAltgt/SCRIPTlt!CDATAgtgt
- lt/TAG1gt
- Beispiel SQL-Injection über CDATA-Feld
- ltTAG2gt
- lt!CDATAor 11 or gt
- lt/TAG2gt
36Verwundbarkeit von Web-ServicesXML - 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
37Verwundbarkeit von Web-ServicesXML - XPath
- XPath-Beispiel
- ltautogt
- ltherstellergtBMWlt/herstellergt
- ltnamegtM3 CSLlt/namegt
- lt/autogt
- XPath-Queries
- //auto
- Gibt alle auto-Elemente im Dokument zurück
- //auto/nameM3 CSL
- Gibt alle autos zurück, die eine Child-Node
namemit dem Wert M3 CSL haben
38Verwundbarkeit von Web-ServicesXML - XPath
- Beispiel XPath Abfrage von Username und
Passwort in XML - //usernameMatthias and passwillrein
- Gibt den Benutzer mit Name und Passwort zurück.
- //usernameMatthias or 11 or and
passwillrein - Gibt alle Benutzer zurück.
- //usernameMatthias or userid1 or and
passwillrein/userid - Gibt alle Benutzer mit userid1 zurück.
39Verwundbarkeit von Web-ServicesSOAP - 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!
40Verwundbarkeit von Web-ServicesSOAP - 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.
41Verwundbarkeit von Web-ServicesSOAP
- 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
42Verwundbarkeit von Web-ServicesDoS
- 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.
43Verwundbarkeit von Web-ServicesDoS
- 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
44Verwundbarkeit von Web-ServicesFazit
- 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-..
45Links
- 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/Dir
kPrimbs/default.mspx - Wikipedia
- http//www.wikipedia.de
- _