Ihr Social-Media-Fingerabdruck

Ohne Ihre Zustimmung verlieren die meisten großen Webplattformen, ob Sie eingeloggt sind. Dadurch kann jede Website erkennen, auf welchen Plattformen Sie angemeldet sind. Da es viele Plattformen mit bestimmten demografischen Merkmalen gibt, könnte ein Angreifer auch über Ihre Persönlichkeit nachdenken.

Demonstration

Sie sind angemeldet bei:

Sie sind nicht angemeldet bei:

Erläuterung

Bei den meisten Webplattformen gibt es eine Möglichkeit, den Anmeldemechanismus zu missbrauchen, um zu erkennen, ob ein Benutzer bei diesem Dienst angemeldet ist.
Obwohl diese Sicherheitslücke bekannt , seit einigen Jahren die meisten Unternehmen wird es nicht reparieren .

Der Exploit ist ziemlich einfach und eigentlich leicht zu beheben. Schauen wir uns facebook.com an, um eine Vorstellung davon zu bekommen, wie es funktioniert:

Wie funktioniert der Login-Umleitungsmechanismus?


Zuerst müssen wir den Anmeldeumleitungsmechanismus verstehen. Sagen Sie, Sie sind eingeloggt und besuchen Sie

https://www.facebook.com/bookmarks/pages

Wenn Sie nun diese URL in einem privaten Tab öffnen, in dem Sie nicht eingeloggt sind, werden Sie mit dieser URL zum Anmeldebildschirm weitergeleitet:

https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages
Beachten Sie den nextParameter in der URL: https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages.

Das ist die URL, von der wir gekommen sind und wird verwendet, um uns dorthin zurückzuleiten, sobald wir uns eingeloggt haben.
Aber wenn wir die Login-URL in einem Browser-Tab eingeben, auf dem wir bereits eingeloggt sind, werden wir umgeleitet, ohne zum Anmelden aufgefordert zu werden. Daher gibt diese URL Folgendes zurück:

  • Wenn eingeloggt: die Ressource unter der URL im nextParameter
  • Wenn abgemeldet: der Anmeldebildschirm

Umgehen Sie die Richtlinie für denselben Ursprung

Wie hilft uns diese URL? Die Same Origin Policy verhindert das Lesen der Ergebnisse dieser Anfrage von einer anderen Domain als https://facebook.com...
Nun, die SOP ist streng für HTML-Seiten, erlaubt aber den Empfang von Bildern anderer Herkunft! Wenn die Ressource im nextParameter also ein Bild wäre, könnten wir es von unserer Website lesen. Es kann aber kein Bild sein. Facebook prüft, ob die URL im nextParameter mit beginnt https://facebook.com. Also müssen wir ein Bild auf facebook.com finden. Sollte einfach sein, oder? Eigentlich nicht, denn Facebook hostet fast alle Bilder auf ihren CDN-Servern unter der Domain fbcdn.net. Allerdings gibt es ein Bild, das man auf fast jedem Webserver findet: das gute alte favicon.ico!
So sieht unsere Login-URL mit dem Favicon als nextParameter aus:

https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico
Es hat eine sehr interessante Eigenschaft :
  • Angemeldet: Gibt das Favicon-Bild zurück
  • Abgemeldet: Gibt den HTML-Code der Anmeldeseite zurück

Wir können diese URL in einem <img>Tag auf unserer Website verwenden:

<img src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">
<img>Die Eigenschaft dieses Tags:
  • Angemeldet: empfängt das Favicon-Image, lädt es erfolgreich und der onLoadRückruf wird ausgelöst.
  • Abgemeldet: empfängt den HTML-Code des Anmeldebildschirms, kann ihn nicht als Bild laden und der onErrorRückruf wird ausgelöst.
Dies führt zum letzten Exploit:
<img onload="alert('logged in to fb')" onerror="alert('not logged in to fb')" src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">

Andere Plattformen

Dieser Mechanismus funktioniert für fast alle großen Webplattformen, da sie alle einen Umleitungsparameter in ihrem Login-Endpunkt haben und ihr Favicon auf ihrer Domain hosten müssen ( bc der Browserkompatibilität und der technischen Schuld des früheren Fehlens von Standards ).

Aktualisierung

  • 07.10.2016: Instagram hat das Favicon aus seiner Root-Domain entfernt und hostet sein Favicon jetzt auf seinem CDN.
  • 14.10.2016: Stackoverflow hat das Problem behoben.
  • 14.10.2016: Es sieht so aus, als ob Firefox das Problem zumindest für die großen Netzwerke mit ihrer standardmäßigen Tracking-Schutz-Blacklist behoben hat (Die Blacklist stammt von https://disconnect.me/ ).

    Konsolen-Screenshot der Fehler beim Aufrufen von Social-Media-Leaks mit aktuellem Firefox: Obwohl es wahrscheinlich immer noch für alle Plattformen funktioniert, auf denen Sie kein defektes Bild anstelle eines Logos sehen.
  • 14.10.2016: Netflix leitet jetzt unabhängig von der Weiterleitung in der URL einfach zur Hauptseite weiter.
  • 29.11.2017: Flickr hat das Problem ebenfalls behoben .

Weitere Angriffe

Dieser Angriff könnte ein Schritt in einen schlimmeren Angriff wie Deanonymisierungstechniken , Clickjacking , Profilejacking oder Phishing sein, bei denen es entscheidend ist zu wissen, ob ein Opfer bei einem Dienst angemeldet ist.

Schutz

Zunächst einmal: Cookies von Drittanbietern deaktivieren.

Sie können auch ein Browser-Plugin wie Privacy Badger oder uMatrix installieren , um sich vor diesem Angriff zu schützen.

Weitere Informationen finden Sie in der Diskussion auf Hackernews oder dieser Diskussion auf Reddit .

Add Comment

* Required information
1000
Drag & drop images (max 1)
Powered by Commentics

Comments (2)

Gravatar
New
hene65says...

Krass was man da alles finden kann

Gravatar
New
peterchensays...

supi


Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0