Neues eBook: "JavaScript Security - Sicherheit im Webbrowser"
Bei entwickler.press ist mein eBook über die Sicherheit von JavaScript erschienen: "JavaScript Security - Sicherheit im Webbrowser"
Wie der Name schon sagt geht es um die Sicherheit von JavaScript (und HTML5, dass ja viele neue JavaScript-APIs mit bringt). Behandelt werden
- XSS-Angriffe und deren Möglichkeiten, zum Beispiel der Implementierung eines Rootkits für Webclients, der Kompromittierung des lokalen SOHO-Routers oder dem Aufbau eines Broser-basierten Botnets. Nicht zu vergessen die Möglichkeit, über XSS den Server zu kompromittieren.
- Angriffe über die Grafikfunktionen von HTML5, entweder um Daten auszuspähen oder den Browser zu identifizieren.
- Die Content Security Policy als gute Möglichkeit zur Abwehr von Angriffen.
Kapitel 1: JavaScript in Angreiferhand
JavaScript-Code kann so wie jedes andere Computerprogramm auch Schwachstellen enthalten, und so wie in jeder anderer Programmiersprache können auch in JavaScript Schadprogramme geschrieben werden. Beide Möglichkeiten werden natürlich von Angreifern ausgenutzt - warum sollten sie auch darauf verzichten?
Und den Angreifern bieten sich viele Möglichkeiten, angefangen bei den klassischen XSS-Angriffen, denen in Zeiten von Web 2.0 und HTML5 viel mehr Möglichkeiten offen stehen, über Angriffe auf die immer stärker in den Client ausgelagerte Anwendungslogik bis zu Browser-basierten Botnets, die sich kaum entdecken lassen und nach dem Beenden des JavaScript-Schadcodes keinerlei Spuren auf dem Rechner hinterlassen.
Kapitel 2: HTML5-Grafikfunktionen gefährden Sicherheit und Privatsphäre
Durch Timing-Angriffe lässt sich die Same Origin Policy unterlaufen, es können sowohl die History als auch Websites anderer Domains ausgespäht werden. So kann zum Beispiel im Quelltext einer anderen Website gezielt nach CSRF-Token oder ähnlichen für einen Angreifer interessanten Informationen gesucht werden.
Beim Canvas-Fingerprinting wird ausgenutzt, dass sich beim Rendern eines vorgegebenen Texts vom Browser abhängige minimale Unterschiede ergeben, aus denen sich ein Fingerprint des Browsers errechnen lässt. Und daran kann dann der Benutzer (wieder)erkannt werden.
Kapitel 3: Neue Angriffe in JavaScript
JavaScript erlaubt einige sehr gefährliche Angriffe. Um so wichtiger ist es, sich vor diesen zu schützen. Dabei ist "Keine Schwachstellen haben" schon mal deutlich mehr als die sprichwörtliche "halbe Miete", und die Content Security Policy hilft zusätzlich bei der Abwehr einer ganzen Reihe von Angriffen. Zwar nicht vor allem, aber das ist auch gar nicht vorgesehen. Die CSP ist eher eine "Mitigation" wie ASLR und DEP, sie erschwert die Ausnutzung von Schwachstellen so weit, dass die Cyberkriminellen hoffentlich aufgeben und sich leichtere Ziele suchen.
Betrachten wir ein ganz einfaches Beispiel, den CSP-Header
Content-Security-Policy: script-src 'self'
durch den festgelegt wird, dass Skripte nur vom eigenen Server nachgeladen
werden können. Ein Angreifer muss also seinen gesamten Schadcode auf
diesen Server praktizieren oder im Fall einer reflektierten
XSS-Schachstelle über den betroffenen Parameter einschleusen. Ein
deutlich einfacher einzuschleusendes Skript -Tag zum Laden einer
JavaScript-Datei von seinem eigenen Server bringt ihn nicht ans Ziel, da
das Laden dieses Skripts durch die CSP verhindert wird. Und das erschwert
den Angriff schon deutlich.
Links und Literaturverweise
Kapitel 1: JavaScript in Angreiferhand
- [1] Amit Klein: "DOM Based Cross Site Scripting or XSS of the Third Kind"
- [2] OWASP: ESAPI (OWASP Enterprise Security API)
- [3] OWASP: DOM based XSS Prevention Cheat Sheet
- [4] Artur Janc; 28C3: "Rootkits in your Web application"
- [5] Carsten Eilers: "Rootkits - Schadsoftware im System"
- [6] Phil Purviance, Joshua Brashars; Black Hat USA 2012: "Blended Threats and JavaScript: A Plan for Permanent Network Compromise"
- [7] Robert McArdle; TrendLabs Security Intelligence Blog: "HTML5 – The Ugly"
- [8] Jeremiah Grossman, Matt Johansen; Black Hat USA 2013: "Million Browser Botnet"
- [9] Carsten Eilers: "Drive-by-Infektionen - Gefahren drohen überall"
- [10] Marc Blanchou; Black Hat Europe 2013: "Harnessing GP2Us Building Better Browser Based Botnets"
- [11] Chema Alonso, Manu "The Sur"; Black Hat USA 2012: "Owning Bad Guys {& Mafia} with JavaScript Botnets"
- [12] BeEF - The Browser Exploitation Framework Project
- [13] joostbijl; Fox-IT International blog: "Malicious advertisements served via Yahoo"
Kapitel 2: HTML5-Grafikfunktionen gefährden Sicherheit und Privatsphäre
- [1] Carsten Eilers: "Die dunkle Seite des neuen Webstandards"; PHP Magazin 3.2012
- [2] Carsten Eilers: "HTML5, aber sicher!"; PHP Magazin 4.2012
- [3] Paul Stone; Black Hat USA 2013: "Pixel Perfect Timing Attacks with HTML5"
- [4] W3C: "Timing control for script-based animations", W3C Candidate Recommendation 31 October 2013
- [5] W3C: "Web Style Sheets - CSS tips & tricks: Text shadows"
- [6] W3C: "Filter Effects Module Level 1"
- [7] W3C: "Scalable Vector Graphics (SVG) 1.1 (Second Edition)" - "15 Filter Effects"
- [8] Context Information Security: "WebGL - A New Dimension for Browser Exploitation"
- [9] Robert Kotcher, Yutong Pei, Pranjal Jumde, Collin Jackson; 20th ACM Conference on Computer and Communications Security: "Cross-Origin Pixel Stealing: Timing Attacks Using CSS Filters" (alternativ via archive.org als PDF)
- [10] Carsten Eilers: "Clickjacking-Angriffe verhindern - der aktuelle Stand der Dinge"
- [11] Keaton Mowery, Hovav Shacham: "Pixel Perfect: Fingerprinting Canvas in HTML5"
- [12] Gunes Acar, Christian Eubank, Steven Englehardt, Marc Juarez, Arvind Narayanan, Claudia Diaz: "The Web never forgets: Persistent tracking mechanisms in the wild"
- [13] Valentin Vasilyev: Valve/fingerprintjs
- [14] Valentin Vasilyev: "Anonymous Browser Fingerprinting"
- [15] Valentin Vasilyev: Valve/fingerprintjs / fingerprint.js
Kapitel 3: Neue Angriffe in JavaScript
- [1] Carsten Eilers: "HTML5 Security - SVG und Resident XSS"
- [2] Rennie deGraaf; Black Hat USA 2014: "SVG: Exploiting Browsers without Image Parsing Bugs"
- [3] Carsten Eilers; International PHP Conference 2009, Spring Edition: ""XSS-Schwachstelle kompromittiert Server" - Ungewöhnliche Exploits näher betrachtet"
- [4] Hans-Michael Varbaek; Hack in the Box Amsterdam 2014: "XSSing Your Way to Shell"
- [5] Ahamed Nafeez; Hack in the Box Amsterdam 2014: "JS Suicide: Using Javascript Security Features to Kill JS Security"
- [6] Jeremiah Grossman, Matt Johansen; Black Hat USA 2013: "Million Browser Botnet"
- [7] Carsten Eilers: "Der Angriff der Clickjacking-Würmer, "Likejacking" und "Buttonjacking""
- [8] Carsten Eilers: "Drive-by-Infektionen - Gefahren drohen überall"
- [9] Carsten Eilers: "Drive-by-Infektionen durch SQL-Injection vorbereitet"
- [10] Carsten Eilers: "Drive-by-Infektionen über präparierte Werbung"
- [11] OWASP Enterprise Security API (ESAPI)
- [12] OWASP ESAPI4JS
- [13] Carsten Eilers: "Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 1"
- [14] W3C: Content Security Policy 1.0
- [15] Carsten Eilers: "Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 2"
- [16] Carsten Eilers: "Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 3"
- [17] Carsten Eilers: "Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 4"
Trackbacks
Dipl.-Inform. Carsten Eilers am : XSS-Angriffe, Teil 4: Ein Blick in die History, und dann auf ins LAN!
Vorschau anzeigen