Über mich

Startseite arrow Tipps & Tricks arrow Geniale Sicherheitslücke in allen Browsern entdeckt

Geniale Sicherheitslücke in allen Browsern entdeckt

Freitag, 17. Oktober 2008
Geschrieben von Armin Vieweg
Ich habe eine sehr geniale Sicherheitslücke entdeckt, die alle Browser ausnahmslos betrifft und es ermöglicht mit ein bisschen JavaScript/AJAX die besuchten Websites eines Besuchers auszulesen.

Ich bin nicht der Erfinder dieser absolut genialen und einfachen Möglichkeit besuchte Website von jedem Besucher auszulesen, möchte aber dennoch darüber berichten.



Was die Sicherheitslücke ermöglicht
Ich gebe eine Liste mit URLs vor (z.B. google.de, yahoo.de, etc.), Du besuchst meine Website und kann Dir sagen welche von den Seiten aus der Liste Du schon mal besucht hast.

Im Prinzip ist das keine Sicherheitslücke, sondern eine altbekannte Funktion des Browsers. Man kann sie nicht abschalten, außer man deaktiviert JavaScript oder CSS.


Wie funktioniert das?
Wenn Du Dir jetzt durchliest, wie das Ganze funktioniert wirst Du vermutlich stöhnen und sagen: "Ja, klar wie einfach". Aber genial!

Der Browser merkt sich welche Websites wir schon mal besucht haben. Nicht nur in der Historie des Browsers können wir das sehen, sondern auch an Hand von Links.

Ein Link hat verschiedene Zustände, einer davon nennt sich :visited und der beschreibt ob ein Link schon mal angeklickt und damit besucht wurde oder nicht. Es ist unerheblich ob ich tatsächlich diesen einen Link schonmal angeklickt habe. Der Browser zeigt den Link als "visited" an, sobald ich die dahinter liegende Seite schon mal aufgerufen habe (auch über einen anderen Weg, als dieser Link).

Im CSS definiere ich, dass nicht besuchte Links grün und besuchte Links rot angezeigt werden. Das sieht dann so aus:

a {
  color:green;
}
a:visited {
  color:red;
}



Dann kann ich mit einem JavaScript durch die komplette Liste gehen und alle Links in einem Array speichern, welche die Farbe rot haben und somit schon mal von demjenigen besucht worden. Mit AJAX kann ich diese Liste dann noch in eine Datenbank schreiben und ggf. für Auswertungen benutzen.

Aus Missbrauchsgründen verzichte ich darauf den JavaScript Quellcode hier zu veröffentlichen - viel Know How braucht man aber nicht um einen solchen Code zu generieren.



Wie kann ich mich davor schützen?
Es gibt insgesamt drei Möglichkeiten wie man sich davor schützen kann, alle drei sind aber mit Einschränkungen im Komfort des Browsens verbunden:
  1. Abschalten von JavaScript
  2. Abschalten oder Ändern von Stylesheets
  3. Löschen von privaten Daten
Das wirklich hinterlistige an dieser Sicherheitslücke ist, dass man selbst nicht erkennt, dass eine solche Abfrage erfolgt. Man muss nichts bestätigen und kein Virenscanner wird den harmlosen AJAX-Code als Bedrohung einstufen - denn im Prinzip fragt man nur ab welche Links die Farbe rot haben.


Was man böses damit anstellen könnte
Ich möchte keine Anleitungen zum Bombenbasteln geben oder irgendwelche kriminelle Energien schüren. Ich will lediglich sensibilisieren und aufzeigen was damit Möglich wäre.

Stellt Euch vor Ihr seid Mitglied einer Community, die Ihr regelmäßig besucht. Ihr habt dort einen Nutzeraccount und Euch eine diverse Reputation innerhalb der Community aufgebaut.

Jetzt beschließt der Betreiber ein solches JavaScript einzusetzen und mit Eurem schon vorhandenen Benutzer-Account zu koppeln.

Im schlimmsten Fall kann er damit herausfinden was für Schmuddelfilme Ihr Euch angesehen habt, in welchen anderen Communitys Du zugegen bist oder ob Du einen Banking-Account bei der Sparkasse oder der Deutschen Bank hast.


Was man nicht machen kann
Und das beruhigt einen dann auch schon wieder ein bisschen: Es ist nicht möglich PINs oder Passwörter abzufragen. Selbst wenn im Link zur Community mein Benutzername und Passwort unverschlüsselt stehen würde, hätte der Seitenbreiter mit dem Schadcode keine Möglichkeit diese auszulesen.

Es gibt immer eine Liste - und die Links auf dieser Liste müssen 100% übereinstimmen mit den von dir besuchten Seiten. Nur dann werden sie anders dargestellt. Man kann dort nicht mit Wildcards (dynamischen Platzhaltern) arbeiten.


Sicherheitslücke v2

Man kann diese Sicherheitslücke etwas weiter ausbauen. Ich mache z.B. eine Liste mit den 5 meistfrequentiertesten Schmuddelfilm-Seiten. Und 5 weitere Listen. Auf jeder dieser Listen sind alle Unterseiten der Website drauf. Jeder einzelne Film wird dann praktisch abrufbar.

So kann man genau sehen, welcher Besucher auf welchem Portal sich welchen Film angeschaut hat. Dadurch das man die Liste der Unterseiten auf die Hauptdomainen aufteilt ist auch die Dateigröße der Datei mit den Links relativ überschaubar und sollte schnell von JavaScript zu bearbeiten sein.

Man muss im Vorfeld diese Listen erstellen und alle Unterseiten spidern (abrufen und auswerten) - aber findige Programmierer dürften da mit Rekursion recht schnell zu einem brauchbaren Ergebnis kommen.

Ich möchte dringend empfehlen von solchen Praktiken abzusehen! Abgesehen von der Strafbarkeit in Deutschland, sind solche Maßnahmen moralisch absolut verwerflich!




Die andere Seite der Medallie

Tatsächlich kann man diese "Lücke" auch für positive Zwecke nutzen. Macht man eine Liste von den eigenen Seiten, die man hat kann man so feststellen ob der Besucher schon einmal auf der eigenen Seite gewesen ist und welche Seiten er dabei angesteuert hat.

Man kann dann anhand der gewonnenen Informationen dynamische Ausgaben generieren: "Sie waren schon mal auf dieser Seite, vielleicht ist diese ebenfalls für Sie interessant!".

Das schöne daran, dass Cookies oder Sessions nicht benötigt werden. Selbst bei deaktivierten oder gelöschten Cookies kann diese Abfrage weiterhin genutzt werden.

Lediglich das Löschen der Historie im Browser macht diese JavaScript-Abfrage wirkungslos.


Was die Browser-Hersteller nun machen müssen
Um Missbrauch dieser Funktion zu vermeiden und das wird früher oder später passieren, müssen die Hersteller der Browser reagieren. Die einzig effektive Methode diese Möglichkeit zu unterbinden ist das Sperren des Zugriffs von JavaScript auf Links, die eine externe Quelle beinhalten.

So hätte man weiterhin die Möglichkeit eigene Links auszuwerten, es würde einem aber die Möglichkeit geraubt externe Seiten zu eigene Zwecke auszuwerten.



Fazit
Ich war überrascht wie einfach es sein kann solche sensiblen Informationen ausfindig zu machen. Vor allem im Bereich des Marketings wäre eine solche Lücke absolut gewinnbringend. Wäre es nicht toll zu wissen, dass der Obi-Baumarkt-Website-Besucher vorher schon mal auf Hornbach gestöbert hat und ihm dann eine individuelle Meldung mitzugeben?

Diese Lücke ermöglicht es auf Seiten mit personalisierten Inhalten Benutzerprofile mit Internet-Verhalten zu erstellen. Dies ist zwar strafbar, doch zum Zwecke einer Erpressung (die ebenfalls strafbar ist) durchaus möglich.

Von daher hoffe ich, dass die Browserhersteller schnell handeln und diese Lücke schließen, so das sie nur noch für den Eigenbedarf genutzt werden kann.


  Kommentare (1)
 1 Geschrieben von: Krawutzi Kaputzi, am 20.06.2009 um 14:10
"Wäre es nicht toll zu wissen, dass der Obi-Baumarkt-Website-Besucher vorher schon mal auf Hornbach gestöbert hat und ihm dann eine individuelle Meldung mitzugeben?" 
 
- Das wäre nicht toll zu wissen, weil das den Obi Baumarkt einen feuchten Dreck angeht, zu wissen wo ich vorher war. Ich hasse es ausspioniert zu werden. Daher mag ich weder Cookies noch personalisierte Werbung.Iich bin mündig genug um selbst herauszufinden welche Seiten ich noch besuchen kann, man muss es mir nicht auf dem goldnen Tablett servieren wie einem Kleinkind. 
 
Zwar ist es gut zu wissen, dass es solch eine Lücke gibt, dennoch habe ich beim Lesen solcher Artikel immer das flaue Gefühl, dass sie nur dazu dienen Möchtegern Hacker anzulocken.
Letzte Aktualisierung ( Freitag, 17. Oktober 2008 )
 
< Zurück   Weiter >