JavaScript Security: Sicherheit im Webbrowser
()
About this ebook
Read more from Carsten Eilers
shortcuts iOS Security: Sichere Apps für iPhone und iPad Rating: 0 out of 5 stars0 ratings
Related to JavaScript Security
Titles in the series (100)
Einstieg in Google Go Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Rating: 0 out of 5 stars0 ratingsQualität in IT-Architekturen: Strategie und Planung Rating: 0 out of 5 stars0 ratingsJava EE Security Rating: 0 out of 5 stars0 ratingsSpring: Vier Perspektiven auf Framework und Ökosystem Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5JavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsÜberzeugende Präsentationen: Konzeption, Technik und Design Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsJavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsAmazon Web Services für .NET Entwickler Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsGeolocation mit PHP: Foursquare-API, Google Places & Qype Rating: 0 out of 5 stars0 ratingsIT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsAlgorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsBPM: Strategien und Anwendungsfälle Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsTitanium Mobile: Multi Platform Apps mit JavaScript Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratingsjQuery Mobile - Basics: Basics Rating: 0 out of 5 stars0 ratingsUX Design für Tablet-Websites: Ein Überblick Rating: 0 out of 5 stars0 ratingsBig Data: Executive Briefing Rating: 0 out of 5 stars0 ratingsSharePoint-Entwicklung für Einsteiger Rating: 0 out of 5 stars0 ratingsJava EE 7: Ein Ausblick Rating: 0 out of 5 stars0 ratings
Related ebooks
Websecurity: Angriffe mit SSRF, CSRF und XML Rating: 0 out of 5 stars0 ratingsC# 10 – kurz & gut Rating: 0 out of 5 stars0 ratingsHacken mit Kali-Linux: Schnelleinstieg für Anfänger Rating: 0 out of 5 stars0 ratingsCross-Plattform-Entwicklung mit HTML und JavaScript Rating: 0 out of 5 stars0 ratingsAngriffsziel UI: Benutzeraktionen, Passwörter und Clickjacking Rating: 0 out of 5 stars0 ratingsIch Hacker – Du Script-Kiddy: Hacking und Cracking Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsNext Level JavaScript: Schlagworte Rating: 0 out of 5 stars0 ratingsSingle-Page-Web-Apps: JavaScript im Einsatz: Webseiten erstellen mit AngularJS, Meteor und jQuery Mobile Rating: 0 out of 5 stars0 ratingsASP.NET Core: Eine Einführung Rating: 0 out of 5 stars0 ratingsSoftwarearchitektur für Dummies Rating: 0 out of 5 stars0 ratingsProgressive Web-Apps: Offlinefähige Web-Anwendungen mit nativen Qualitäten Rating: 0 out of 5 stars0 ratingsWebsecurity: Jahresrückblick Rating: 0 out of 5 stars0 ratingsSECURITY AWARENESS: Leitfaden zur IT-Sicherheit für Anwender Rating: 0 out of 5 stars0 ratingsJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Rating: 0 out of 5 stars0 ratingsEinfach Verschlüsseln Rating: 0 out of 5 stars0 ratingsVue.js kurz & gut Rating: 0 out of 5 stars0 ratingsWebseiten hacken: Schnelleinstieg inkl. Entwicklung eigener Angriffsscripte Rating: 0 out of 5 stars0 ratingsBug Bounty Hunting mit Kali-Linux oder Parrot Security OS: Hacking als Hautberuf oder Nebenjob Rating: 3 out of 5 stars3/5Software entwickeln mit C#, WPF und dem MVVM-Konzept Rating: 0 out of 5 stars0 ratingsDie Serverwelt von Node.js Rating: 0 out of 5 stars0 ratingsSharePoint Kompendium - Bd. 16 Rating: 0 out of 5 stars0 ratingsMQTT im IoT: Einstieg in die M2M-Kommunikation Rating: 0 out of 5 stars0 ratingsEIGENE Blockchain und Smart Contract's erstellen: Für Anfänger geeignet, Schritt für Schritt Erklärung Rating: 0 out of 5 stars0 ratingsDie Effizienz von Security Monitoring und Log Management: IT-Systeme und -Dienste unter Beschuss Rating: 0 out of 5 stars0 ratingsNichts ist sicher: Tricks und Techniken von Cyberkriminellen verstehen und sich schützen Rating: 5 out of 5 stars5/5HTML5, JavaScript und jQuery: Der Crashkurs für Softwareentwickler Rating: 2 out of 5 stars2/5
Security For You
Hacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsNichts ist sicher: Tricks und Techniken von Cyberkriminellen verstehen und sich schützen Rating: 5 out of 5 stars5/5Cybercrime: Wie Sie Gefahren im Internet erkennen und sich schützen Rating: 0 out of 5 stars0 ratingsBug Bounty Hunting mit Kali-Linux oder Parrot Security OS: Hacking als Hautberuf oder Nebenjob Rating: 3 out of 5 stars3/5IT-Sicherheit ist sexy!: Argumente für Investitionen in IT-Sicherheit Rating: 0 out of 5 stars0 ratingsIch Hacker – Du Script-Kiddy: Hacking und Cracking Rating: 0 out of 5 stars0 ratingsEinführung ins Darknet: Darknet ABC Rating: 0 out of 5 stars0 ratingsHeim-Netzwerke: Netzwerktechnik • High-Speed-Internet • Arbeiten im Heimnetz Rating: 0 out of 5 stars0 ratingsWebseiten hacken: Schnelleinstieg inkl. Entwicklung eigener Angriffsscripte Rating: 0 out of 5 stars0 ratingsDie Burg IT-Sicherheit: IT-Sicherheit Stein auf Stein Rating: 0 out of 5 stars0 ratingsResilience: Wie Netflix sein System schützt Rating: 0 out of 5 stars0 ratingsAndroid Security: Von Fake-Apps, Trojanern und Spy Phones Rating: 0 out of 5 stars0 ratingsKochbuch ISMS: Informationssicherheits-Management nach ISO 27001 Rating: 0 out of 5 stars0 ratingsFRITZ!Box: Konfigurieren - Tunen - Absichern Rating: 0 out of 5 stars0 ratingsHeim-Netzwerke Tipps & Tools: Netzwerkverbindungen • Zentraler Datenspeicher • Mediastreaming Rating: 0 out of 5 stars0 ratingsWeg ins Darknet und Im Darknet Rating: 0 out of 5 stars0 ratingsISO27001/ISO27002: Ein Taschenführer Rating: 0 out of 5 stars0 ratingsNeun Schritte zum Erfolg: Ein Überblick zur Implementierung der Norm ISO 27001:2013 Rating: 0 out of 5 stars0 ratingsVersteckte Botschaften (TELEPOLIS): Die faszinierende Geschichte der Steganografie Rating: 5 out of 5 stars5/5SECURITY AWARENESS: Leitfaden zur IT-Sicherheit für Anwender Rating: 0 out of 5 stars0 ratingsKosten der IT-Sicherheit: Ein Ausgangspunkt für weitergehende Untersuchungen Rating: 0 out of 5 stars0 ratingsHeimnetzwerke XL-Edition: DSL/WLAN/PC/Handy/Drucker & Co. Rating: 0 out of 5 stars0 ratingsÜberwachungswahn: ...wie umgehen ?? Rating: 0 out of 5 stars0 ratingssichere Informationstechnologie: auf der Suche nach robusten Organisationsformen: Cyber-Security, Datenschutz, Managementsysteme Rating: 0 out of 5 stars0 ratings
Reviews for JavaScript Security
0 ratings0 reviews
Book preview
JavaScript Security - Carsten Eilers
GmbH
1 JavaScript in Angreiferhand
JavaScript-Code kann so wie jedes andere Computerprogramm auch Schwachstellen enthalten, und so wie in jeder anderen Programmiersprache können auch in JavaScript Schadprogramme geschrieben werden. Beide Möglichkeiten werden natürlich von Angreifern ausgenutzt – warum sollten sie auch darauf verzichten?
Erst einmal gilt wie fast überall: Alles, was Sie als Entwickler zum Vorteil der Benutzer verwenden können, können Angreifer auf die eine oder andere Weise zu ihrem Nachteil nutzen. Die möglichen Angriffe sind so umfangreich, dass sie den Platz für dieses Kapitel locker sprengen. Ich habe mich daher auf einen einzelnen Aspekt beschränkt: Schadcode im Webbrowser.
Los geht es mit einem altbekannten Problem, quasi der Wurzel allen Übels und die erste Möglichkeit, Schadcode in den Webbrowser einzuschleusen: Cross-site Scripting, kurz XSS. Dessen serverbasierte Varianten kennen Sie sicherlich:
Beim reflektierten XSS wird der Schadcode an die Webanwendung gesendet und von dieser in der erzeugten Webseite an den Client zurückgeschickt. Für den Angriff ist der Aufruf eines präparierten URL oder das Absenden eines präparierten Formulars nötig, die den XSS-Schadcode enthalten.
Beim auch JavaScript-Injection genannten persistenten XSS wird der Schadcode auf dem Webserver gespeichert, z. B. in einem Gästebucheintrag oder irgendeiner anderen Form von User-generated Content, und danach bei jedem Aufruf der betroffenen Seite ausgeliefert. Für den Angriff ist also nicht der Aufruf eines präparierten URL oder das Absenden eines präparierten Formulars nötig, sondern er erfolgt automatisch bei jedem Aufruf der Seite mit dem eingeschleusten Schadcode. Wie der Benutzer diese Seite erreicht, ist egal.
Meist werden im Rahmen von XSS-Angriffen Session-Cookies ausgespäht, falsche Informationen eingeschleust oder es wird Schadsoftware durch Drive-by-Infektionen verbreitet.
Wie Sie diese herkömmlichen XSS-Angriffe verhindern, wissen Sie sicher. Die Benutzereingaben müssen auf dem Server geprüft werden. Eingeschleuster HTML- oder JavaScript-Code muss von der Webanwendung entweder ausgefiltert oder z. B. durch Umkodieren der Zeichen < und > in die entsprechenden HTML-Entities < und > neutralisiert werden. Eigentlich ist das so selbstverständlich, dass es längst keine XSS-Schwachstellen mehr geben dürfte. Trotzdem tauchen sie immer noch auf, manchmal sogar in Form des absoluten Klassikers „XSS über den Suchbegriff der Suchfunktion". Das ist natürlich äußerst schlecht, denn inzwischen sind viel weitreichendere Angriffe im Umlauf.
DOM-basiertes XSS
Schon seit 2005 gibt es eine weitere Form von XSS-Angriffen, die in Zeiten von AJAX (ein auch schon wieder aus der Mode gekommenes Buzzword) und erst recht HTML5 und den damit immer mächtigeren Webclients zunehmend an Bedeutung gewinnt: das DOM-basierte oder lokale XSS [1]. Der Schadcode wird dabei durch eine Schwachstelle im clientseitigen Skriptcode eingeschleust, also über eine Funktion innerhalb der betroffenen Seite, die die ihr übergebenen Daten ungeprüft ausgibt. Für den Angriff ist wie beim reflektierten XSS der Aufruf eines präparierten URL nötig, der den Schadcode enthält.
DOM-basiertes XSS unterscheidet sich in einem Punkt vom reflektierten oder persistenten XSS: Da der Schadcode zu keiner Zeit Bestandteil der vom Server gelieferten „rohen" HTML-Seite ist, kann er von der Webanwendung, einem IDS/IPS oder einer Web Application Firewall darin auch nicht erkannt werden. Nur die im Request mitgelieferten Query-Daten verraten den Angriff. Und das kann unter Umständen auch noch umgangen werden kann, etwa indem der Schadcode als Fragmentbezeichner getarnt wird:
http://www.beispiel.example/index.html#parameter=
Das #-Zeichen markiert den darauffolgenden Rest bekanntlich als Fragmentbezeichner. Dieser ist nicht Teil des URI, sondern enthält Referenzierungsinformationen, die vom Browser erst nach dem Empfang der Ressource lokal ausgewertet werden. Die meisten Browser senden den Fragmentbezeichner daher nicht an den Server, der dadurch nur
http://www.beispiel.example/index.html
zu sehen bekommt.
Wann ist DOM-basiertes XSS möglich?
Eine Webseite ist immer dann für DOM-basiertes XSS anfällig, wenn sie Daten aus vom Angreifer kontrollierbaren Objekten wie z. B. document.location, document.URL oder document.referrer ohne Prüfung auf eingeschleusten Code und ohne passende Umkodierung verwendet. Das klassische Beispiel ist eine Webseite, die den Besucher begrüßt (Listing 1.1, nach [1]).
Hallo
var pos=document.URL.indexOf(name
)+5;
document.write(document.URLsubstring(pos,document.URL.length));
,
Willkommen auf unserer Website ...
Listing 1.1
Beim Aufruf dieser Seite wird der Benutzer mit seinem Namen begrüßt, etwa beim Aufruf von
http://www.beispiel.example/index.html?name=Adam
mit
Hallo Adam,
willkommen auf unserer Website