Eine Gruppe von Forschern der Technischen Universität Graz (Österreich), die zuvor für die Entwicklung von Angriffsmethoden bekannt war, , und , veröffentlicht Einzelheiten zu einer neuen Technik der Analyse über Seitenkanäle, die es ermöglicht, die genaue Version des Browsers, das verwendete Betriebssystem, die CPU-Architektur und den Einsatz von Erweiterungen zur Bekämpfung der versteckten Identifizierung zu bestimmen.
Um die genannten Parameter zu bestimmen, reicht es aus, einen von den Forschern entwickelten JavaScript-Code im Browser auszuführen. In der Praxis kann die Methode nicht nur als zusätzliche Quelle zur indirekten Identifizierung des Nutzers, sondern auch zur Bestimmung der Umgebungseinstellungen für gezielte Exploits unter Berücksichtigung von Betriebssystem, Architektur und Browser verwendet werden. Die Methode ist insbesondere auch wirksam bei der Verwendung von Browsern, die Mechanismen zur Blockierung der versteckten Identifizierung implementieren, wie den Tor Browser. Die Quelltexte des Prototyp-Codes mit der Implementierung der Methode unter der MIT-Lizenz.
Die Bestimmung erfolgt anhand der Identifizierung von statusabhängigen Mustern, die für verschiedene Browser spezifisch sind, in JavaScript sowie der Merkmale der Ausführungszeiten von Operationen, die von den Besonderheiten der JIT-Implementierung, der CPU und den Speicherzuweisungsmechanismen abhängen. Die Bestimmung der Eigenschaften erfolgt durch die Generierung einer Liste aller Objekte, die aus JavaScript zugänglich sind. Es stellte sich heraus, dass die Anzahl der Objekte direkt mit dem Browser-Engine und seiner Version korreliert.
function getProperties(o) {
var result = [];
while (o !== null) {
result = result.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
return result;
}
Zum Beispiel wird für Firefox in der Dokumentation die Unterstützung von 2247 Eigenschaften angegeben, während die tatsächliche Anzahl der bestimmten Eigenschaften, einschließlich nicht dokumentierter, 15709 beträgt (im Tor Browser – 15639). Für Chrome werden 2698 Eigenschaften angegeben, tatsächlich werden 13570 angeboten (in Chrome für Android – 13119). Die Anzahl und die Werte der Eigenschaften variieren von Version zu Version des Browsers und bei der Verwendung verschiedener Betriebssysteme.
Die Werte und Verfügbarkeit bestimmter Eigenschaften können zur Bestimmung des Betriebssystems verwendet werden. Zum Beispiel wird in Kubuntu die Eigenschaft window.innerWidth auf 1000 gesetzt, während es in Windows 10 auf 1001 eingestellt ist. In Windows ist die Eigenschaft window.navigator.activeVRDisplays verfügbar, in Linux jedoch nicht. Für Android gibt es viele spezifische Aufrufe, aber kein window.SharedWorker. Zur Identifizierung des Betriebssystems wird auch empfohlen, die WebGL-Parameter zu analysieren, deren Zustand von den Treibern abhängt. Darüber hinaus ermöglicht der Aufruf von WEBGL_debug_renderer_infoextension, Informationen über die Rendering-Engine von OpenGL zu erhalten, die für jedes Betriebssystem unterschiedlich ist.
Zur Bestimmung der CPU wird eine Bewertung der Zeitunterschiede bei der Ausführung verschiedener typischer Codeblöcke herangezogen, deren Verarbeitung von der Architektur des Befehlssatzes abhängig ist, unter Berücksichtigung des Verhaltens von JIT (es wird bestimmt, wie viele CPU-Register verwendet werden und in welchen Fällen JIT effektiven Code mit Optimierungen und erweiterten Anweisungen generiert, und wann nicht). Zur Bestimmung des Typs des Speichermanagementsystems und des Betriebssystems wird auch die Zeitdifferenz bei der Speicherzuweisung für verschiedene Strukturen gemessen, die Aufschluss über die Größe der Speicherblöcke geben kann.
Die im Verlauf des Skriptlaufs definierten Parameter werden mit Referenzwerten verglichen, die für die zuvor getesteten Umgebungen charakteristisch sind. Während der Überprüfung ermöglichte die entwickelte Technik die genaue Identifizierung von 40 verschiedenen Testumgebungen, einschließlich der Bestimmung der verwendeten Browserversionen, des CPU-Herstellers, des verwendeten Betriebssystems sowie der Tatsache, ob es sich um echte Hardware oder eine virtuelle Maschine handelt.
Besonders hervorgehoben wird die Möglichkeit, Browsererweiterungen und sogar einzelne Einstellungen von Erweiterungen zu identifizieren, einschließlich solcher, die zur Blockierung versteckter Identifizierungsmethoden oder des privaten Surfmodus gedacht sind. Im Kontext des vorgeschlagenen Verfahrens werden solche Erweiterungen zu einer weiteren Datenquelle für die Identifizierung. Erweiterungen werden durch die Bewertung von Verzerrungen der ursprünglichen Umgebungsparameter, die von den Erweiterungen eingeführt werden, identifiziert.
Unter anderen Identifizierungsmethoden kann die Berücksichtigung solcher indirekten Daten wie , einer Liste unterstützter MIME-Typen, spezifischen Parametern in den Headern ( und ), der Analyse installierter , der Verfügbarkeit bestimmter Web-APIs, die spezifisch für Grafikkarten sind Rendern mithilfe von WebGL und , mit CSS, der Analyse der Besonderheiten bei der Interaktion mit und .
Quelle: opennet.ru
