Inhaltsverzeichnis
In der digitalen Welt ist die sichere Aufbewahrung von Zugangsdaten unerlässlich. Passwort-Manager-Lösungen sind dabei eine gängige Empfehlung. Sie speichern sicher die Anmeldedaten vieler Konten und erfordern, dass der Benutzer nur ein Passwort merken muss (oder per biometrischer Authentifizierung entsperrt).
Passwort-Manager haben viele Funktionen, wie z.B. komplexe Passwortgenerierung, Synchronisation über mehrere Geräte und Integration in Browser als Erweiterung. Letzteres ermöglicht es Ihnen, sich bequem mit nur wenigen Klicks in Ihre Web-Konten einzuloggen. Eine Browsererweiterung, die diese Funktionalität bereitstellt, muss jedoch klar wissen, wo sie die gespeicherten Benutzeranmeldeinformationen eingibt. Sie sollten nur in das validierte Anmeldeformular eingegeben werden und nirgendwo anders.
Nun, Dinge sind nicht immer einfach, und manchmal erfordern seltsame Webdesigns eine besondere Behandlung. Bei der Überprüfung des Verhaltens von Bitwarden, einer beliebten Passwort-Manager-Browsererweiterung, bemerkte das Vulnerability Research-Team von Flashpoint, dass eingebettete iFrames in einer Webseite auf untypische Weise behandelt wurden. Um zu verstehen, warum dies ein Problem darstellt, ist es wichtig, ein grundlegendes Verständnis dafür zu haben, was iFrames sind.
- Automatische Generierung von sicheren, einzigartigen Passwörtern
- Speicherung von Passwörtern in einem verschlüsselten Tresor
- Möglichkeit, sensiblen Daten wie Kreditkarteninformationen, Sicherheitscodes und Bankkontodetails zu speichern
- Verfügbar für verschiedene Plattformen und als Browser-Erweiterung
- Hilft, die Online-Sicherheit zu verbessern
- Es gibt keine kostenlose Version für den Einsatz im Team oder für fortgeschrittene Funktionen
- Für manche Nutzer könnte der Preis für ein Abonnement zu hoch sein
- Die Verwendung von Bitwarden erfordert ein gewisses Maß an Einarbeitungszeit und Organisation
- Es gibt keine native Linux-Unterstützung
- Die Benutzeroberfläche könnte für einige Nutzer etwas unübersichtlich sein
Das Inline Frame-Element
Gemäß der Mozilla HTML-Dokumentation repräsentiert das <iframe> HTML-Element einen verschachtelten Browsing-Kontext, der eine andere HTML-Seite in die aktuelle einbettet.
Ein beliebter Anwendungsfall ist z.B. die Einbettung von Kartenmaterial in eine Webanwendung. Der Browsing-Kontext eines iframe-Elements ist jedoch vom Kontext der übergeordneten Seite oder anderen Seiten aus einer anderen Herkunft getrennt. Dies wird durch die Same-Origin Policy definiert, die beliebige Cross-Domain-Zugriffe verhindert. Es wird als ein bedeutendes Sicherheitskonzept angesehen und ist in allen gängigen Browsern implementiert.
Diese Isolierung ist kritisch, da sie verhindert, dass Webseiten z.B. eine sensible Web-Ressource aus einer anderen Herkunft in einem iFrame einbetten und dann auf deren Inhalt zugreifen können.
Bitwarden Auto-Fill-Verhalten
Wie bereits erwähnt, hat das Verhalten der Bitwarden-Browsererweiterung beim Umgang mit iFrames Interesse geweckt und erforderte einen genaueren Blick. Wenn die Bitwarden-Erweiterung feststellt, dass sich ein Benutzer auf einer Seite befindet, für die er Anmeldeinformationen gespeichert hat, kann sie anbieten, die entsprechenden Anmeldefelder auszufüllen. Wenn die Option “Auto-Fill on page load” aktiviert ist, geschieht dies ohne Benutzerinteraktion.
Die Erweiterung füllt jedoch auch Formulare aus, die in einem eingebetteten iFrame definiert sind, auch wenn sie von verschiedenen Domains stammen.
Obwohl das eingebettete iFrame keinen Zugriff auf den Inhalt der übergeordneten Seite hat, kann es auf die Eingabe im Anmeldeformular warten und die eingegebenen Anmeldeinformationen ohne weitere Benutzerinteraktion an einen Remote-Server weiterleiten.
Die Bitwarden-Dokumentation enthält eine Warnung, die besagt, dass “kompromittierte oder nicht vertrauenswürdige Websites” dies ausnutzen könnten, um Anmeldeinformationen zu stehlen.
Es gibt kaum etwas, was eine Erweiterung tun kann, um das Stehlen von Anmeldeinformationen zu verhindern, wenn die Website selbst kompromittiert ist. Wir wissen jedoch, dass reguläre (nicht kompromittierte) Websites externe iFrames aus verschiedenen Gründen wie Werbung einbetten. Dies bedeutet, dass ein Angreifer nicht unbedingt die Website selbst kompromittieren muss – er muss lediglich die Kontrolle über den iFrame-Inhalt haben.
Wir haben einige prominente Websites überprüft, um festzustellen, wo ein iFrame auf der Anmeldeseite eingebettet ist, aber die Anzahl der Fälle, die diesem bestimmten Setup entsprechen, war recht gering, was das potenzielle Risiko reduziert. Beim Erstellen eines Proof-of-Concepts, um die Schwachstelle zu demonstrieren, bemerkten wir jedoch eine weitere Schwäche in der Art und Weise, wie die Bitwarden-Erweiterung bestimmt, auf welchen Seiten Anmeldeinformationen eingegeben werden sollen.
Bitwarden Standard-URI-Abgleich
Der Standard-URI-Abgleich ist die Einstellung, die bestimmt, wie die Browsererweiterung das Auto-Fill-Angebot für Anmeldungen anbietet. Dies geschieht durch den Vergleich von Teilen der URI der aktuellen Seite mit Website-Einträgen in gespeicherten Elementen im Vault der Erweiterung. Standardmäßig ist es auf “Basisdomain” eingestellt, was bedeutet, dass die Erweiterung die Auto-Fill-Funktionalität auf jeder Seite anbietet, auf der die Basisdomain, d.h. die Top-Level- und die Second-Level-Domain, übereinstimmt.
Wenn Sie Ihre fairen Anteile an Web-Lösungen und Content-Providern kennen, wird deutlich, dass dies ein Problem darstellt. Einige Content-Hosting-Anbieter erlauben das Hosting von beliebigem Inhalt unter einer Subdomain ihrer offiziellen Domain, die auch ihre Anmeldeseite bereitstellt. Wenn ein Unternehmen z.B. eine Anmeldeseite unter https://logins.company.tld hat und Benutzern das Bereitstellen von Inhalten unter https://<clientname>.company.tld erlaubt, können diese Benutzer Anmeldeinformationen aus der Bitwarden-Erweiterung stehlen.
Mögliche Angriffsvektoren
Die Kombination aus dem unsicheren Auto-Fill-Verhalten und dem Standard-URI-Abgleich ermöglicht verschiedene mögliche Angriffe, um Anmeldeinformationen zu stehlen:
-
- Eine nicht kompromittierte Website bettet ein externes iFrame (nicht gesichert) ein, das unter der Kontrolle eines Angreifers steht, und die Option “Auto-Fill on page load” ist aktiviert.
- Ein Angreifer hostet eine speziell gestaltete Webseite unter einer Subdomain eines Hosting-Anbieters, der seine Anmeldeseite unter derselben Basisdomain hat.
In unserer Forschung haben wir bestätigt, dass einige große Websites genau diese Umgebung bieten. Wenn ein Benutzer mit einer Bitwarden-Browsererweiterung eine speziell gestaltete Seite besucht, die auf diesen Webdiensten gehostet wird, kann ein Angreifer die für die jeweilige Domain gespeicherten Anmeldeinformationen stehlen.
Wie bereits erwähnt, ist bei aktivierter Option “Auto-Fill on page load” keine weitere Benutzerinteraktion erforderlich. Wir haben jedoch bestätigt, dass wenn der Benutzer ein Anmeldeformular über das Kontextmenü ausfüllt, auch Formulare, die in iFrames eingebettet sind, ausgefüllt werden.