Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

JavaScript Security: Sicherheit im Webbrowser
JavaScript Security: Sicherheit im Webbrowser
JavaScript Security: Sicherheit im Webbrowser
Ebook76 pages44 minutes

JavaScript Security: Sicherheit im Webbrowser

Rating: 0 out of 5 stars

()

Read preview

About this ebook

Prinzipiell kann jedes Computerprogramm Schwachstellen enthalten. Auch JavaScript- und HTML5-Code stellen hier keine Ausnahme dar. Im ersten Kapitel dieses shortcuts werden XSS und browserbasierte Botnets genauer betrachtet. Kapitel 2 geht auf die Sicherheitssituation von HTML5 ein. Dabei beleuchtet der Autor die Gefahrenpotenziale der neuen Grafikfunktionen der Auszeichnungssprache. Kapitel 3 beschäftigt sich mit neuen und verbesserten Angriffen, die auf Sicherheitskonferenzen vorgestellt wurden. Der Autor beschreibt, wie JavaScript-basierte Schadsoftware in den Browser gelangen kann und geht auf den Umgang mit den Sicherheitsangriffen ein. Hierzu werden das OWASP Enterprise Security API sowie die Content Service Policy zur Abwehr von XSS erläutert.
LanguageDeutsch
Release dateJan 28, 2015
ISBN9783868025316
JavaScript Security: Sicherheit im Webbrowser

Read more from Carsten Eilers

Related to JavaScript Security

Titles in the series (100)

View More

Related ebooks

Security For You

View More

Related articles

Reviews for JavaScript Security

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    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 Java­Script 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

    Enjoying the preview?
    Page 1 of 1