BrowExt - ClickJacking
Grundinformationen
Diese Seite wird eine ClickJacking-Sicherheitsanfälligkeit in einer Browsererweiterung ausnutzen. Wenn du nicht weißt, was ClickJacking ist, schau dir an:
Erweiterungen enthalten die Datei manifest.json
und diese JSON-Datei hat ein Feld web_accessible_resources
. Hier ist, was die Chrome-Dokumentation darüber sagt:
Diese Ressourcen wären dann über die URL
chrome-extension://[PACKAGE ID]/[PATH]
auf einer Webseite verfügbar, die mit derextension.getURL-Methode
generiert werden kann. Erlaubte Ressourcen werden mit geeigneten CORS-Headern bereitgestellt, sodass sie über Mechanismen wie XHR verfügbar sind.1
Die web_accessible_resources
in einer Browsererweiterung sind nicht nur über das Web zugänglich; sie funktionieren auch mit den inhärenten Berechtigungen der Erweiterung. Das bedeutet, dass sie die Fähigkeit haben zu:
Den Zustand der Erweiterung zu ändern
Zusätzliche Ressourcen zu laden
In gewissem Maße mit dem Browser zu interagieren
Diese Funktion stellt jedoch ein Sicherheitsrisiko dar. Wenn eine Ressource innerhalb von web_accessible_resources
eine wesentliche Funktionalität hat, könnte ein Angreifer diese Ressource möglicherweise in eine externe Webseite einbetten. Unwissende Benutzer, die diese Seite besuchen, könnten versehentlich diese eingebettete Ressource aktivieren. Eine solche Aktivierung könnte je nach Berechtigungen und Fähigkeiten der Ressourcen der Erweiterung zu unbeabsichtigten Konsequenzen führen.
PrivacyBadger Beispiel
In der Erweiterung PrivacyBadger wurde eine Sicherheitsanfälligkeit identifiziert, die sich auf das Verzeichnis skin/
bezieht, das als web_accessible_resources
in folgender Weise deklariert wurde (Überprüfe den ursprünglichen Blogbeitrag):
Diese Konfiguration führte zu einem potenziellen Sicherheitsproblem. Insbesondere könnte die Datei skin/popup.html
, die bei Interaktion mit dem PrivacyBadger-Symbol im Browser gerendert wird, innerhalb eines iframe
eingebettet werden. Diese Einbettung könnte ausgenutzt werden, um Benutzer zu täuschen, sodass sie unbeabsichtigt auf "Disable PrivacyBadger for this Website" klicken. Eine solche Aktion würde die Privatsphäre des Benutzers gefährden, indem der Schutz von PrivacyBadger deaktiviert wird und der Benutzer möglicherweise einer erhöhten Verfolgung ausgesetzt wird. Eine visuelle Demonstration dieses Exploits kann in einem ClickJacking-Video-Beispiel angesehen werden, das unter https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm bereitgestellt wird.
Um diese Schwachstelle zu beheben, wurde eine einfache Lösung implementiert: die Entfernung von /skin/*
aus der Liste der web_accessible_resources
. Diese Änderung minderte das Risiko effektiv, indem sichergestellt wurde, dass der Inhalt des Verzeichnisses skin/
nicht über webzugängliche Ressourcen aufgerufen oder manipuliert werden konnte.
Die Lösung war einfach: entferne /skin/*
aus den web_accessible_resources
.
PoC
Metamask Beispiel
Ein Blogbeitrag über ClickJacking in Metamask ist hier zu finden. In diesem Fall hat Metamask die Schwachstelle behoben, indem überprüft wurde, dass das Protokoll, das zum Zugriff verwendet wird, https:
oder http:
(nicht chrome:
zum Beispiel) ist:
Ein weiteres ClickJacking, das in der Metamask-Erweiterung behoben wurde, war, dass Benutzer Klicken, um auf die Whitelist zu setzen konnten, wenn eine Seite verdächtig war, Phishing zu sein, aufgrund von “web_accessible_resources”: [“inpage.js”, “phishing.html”]
. Da diese Seite anfällig für Clickjacking war, konnte ein Angreifer sie missbrauchen, indem er etwas Normales zeigte, um das Opfer dazu zu bringen, es ohne Notice auf die Whitelist zu setzen, und dann zurück zur Phishing-Seite zu gehen, die dann auf die Whitelist gesetzt wird.
Steam Inventory Helper Beispiel
Überprüfen Sie die folgende Seite, um zu sehen, wie ein XSS in einer Browsererweiterung mit einer ClickJacking-Schwachstelle verknüpft wurde:
Referenzen
Last updated