Ein Werkzeug wurde veröffentlicht, das die Methode zur Ermittlung von Erweiterungen implementiert, die im Browser Chrome installiert sind. Die erhaltene Liste von Erweiterungen kann verwendet werden, um die Genauigkeit der passiven Identifizierung einer bestimmten Instanz des Browsers zu erhöhen, in Kombination mit anderen indirekten Merkmalen wie Bildschirmauflösung, WebGL-Spezifikationen, Installationslisten von Plugins und Schriftarten. Die vorgeschlagene Implementierung überprüft die Installation von über 1000 Erweiterungen. Für die Überprüfung Ihres Systems wird eine Online-Demo angeboten.
Die Ermittlung von Erweiterungen erfolgt durch die Analyse der von diesen bereitgestellten Ressourcen, die für externe Anfragen zugänglich sind. In der Regel umfassen Erweiterungen verschiedene Begleitdateien, wie beispielsweise Bilder, die im Manifest der Erweiterung durch die Eigenschaft web_accessible_resources definiert sind. In der ersten Version des Chrome-Manifests war der Zugriff auf Ressourcen nicht eingeschränkt, und jede Website konnte die bereitgestellten Ressourcen laden. In der zweiten Version des Manifests war der Zugriff auf solche Ressourcen standardmäßig nur für die Erweiterung selbst erlaubt. In der dritten Version des Manifests wurde die Möglichkeit geschaffen, zu definieren, welche Ressourcen an welche Erweiterungen, Domains und Seiten weitergegeben werden dürfen.
Webseiten können die in der Erweiterung bereitgestellten Ressourcen über die Methode fetch anfordern (zum Beispiel „fetch(‘chrome-extension://okb….nd5/test.png’)“). Ein Rückgabewert von „false“ deutet in der Regel darauf hin, dass die Erweiterung nicht installiert ist. Um die Ermittlung der Erweiterung anhand der Verfügbarkeit von Ressourcen zu blockieren, generieren einige Erweiterungen ein Überprüfungstoken, welches für den Zugriff auf die Ressource erforderlich ist. Ein Aufruf von fetch ohne Angabe eines Tokens schlägt immer fehl.
Es hat sich herausgestellt, dass der Zugangsschutz zu den Ressourcen der Erweiterungen umgangen werden kann, indem die Ausführungszeit der Operation bewertet wird. Obwohl fetch bei einer Anfrage ohne Token immer einen Fehler zurückgibt, unterscheidet sich die Ausführungszeit der Operation in Abhängigkeit von der Anwesenheit oder Abwesenheit der Erweiterung: Wenn die Erweiterung vorhanden ist, benötigt die Anfrage mehr Zeit als wenn die Erweiterung nicht installiert ist. Durch die Bewertung der Reaktionszeit kann die Anwesenheit der Erweiterung ziemlich genau bestimmt werden.
Einige Erweiterungen, die keinen externen Zugriff auf Ressourcen bieten, können anhand zusätzlicher Eigenschaften identifiziert werden. Beispielsweise kann die MetaMask-Erweiterung durch die Bewertung der Eigenschaft window.ethereum erkannt werden (wenn die Erweiterung nicht installiert ist, gibt „typeof window.ethereum“ den Wert „undefined“ zurück).
Quelle: opennet.ru
