Firefox-Kompendium: Warum ein JavaScript-Blocker notwendig ist

1. JavaScriptJavaScript

Die Grundlage des WWWs ist die Hyper-Text Markup Language (HTML), die es erlaubt, digitale Dokumente (logisch) zu strukturieren. Sofern eine Webseite einmal im Browser geladen wurde, ist sie durch die verwendete HTML-Technik, grundsätzlich nicht mehr veränderbar und somit rein statisch. Um ein wenig mehr Flexibilität zu erreichen, wurde daher Mitte der 90er Jahre die Skriptsprache JavaScript entworfen, die es erlaubt, HTML-Dokumente während der Anzeige im Browser dynamisch zu verändern.

Zu den typischen Anwendungsgebieten von JavaScript zählen deshalb unter anderem die Datenvalidierung von Formulareingaben, die Anzeige von Dialogfenstern oder die Anzeige von Suchvorschlägen während der Eingabe. Doch es gibt auch Schattenseiten: Für die Werbe- und Trackingbranche ist JavaScript sowas wie der heilige Gral, um den Nutzer seitenübergreifend zu tracken und anhand von diversen Merkmalen wiederzuerkennen. Folgendes sollte sich jeder vor Augen führen: JavaScript ermöglicht die Erfassung von Informationen, wie die verwendete Bildschirmauflösung, Farbtiefe, etwaige im Browser installierte Plugins oder Schriftarten. In der Studie »(Cross-)Browser Fingerprinting via OS and Hardware Level Features« wird aufgezeigt, dass sich über solche Merkmale 99,24 % der Besucher wiedererkennen lassen. Damit nicht genug, auch die Sicherheit von JavaScript wird aufgrund der mannigfaltigen Funktionen und Möglichkeiten immer wieder kontrovers diskutiert. Dieses insbesondere deshalb, da die meisten der in Browsern bekannt gewordenen Sicherheitslücken oftmals eng mit JavaScript und deren Funktionalität verknüpft sind.

Im vorliegenden Begleitartikel zur Serie »Firefox-Kompendium« möchte ich euch die Risiken für Sicherheit und Privatsphäre aufzeigen, die mit der Einbindung von JavaScript-Ressourcen in den Kontext einer Webseite einhergehen. Es soll euch vor Augen führen, weshalb ein JavaScript-Blocker wie NoScript dringend notwendig ist.

Dieser Beitrag ist Teil einer Artikelserie:

2. Warum ein JavaScript-Blocker notwendig ist

Bevor wir uns im nachfolgenden Teil der Artikelserie »Firefox-Kompendium« mit der Installation und Konfiguration von NoScript befassen, möchte ich euch kurz anhand eines Beispiels aufzeigen, wie Webseitenbetreiber mit der Einbindung von (externem) JavaScript sowohl eure Sicherheit als auch eure Privatsphäre unbedacht aufs Spiel setzen.

2.1 emetriq GmbH | xplosion interactive GmbH

Die emetriq GmbH ist ein Tochterunternehmen der Deutschen Telekom, das seit August 2015 tätig ist. Dahinter steckt eine strategische Partnerschaft zwischen AdAudience und der xplosion interactive GmbH. Das Ziel dieser Protagonisten ist der Aufbau des »größten deutschen Datenpools«, der Advertisern, Agenturen und Vermarktern zur Verfügung steht.

Die Partner von emetriq sind unter dem Dach der Intelligent Data Alliance (ADAudience) zusammengefasst:

  • G+J Electronic Media Sales (G+J e|MS)
  • Burda Forward Advertising
  • IP Deutschland
  • iq digital media marketing
  • Media Impact
  • SevenOne Media
  • Spiegel Media
  • BurdaForward
  • Interactive Media (Deutsche Telekom Gruppe)

Hinweis

Es ist möglich, dass die Partner wechseln. Aufgelistete Partner sind zum Lesezeitpunkt womöglich nicht mehr dabei oder neue Partner sind hinzugekommen.

2.2 Der emetriq- | xplosion-Tracker

Da zu den Partnern der Intelligent Data Alliance zahlreiche Verlagshäuser zählen, ist es kaum verwunderlich, dass wir den emetriq-Tracker (emetriq.de) auf zahlreichen News-Portalen antreffen:

  • Zeit Online
  • Spiegel Online
  • Süddeutsche
  • Handelsblatt
  • Kicker
  • […]

Beim Besuch eines der genannten News-Portale wird der Browser zum Laden von diversen JavaScripten aufgefordert. Dazu zählt unter anderem auch JavaScript von emetriq bzw. der xplosion interactive GmbH:

  • emetriq.de
  • xplosion.de

Das nachgeladene JavaScript (http://ups.xplosion.de/loader/97578/default.js) übermittelt anschließend bei einem Besuch auf Zeit Online folgende Informationen an den Server »ups.xplosion.de«:

GET /data?title=ZEIT%20ONLINE%20%7C%20Nachrichten%2C%20Hintergr%C3%BCnde%20und%20Debatten&hostSiteUrl=http%3A%2F%2Fwww.zeit.de%2Findex&userAgent=5.0%20(X11)&userLang=en-US&color=24&os=Linux%20x86_64&timezone=-2&screen=1053x1920&event_id=page_view&_sid=97578&_ver=0.1.13&_seg=jsonp&_=893025804693 HTTP/1.1
Host: ups.xplosion.de
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://www.zeit.de/index
DNT: 1
Connection: close

Diesem HTTP-Request von unserem Browser lässt sich folgendes entnehmen:

  • Titel: Der Titel (title) einer Webseite, hier »ZEIT ONLINE | Nachrichten, Hintergründe und Debatten«.
  • Besuchte Seite: Die besuchte URL / Link (hostSiteUrl) einer Webseite, hier »http://www.zeit.de/index«.
  • User-Agent: Der User-Agent (userAgent) des Browsers, hier »Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0«. Damit lässt sich im Normalfall neben dem verwendeten Betriebssystem eindeutig bestimmen, ob ein Nutzer einen Firefox, Chrome, Safari oder Internet Explorer nutzt.
  • Sprache: Die im Browser eingestellte Sprache (userLang), hier »en-US«.
  • Farbtiefe: Die Bit-Farbtiefe (color) des Monitors bzw. Browser-Fensters, hier »24« Bit.
  • Betriebssystem: Das verwendete Betriebssystem (os), hier »Linux x86_64«.
  • Zeitzone: Die Zeitzone (timezone), hier »-2«.
  • Fenstergröße: Die Fenstergröße (screen) des Browser-Fensters, hier »1053×1920« Pixel.
  • Aktion: Eine Aktion, die der Nutzer ausgeführt hat. In diesem Fall die Anzeige / Darstellung einer Seite, weshalb die Variable »event_id« vermutlich den Inhalt »page_view« hat.
  • Weitere Informationen:
    • sid = 97578
    • ver = 0.1.13 (Vermutlich die Versionsnummer des JavaScript-Trackers)
    • seg = jsonp (fixer Wert)
    • Eine Folge von Ziffern, die nicht eindeutig bestimmt werden konnte, hier »893025804693«. Eventuell handelt es sich um eine Kennung.

Die Kombination aus User-Agent, eingestellter Sprache, verwendetes Betriebssystem, die Zeitzone und weiteren Merkmalen lässt die eindeutige Wiedererkennung eines Browsers bzw. Nutzers zu einem hohen Maß zu – sozusagen eine Art Fingerabdruck. In der Studie »(Cross-)Browser Fingerprinting via OS and Hardware Level Features« wird aufgezeigt, dass sich über solche Merkmale 99,24 % der Besucher wiedererkennen lassen.

Das bedeutet: emetriq kann den Nutzer bzw. Browser eindeutig auf jenen (Verlags-)Seiten wiedererkennen, auf denen der Tracker eingebunden ist. Das lässt eine genaue Analyse der angeklickten Nachrichten bzw. des Surfverhaltens zu. Es ist dabei unklar, ob nur emetriq davon Kenntnis hat, auf welchen Webseiten sich die getrackten Nutzer aufhalten oder ob die Intelligent Data Alliance ebenfalls Zugriff auf den Datenpool erhält.

Hinweis

Sowohl das Nachladen des JavaScripts als auch die Übermittlung der gesammelten Informationen erfolgt über eine unverschlüsselte Verbindung – das ist nicht mehr zeitgemäß und insbesondere hinsichtlich der Sicherheit höchst fraglich.

2.3 Kekse gibt es auch!

Als Reaktion auf die übermittelten Daten erhält der Browser wiederum ein Cookie von xplosion.de, das lokal im Browser abgelegt wird und unter anderem folgenden Inhalt hat:

Set-Cookie: pid=BSakBsa8BiUFBsfZBSf-BiUABifkBSf3WsfABifABifABfrr; Domain=.xplosion.de; Expires=Fri, 12-Apr-2019 13:36:13 GMT; Path=/

Die pid »BSakBsa8BiUFBsfZBSf-BiUABifkBSf3WsfABifABifABfrr« ist eine eindeutig vergebene Kennung aus Zahlen und Buchstaben, die bei jedem Aufruf eines Artikels auf den News-Portalen von Zeit Online, Spiegel Online oder Süddeutsche übermittelt wird. Damit kann der emetriq Tracker einen Besucher im Prinzip auf zweierlei Arten wiedererkennen:

  • Anhand des Cookies, dessen pid bei jedem Besuch einer der Verlagsseiten ausgelesen und übermittelt wird.
  • An den Merkmalen, die über das aktive JavaScript-Fingerprinting bei jedem Aufruf einer Seite ausgelesen und übermittelt werden.

Über das seitenübergreifende Tracking via (Ever-)Cookies müssen wir uns spätestens seit der Installation des Addons First Party Isolation keine Sorgen mehr machen. Das perfide Tracking via JavaScript werden wir im nachfolgenden Teil der Artikelserie  »Firefox-Kompendium« angehen und abstellen.

3. Was bedeutet das für die Privatsphäre?

Ihr fragt euch jetzt sicherlich, was emetriq mit den gesammelten Informationen anstellt. Ungefähr das: Es wird analysiert, welche Beiträge bzw. Links ein Nutzer auf den News-Portalen anklickt. Anhand dieser Informationen entsteht ein Nutzerprofil bei emetriq, die jeden Klick erfassen und sich bspw. merken, ob jemand häufig Artikel über Autos / Politik anklickt. Mit der Zeit entsteht auf Grundlage der erhobenen Daten ein aussagekräftiges Profil mit »berechenbaren« Attributen:

  • Männlich oder weiblich
  • Politische Gesinnung
  • Religionszugehörigkeit
  • Drogenkonsum (Alkohol, Zigaretten usw.)
  • Beziehung (Single, Familie usw.)
  • […]

Je länger jemand mit der eindeutigen Cookie-Kennung surft bzw. eindeutig vom JavaScript wiedererkannt wird, umso detaillierter und genauer wird sein Nutzerprofil, was letztendlich unter anderem zielgerichtetes Marketing bzw. Werbung ermöglicht. Und genau das ist es, was emetriq auch macht: Es arbeitet mit Werbenetzwerken wie The ADEX, Yieldlab oder der Adality GmbH zusammen. Aufgrund der über den Nutzer gesammelten Daten kann dann zielgerichtete bzw. interessenbezogene Werbung ausgeliefert werden.

3.1 Auch im Login-Bereich

Da solche Java-Script-Tracker gerne auch im sensiblen Login-Bereich von Webseiten integriert sind, bekommen sie unter anderem noch weitere Informationen übermittelt. In der Vergangenheit war der emetriq-Tracker im Anmeldebereich bei Zeit Online zu finden und erhielt nach einer erfolgreichen Anmeldung folgende Informationen:

GET /data?title=username%20%7C%20Profilseite%20%7C%20ZEIT%20ONLINE %20%7C%20ZEIT%20ONLINE&referrer=http%3A%2F%2Fwww.zeit.de %2Findex&hostSiteUrl=http%3A%2F%2Fcommunity.zeit.de %2Fuser&userAgent=5.0%20(X11)&userLang=de&color=24&os=Linux %20x86_64&timezone=- 2&screen=1069x1088&event_id=page_view&_sid=97578&_ver=0.1.9 &_seg=jsonp&_=323084067625 HTTP/1.1

Demnach wurde der Nutzer- bzw. Profilname (hier umbenannt in username) an »ups.xplosion.de« übermittelt. Das sind Informationen, die unter anderem auch Rückschlüsse auf reale Personen zulassen und nicht gesammelt werden sollten – schon gar nicht von einem Drittanbieter, der in den Kontext der Seite eingebunden ist.

3.2 Ein Blick in die Datenschutzerklärung

Weder in der Datenschutzerklärung von Zeit Online noch in der Datenschutzerklärung der Süddeutschen wird der Nutzer darüber informiert, dass die emetriq GmbH Daten erhebt bzw. um welche Daten es sich hierbei handelt. Nach meiner Auffassung ist die Datenschutzerklärung damit unvollständig.

Bei Spiegel Online wird die emetriq GmbH zumindest genannt. Welche Daten emetriq vom Nutzer erhebt wird allerdings lediglich kurz angerissen und ist keineswegs vollständig.

4. Was bedeutet das für die Sicherheit?

JavaScript kann sich allerdings nicht nur negativ auf die Privatsphäre beim Surfen auswirken, sondern auch auf die Sicherheit des Webservers und damit auch letzten Endes auf seine Besucher.

Mit jeder (JavaScript-)Ressource, die ein Webseitenbetreiber einbindet, geht er eine Vertrauensbeziehung mit der jeweiligen Quelle bzw. Domain ein. Das bedeutet wiederum auch, dass die eigentliche Kontrolle über die ausgelieferte Ressource allein beim Drittanbieter liegt. Wird der Drittanbieter allerdings in irgendeiner Form kompromittiert bzw. gehackt, kann das unter Umständen dazu führen, dass der Angreifer die auszuliefernde Ressource gegebenenfalls modifiziert und dass beispielsweise statt eines schadlosen ein schadhafter JavaScript-Code an den Besucher einer Webseite ausgeliefert wird:

Vertrauensbeziehung

Angenommen emetriq, das von Zeit Online mit dem Profiling der Besucher beauftragt wurde, wird kompromittiert. Die Folge: Angreifer verändern den JavaScript-Code und fügen bspw. bösartige Code-Zeilen hinzu. Sobald ein Besucher Zeit Online aufruft, wird der schadhafte JavaScript-Code vom Drittanbieter (emetriq.de) in den Kontext der eigentlich vertrauenswürdigen Webseite von Zeit Online eingebunden und anschließend vom Browser ausgeführt.

Der Kuketz-Blog ist spendenfinanziert!

Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.

Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.

Mitmachen ➡

4.1 Die Folgen

Eine böswillige Veränderung von JavaScript-Code kann unter anderem dazu missbraucht werden, um Cookies aus dem Kontext einer Webseite zu stehlen oder die Login-Daten (Benutzernamen & Passwort) abzugreifen. Für diesen Vorgang benötigt ein Angreifer noch nicht einmal Zugang zur Webseite von Zeit Online, sondern einzig und alleine zum JavaScript, das er entweder selbst kontrolliert oder entsprechend auf dem Server von emetriq modifiziert hat.

Fatal an dieser ganzen Thematik ist, dass Zeit Online praktisch keine Chance hat, von dieser Veränderung etwas mitzubekommen. Vielmehr muss Zeit Online dem Anbieter (emetriq) blind vertrauen und sich damit auch darüber im Klaren sein, dass durch sie durch Einbindung von externem Code zum einen den eigenen Besuchern und damit auch letzten Endes sich selber extrem schaden können. Mittlerweile steht mit »Subresource Integrity« eine Technologie bereit, die die Integrität von JavaScripten sicherstellt, die über Drittseiten eingebunden werden. Darüber ließen sich nachträgliche und auch bösartige Veränderungen an JavaScript-Code erkennen. Allerdings wird diese Technik noch nahezu von keinem Webseitenbetreiber bzw. Drittanbieter verwendet.

Reine Theorie? Mitnichten – es gab schon diverse Fälle, wo genau dieses Szenario eingetreten ist. Ein Sicherheitsvorfall auf der Webseite des Finanzdienstleistungsunternehmens Equifax führt einem bspw. vor Augen, welche negativen Auswirkungen mit der Einbindung externen JavaScript-Codes einhergehen kann. Über die Webseite bzw. das eingebundene JavaScript des Drittanbieters wurde Adware ausgeliefert, mit der sich eine bis dato unbekannte Anzahl von Nutzern infizierte.

5. Fazit

Der ursprüngliche Zweck von JavaScript (die dynamische Inhaltsveränderung) spielt heute nur noch eine untergeordnete Rolle. Hauptsächlich wird JavaScript von vielen Protagonisten für Zwecke »missbraucht«, die unkalkulierbare Folgen für die Sicherheit und die Privatsphäre eines (Webseiten-)Besuchers haben können.

Das im vorliegenden Beitrag gewählte Beispiel von emetriq ließe sich beliebig austauschen. Die meisten News-Portale binden noch einige weitere (JavaScript-)Tracker ein, um ihre Nutzer zu durchleuchten oder interessenbezogene Werbung einzublenden. Insgesamt betrachtet erstreckt sich die Problematik des Missbrauchs von JavaScript fast auf das gesamte Internet. Ein JavaScript-Blocker zählt neben einem Adblocker wie uBlock Origin daher zu einem wichtigen Element der digitalen Selbstverteidigung.

Im nachfolgenden Teil der Artikelserie »Firefox-Kompendium« werden wir uns daher mit der Installation und Konfiguration von NoScript befassen.

Bildquellen:

JavaScript: Smashicons from www.flaticon.com is licensed by CC 3.0 BY

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion

8 Ergänzungen zu “Firefox-Kompendium: Warum ein JavaScript-Blocker notwendig ist”

  1. Comment Avatar Anonymous sagt:

    Mal wieder super! Vielen Dank.
    Da Du emetriq explizit erwähnst, dazu ein paar Anmerkungen und Fragen:
    Die emetriq GmbH sitzt in Hamburg, somit gilt das deutsche Datenschutzgesetz. Der zuständige Landesdatenschutzbeauftragte ist Herr Caspar, der sich bereits sehr gut eingearbeitet hat, u.a. wegen der Zuständigkeit für Facebook.
    Problematisch ist generell, dass je nach Standpunkt unterschiedliche Ansichten bestehen, was personenbezogene Daten sind.
    Du erwähnst, dass deren Wanzen auch z.T. im Loginbereich sind und Namen übermittelt werden können. Das sind offensichtliche hard facts.
    Unter Datenschutz findet man auf deren website, dass Namen nicht gespeichert werden
    An der Stelle hätten wir einen Widerspruch.

    • Comment Avatar Mike Kuketz sagt:

      Ja im Login-Bereich wurde der Nickname / Username eine zeitlang an emetriq übermittelt. Aktuell ist der Tracker dort nicht zu finden, dafür der von ioam.de (Das Skalierbare Zentrale Messsystem (SZM)). Was da übermittelt wird, habe ich nicht geprüft. Das war auch nicht Kern des Beitrags. Ich wollte lediglich aufzeigen, welche Informationen JavaScript beim Nutzer ermittelt und (ungefragt) übersendet. Es ist daher essentiell geworden, nur jenes JavaScript zuzulassen, dass von einer Seite unbedingt benötigt wird. Tracker und ähnliches gehört da nicht dazu.

      For the record: In den Login-Bereich von Seiten gehören gar keine Tracker.

  2. Comment Avatar Siri Lanca sagt:

    Wie immer danke für die (mittlerweile auch für Anfänger) einfach zu verstehenden Ausführungen Herr Kuketz.

    Nun habe ich eine Zeit lang kein NoScript benutzt, weil man mit UBlock Origin diese Tracker verbieten konnte. Habe ich mich verschätzt?

    • Comment Avatar Mike Kuketz sagt:

      Mit uBlock Origin wurden die meisten (JavaScript-)Tracker vermutlich schon gefiltert. Dennoch ist es sinnvoll die Ressource JavaScript zu reglementieren. Das funktioniert mit unterschiedlichen Addons und es sind auch Kombinationen denkbar:
      – uBlock Origin + NoScript
      – Nur uMatrix
      – usw.

      • Comment Avatar seeket sagt:

        Ja, allerdings lassen sich ja auch mit Dynamic Filtering unter uBlock Origin Skripte seiten-spezifisch blockieren. Und auch wenn ich selbst uMatrix dafür bevorzuge, hat uB0 sogar einen Vorteil, den uMatrix und Noscript nicht bieten: mit URL Filtering lassen sich sogar gezielt einzelne Skripte blockieren.

  3. Comment Avatar Leser001 sagt:

    Zur Verdeutlichung der aufgelisteten Details des HTTP-Headers, hätte ich hinter „sid = 97578“ noch geschrieben: „Session ID (Sitzungskennung)“ oder so ähnlich.

  4. Comment Avatar M.Doubtfire sagt:

    Mal eine ganz dumme Frage: Alleine das Deaktivieren von JavaScript schützt mich doch nicht wirklich vor Tracking, denn jeder Webseiten-Betreiber bekommt meine IP-Adresse, die (im Gegensatz zu UserAgent, Zeitzone, Bildschirmauflösung, etc.) doch noch viel eindeutiger ist.
    Müsste man daher (um dem Tracking wirklich zu entgehen) nicht über TOR gehen oder sehe da etwas falsch?

HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

Abschließender Hinweis

Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.

Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.