1
BSI Grundschutzbaustein Webanwendungen Absicherung von Webanwendungen in der Praxis - Highlights aus den OWASP Top 10 Ralf Reinhardt 13.06.2013, 13:30 Uhr BSI IT-Grundschutztag Tagungs- und Besucherzentrum bayernhafen Linzer Str. 8, 93055 Regensburg 2
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 3
BSI Grundschutzbaustein Web-Anwendungen Um Webanwendung angemessen abzusichern, wurde ein neuer Baustein für die IT-Grundschutz-Kataloge entwickelt, der vorab vom BSI zur Kommentierung veröffentlicht wurde. Daran teilgenommen hat unter anderem das Open Web Application Security Project (OWASP). Diese unabhängige und offene Expertengruppe hat sich zum Ziel gesetzt, Sicherheit in (Web-)Anwendungen sichtbar zu machen und praxisnahe Lösungen bereitzustellen. «Die konsolidierte Version des Bausteines 'Webanwendungen' wird mit der nächsten Ergänzungslieferung der IT-Grundschutz-Kataloge erscheinen», informierte Isabel Münch, Referatsleiterin IT-Grundschutz beim BSI. Vorab steht der Baustein auf den Webseiten des BSI als Download zur Verfügung. Aus einer Pressemitteilung des BSI vom 17.10.2012 anlässlich der Vorstellung des Bausteins auf dem 4. IT-Grundschutztag 2012 (it-sa) 4
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 5
Über OWASP (I / II) Open Web Application Security Project,,not-for-profit worldwide charitable organisation focused on improving the security of application software" ca. 160 Chapter in 80 Ländern,,free and open to the public" Struktur: Board, Chapter, Stammtisch, Mitglied http://www.owasp.de/ https://www.owasp.org/ https://lists.owasp.org/mailman/listinfo/owasp-germany 6
Über OWASP (II / II) OWASP Projekte PROTECT (guard) DETECT (find) LIFE CYCLE (add security related activities) OWASP Konferenzen OWASP Summit (global) OWASP AppSec (kontinental) OWASP Day(s) (national) OWASP Chapter Meeting / Stammtisch (regional) OWASP Mitgliedschaft (EUR 40,- p.a.) 7
Über OWASP, ausgewählte Projekte OWASP Top 10 OWASP Testing Guide OWASP Code Review Guide OWASP (Development) Guide OWASP ASVS (Application S. Verification Standard) OWASP OpenSAMM (Open S. Assurance MM) OWASP ESAPI (Enterprise Security API) OWASP Zed Attack Proxy OWASP Web Goat OWASP ModSecurity Core Rule Set OWASP Top 10 für Entwickler 8
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 9
OWASP Top 10 10
OWASP Top 10, Aufbau 11
OWASP Top 10, Highlights A1: Injection SQL-Injection, aber auch HQL, LDAP, Xpath, OS-Kommandos, usw. A2: Cross-Site Scripting (XSS) JavaScript-Injection A4: Unsichere direkte Objektreferenzen A5: Cross-Site Request Forgery (CSRF) 12
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 13
Über sic[!]sec sic[!]sec GmbH in Gröbenzell bei München, www.sicsec.de, info@sicsec.de gegründet 2010 von Achim Hoffmann und Ralf Reinhardt als unabhängiges Beratungshaus Schwerpunkt Web Application Security Penetrationstests Source Code Analysen und Code Reviews Web Application Firewalls Guidelines und Policys Workshops und Seminare 14
Über Ralf Reinhardt Principal Consultant und Geschäftsführer der sic[!]sec GmbH Lehrbeauftragter für Web Application Security an der Technischen Hochschule Nürnberg OWASP Mitglied, Project Leader und Contributor Mitglied des ISSECO (International Secure Software Engineering Council) 27 Jahre IT-Erfahrung, darunter Client-, Server- und Datenbankprogrammierung, Administration (AIX, Linux, Oracle), IT-Projektleitung, Rollout, Betrieb, ITIL, usw. 15
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 16
Wie "ticken" Web-Anwendungen? Client Boundary Input Output Request Response Boundary Output Input Server Output Input Input Output Repository 17
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 18
Cross-Site Scripting, Eingabe 19
Cross-Site Scripting, Quellcode 20
Cross-Site Scripting Angriff (I / II) 21
Cross-Site Scripting Angriff (II / II) 22
Kein Cross-Site Scripting! 23
Korrektes Escaping :-) 24
A2: Cross-Site Scripting, Maßnahmen [...] nicht vertrauenswürdige Metazeichen [sollten] entsprechend escaped werden. [ ] OWASP XSS Prevention Cheat Sheet enthält weitere Informationen [...] Eingabeüberprüfungen durch Positivlisten [ ] wird empfohlen. [ ] Gültigkeitsprüfung [...] bevor die Eingabe akzeptiert wird. 25
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 26
Datenbankabfrage durch Client 27
SQL-Statement im Server regulären Anfrage Ergebnis der Ausgabe am Client: Abu Mouser, abu@mouser.tld, Einkauf 28
SQL-Injection über Client 29
Resultat der SQL-Injection im Backend Ergebnis der Ausgabe am Client: Name, E-Mail, Abteilung für alle Benutzer! 30
Tabellenstruktur der Datenbank Annahme: In der Datenbank existiert eine Tabelle namens USER mit den Spalten NICENAME EMAIL INSTITUTION LOGIN PASSWORD 31
SQL-Injection mit union 32
Resultat der union -SQLInjection im Backend Ergebnis der Ausgabe am Client: Name, Login, Passwort für alle Benutzer! 33
A1: (SQL-) Injection Maßnahmen [...] Nutzung einer sicheren API, die den Aufruf von Interpretern vermeidet oder eine typ-gebundene Schnittstelle bereitstellt. [...] Metazeichen unter Berücksichtigung der jeweiligen Syntax sorgfältig entschärfen. 34
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 35
Unsichere direkte Objektreferenzen (I / III) 1) Ziel des Benutzers einer Webanwendung: Prüfen der eigenen Kontoumsätze bei seiner Hausbank. 2) Bankanwendung bietet dafür einen Link Kontoumsätze an. Dieser ruft folgende URL auf: https://badbank.tld/umsatz?konto=4711 36
Unsichere direkte Objektreferenzen (II / III) 3) Benutzer klickt Link https://badbank.tld/umsatz?konto=4711 4) Benutzer sieht die Umsätze seines Kontos 4711 und ist glücklich. 5) Benutzer wird neugierig... 37
Unsichere direkte Objektreferenzen (III / III) 6) Benutzer testet direkte URL-Eingabe https://badbank.tld/umsatz?konto=4712 7) Benutzer sieht die Umsätze des Kontos 4712; dieses Konto gehört ihm nicht. 8) Ist Benutzer Hacker, ist er jetzt noch glücklicher. 38
A4: Unsichere direkte Objektreferenzen, Maßnahmen Indirekte Objektreferenzen verwenden! [...] Referenzen [...] statt [...] Datenbankschlüssel. [ ] Die OWASP ESAPI enthält Referenzzuordnungen für sequentiellen wie wahlfreien Zugriff [ ]. Zugriffe prüfen! Jeder Abruf direkter Objektreferenzen aus nicht vertrauenswürdigen Quellen muss eine Prüfung der Zugriffsberechtigung beinhalten [ ]. 39
Praxis-Highlights der OWASP Top 10 BSI Grundschutzbaustein Web-Anwendungen Über OWASP OWASP Top 10 Über sic[!]sec und Ralf Reinhardt Wie "ticken" Web-Anwendungen? Highlight A2: Cross-Site Scripting (XSS) Highlight A1: Injection Highlight A4: Unsichere direkte Objektreferenzen Highlight A5: Cross-Site Request Forgery (CSRF) 40
Szenario Cross-Site Request Forgery 1) Ein Administrator berechtigt Benutzer A, Daten zu verändern.folgender Request wird ausgelöst: http://app.tld/do?user=a&edit=true 2) Benutzer B will ebenfalls Daten verändern und verlangt, dass A das Recht dazu entzogen wird. 3) Admin sagt: Nein! 4) Anwendung ist anfällig für CSRF. 41
Ein CSRF-Angriff (I / III) 5) Benutzer B hinterlegt CSRF-Inhalt unter http://autos.tld/cool.html 6) Benutzer B sagt Admin, dass dort coole Autos zu finden sind. Admin ist neugierig und öffnet diese Seite in einem andern Tab, während er im Browser noch eine gültige Session für die Anwendung http://app.tld offen hat. 42
Ein CSRF-Angriff (II / III) Inhalt von http://autos.tld/cool.html: [ ] <img src="/bilder/green-car.png"> <img src="http://app.tld/do?user=a&edit=false"> <img src="http://app.tld/do?user=b&edit=true"> <img src="/bilder/red-car.png"> [ ] 43
Ein CSRF-Angriff (III / III) 7) Admin sieht http://autos.tld/cool.html: Grünes Auto, 2 x broken image, Rotes Auto 8) Admin hat unbemerkt innerhalb seiner eigenen gültiges Session folgende Requests abgesetzt, untergeschoben von einer fremden Seite: http://app.tld/do?user=a&edit=false http://app.tld/do?user=b&edit=true 44
Ergebniss eines CSRF-Angriffs 9) Benutzer B ist nun berechtigt, Daten zu ändern, während Benutzer A dieses Recht entzogen wurde. Der CSRF-Angriff war somit erfolgreich. 45
A5: Cross-Site Request Forgery (CSRF), Maßnahmen Um CSRF zu verhindern, muss ein unvorhersagbarer Token im Body oder in der URL eines jeden HTTPRequests eingebettet sein (und geprüft werden). Ein solcher Token sollte für mindestens jede Nutzer-Session, besser noch für jeden Request, einzigartig sein. OWASPs CSRF Guard kann genutzt werden, um [ ] Token in [...] Anwendungen einzubinden. OWASPs ESAPI beinhaltet Token-Generatoren und Validatoren[...]. 46
Fragen, Anregungen? ralf.reinhardt@sicsec.de ralf.reinhardt@owasp.org sic[!]sec GmbH Industriestr. 29-31 D-82194 Gröbenzell www.sicsec.de 47
IT Security Process Optimization Data Protection sic[!]sec GmbH Industriestr. 29-31 82194 Groebenzell Germany Phone: +49 8142 44250 030 Fax: +49 8142 44250 039 http://www.sicsec.de mailto:info@sicsec.de "Praxis-Highlights" aus den OWASP Top 10 48