JavaScript Security: Sicherheit im Webbrowser
Von Carsten Eilers
()
Über dieses E-Book
Mehr von Carsten Eilers lesen
shortcuts iOS Security: Sichere Apps für iPhone und iPad Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnlich wie JavaScript Security
Titel in dieser Serie (100)
Zend Framework 2: Für Einsteiger und Umsteiger Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Bewertung: 0 von 5 Sternen0 BewertungenIT Wissensmanagement: Theorie und Praxis Bewertung: 0 von 5 Sternen0 BewertungenHTML5 Security Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in Google Go Bewertung: 0 von 5 Sternen0 BewertungenJavaScript auf dem Server Bewertung: 0 von 5 Sternen0 BewertungenNFC: Near Field Communication für Android-Entwickler Bewertung: 5 von 5 Sternen5/5HTML5 für Mobile Web Bewertung: 0 von 5 Sternen0 BewertungenSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Bewertung: 0 von 5 Sternen0 BewertungenUser Experience Testing 3.0: Status Quo, Entwicklung und Trends Bewertung: 0 von 5 Sternen0 BewertungenAlgorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Bewertung: 0 von 5 Sternen0 BewertungenJava EE Security Bewertung: 0 von 5 Sternen0 BewertungenUX Design für Tablet-Websites: Ein Überblick Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenCL Bewertung: 0 von 5 Sternen0 BewertungenGeolocation mit PHP: Foursquare-API, Google Places & Qype Bewertung: 0 von 5 Sternen0 BewertungenADF - Mobile Apps entwickeln und Swing ablösen: Mobile Apps entwickeln und Swing ablösen Bewertung: 0 von 5 Sternen0 BewertungenÜberzeugende Präsentationen: Konzeption, Technik und Design Bewertung: 0 von 5 Sternen0 BewertungenApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Bewertung: 0 von 5 Sternen0 BewertungenTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Bewertung: 0 von 5 Sternen0 BewertungenQualitätssicherung mit JavaScript und PHP Bewertung: 0 von 5 Sternen0 BewertungenMobile Business: Was Entscheider morgen wissen müssen Bewertung: 0 von 5 Sternen0 BewertungenJava 7: Fork-Join-Framework und Phaser Bewertung: 0 von 5 Sternen0 BewertungenNutzeraspekte in Suchmaschinen: Komponenten für eine gelungene Usability-Gestaltung Bewertung: 0 von 5 Sternen0 BewertungenQualität in IT-Architekturen: Strategie und Planung Bewertung: 0 von 5 Sternen0 BewertungenAmazon Web Services für .NET Entwickler Bewertung: 0 von 5 Sternen0 BewertungenSharePoint-Entwicklung für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenNintex Workflow: Konzepte und Strategien für leistungsfähige SharePoint-Workflows Bewertung: 0 von 5 Sternen0 BewertungenJava EE 7: Ein Ausblick Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnliche E-Books
Websecurity: Angriffe mit SSRF, CSRF und XML Bewertung: 0 von 5 Sternen0 BewertungenC# 10 – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenHacking und Bug Hunting: Wie man Softwarefehler aufspürt und damit Geld verdient – ein Blick über die Schulter eines erfolgreichen Bug Hunters Bewertung: 0 von 5 Sternen0 BewertungenHacken mit Kali-Linux: Schnelleinstieg für Anfänger Bewertung: 0 von 5 Sternen0 BewertungenCross-Plattform-Entwicklung mit HTML und JavaScript Bewertung: 0 von 5 Sternen0 BewertungenAngriffsziel UI: Benutzeraktionen, Passwörter und Clickjacking Bewertung: 0 von 5 Sternen0 BewertungenIch Hacker – Du Script-Kiddy: Hacking und Cracking Bewertung: 0 von 5 Sternen0 BewertungenHTML5 Security Bewertung: 0 von 5 Sternen0 BewertungenNext Level JavaScript: Schlagworte Bewertung: 0 von 5 Sternen0 BewertungenServer-Infrastrukturen mit Microsoft Windows Server Technologien: Alle Themen für das Microsoft Seminar und die Zertifizierungsprüfung MOC 20413 Bewertung: 0 von 5 Sternen0 BewertungenSingle-Page-Web-Apps: JavaScript im Einsatz: Webseiten erstellen mit AngularJS, Meteor und jQuery Mobile Bewertung: 0 von 5 Sternen0 BewertungenASP.NET Core: Eine Einführung Bewertung: 0 von 5 Sternen0 BewertungenSoftwarearchitektur für Dummies Bewertung: 0 von 5 Sternen0 BewertungenSchritt für Schritt: Installation von Windows 10 im Netzwerk: Schnell und effektiv mit den Windows Server Bereitstellungsdiensten. eBook Edition Bewertung: 0 von 5 Sternen0 BewertungenProgressive Web-Apps: Offlinefähige Web-Anwendungen mit nativen Qualitäten Bewertung: 0 von 5 Sternen0 BewertungenWebsecurity: Jahresrückblick Bewertung: 0 von 5 Sternen0 BewertungenSECURITY AWARENESS: Leitfaden zur IT-Sicherheit für Anwender Bewertung: 0 von 5 Sternen0 BewertungenJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenEinfach Verschlüsseln Bewertung: 0 von 5 Sternen0 BewertungenVue.js kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenWebseiten hacken: Schnelleinstieg inkl. Entwicklung eigener Angriffsscripte Bewertung: 0 von 5 Sternen0 BewertungenBug Bounty Hunting mit Kali-Linux oder Parrot Security OS: Hacking als Hautberuf oder Nebenjob Bewertung: 3 von 5 Sternen3/5Software entwickeln mit C#, WPF und dem MVVM-Konzept Bewertung: 0 von 5 Sternen0 BewertungenDie Serverwelt von Node.js Bewertung: 0 von 5 Sternen0 BewertungenSharePoint Kompendium - Bd. 16 Bewertung: 0 von 5 Sternen0 BewertungenMQTT im IoT: Einstieg in die M2M-Kommunikation Bewertung: 0 von 5 Sternen0 BewertungenEIGENE Blockchain und Smart Contract's erstellen: Für Anfänger geeignet, Schritt für Schritt Erklärung Bewertung: 0 von 5 Sternen0 BewertungenDie Effizienz von Security Monitoring und Log Management: IT-Systeme und -Dienste unter Beschuss Bewertung: 0 von 5 Sternen0 BewertungenNichts ist sicher: Tricks und Techniken von Cyberkriminellen verstehen und sich schützen Bewertung: 5 von 5 Sternen5/5HTML5, JavaScript und jQuery: Der Crashkurs für Softwareentwickler Bewertung: 2 von 5 Sternen2/5
Sicherheit für Sie
Cybercrime: Wie Sie Gefahren im Internet erkennen und sich schützen Bewertung: 0 von 5 Sternen0 BewertungenNichts ist sicher: Tricks und Techniken von Cyberkriminellen verstehen und sich schützen Bewertung: 5 von 5 Sternen5/5Heim-Netzwerke: Netzwerktechnik • High-Speed-Internet • Arbeiten im Heimnetz Bewertung: 0 von 5 Sternen0 BewertungenHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Bewertung: 0 von 5 Sternen0 BewertungenIT-Sicherheit ist sexy!: Argumente für Investitionen in IT-Sicherheit Bewertung: 0 von 5 Sternen0 BewertungenAndroid Security: Von Fake-Apps, Trojanern und Spy Phones Bewertung: 0 von 5 Sternen0 BewertungenWebseiten hacken: Schnelleinstieg inkl. Entwicklung eigener Angriffsscripte Bewertung: 0 von 5 Sternen0 BewertungenEinführung ins Darknet: Darknet ABC Bewertung: 0 von 5 Sternen0 BewertungenDie Burg IT-Sicherheit: IT-Sicherheit Stein auf Stein Bewertung: 0 von 5 Sternen0 BewertungenHeim-Netzwerke Tipps & Tools: Netzwerkverbindungen • Zentraler Datenspeicher • Mediastreaming Bewertung: 0 von 5 Sternen0 BewertungenBug Bounty Hunting mit Kali-Linux oder Parrot Security OS: Hacking als Hautberuf oder Nebenjob Bewertung: 3 von 5 Sternen3/5Ich Hacker – Du Script-Kiddy: Hacking und Cracking Bewertung: 0 von 5 Sternen0 BewertungenResilience: Wie Netflix sein System schützt Bewertung: 0 von 5 Sternen0 BewertungenISO27001/ISO27002: Ein Taschenführer Bewertung: 0 von 5 Sternen0 BewertungenKochbuch ISMS: Informationssicherheits-Management nach ISO 27001 Bewertung: 0 von 5 Sternen0 BewertungenFRITZ!Box: Konfigurieren - Tunen - Absichern Bewertung: 0 von 5 Sternen0 BewertungenÜberwachungswahn: ...wie umgehen ?? Bewertung: 0 von 5 Sternen0 BewertungenWeg ins Darknet und Im Darknet Bewertung: 0 von 5 Sternen0 BewertungenNeun Schritte zum Erfolg: Ein Überblick zur Implementierung der Norm ISO 27001:2013 Bewertung: 0 von 5 Sternen0 BewertungenSECURITY AWARENESS: Leitfaden zur IT-Sicherheit für Anwender Bewertung: 0 von 5 Sternen0 BewertungenVersteckte Botschaften (TELEPOLIS): Die faszinierende Geschichte der Steganografie Bewertung: 5 von 5 Sternen5/5Heimnetzwerke XL-Edition: DSL/WLAN/PC/Handy/Drucker & Co. Bewertung: 0 von 5 Sternen0 Bewertungensichere Informationstechnologie: auf der Suche nach robusten Organisationsformen: Cyber-Security, Datenschutz, Managementsysteme Bewertung: 0 von 5 Sternen0 BewertungenKosten der IT-Sicherheit: Ein Ausgangspunkt für weitergehende Untersuchungen Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für JavaScript Security
0 Bewertungen0 Rezensionen
Buchvorschau
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