Pubblicato un toolkit per determinare i componenti aggiuntivi installati in Chrome

È stato pubblicato un toolkit che implementa un metodo per rilevare i componenti aggiuntivi installati nel browser Chrome. L'elenco risultante di componenti aggiuntivi può essere utilizzato per aumentare la precisione dell'identificazione passiva di una particolare istanza del browser, in combinazione con altri indicatori indiretti, come risoluzione dello schermo, funzionalità WebGL, elenchi di plug-in e caratteri installati. L'implementazione proposta controlla l'installazione di oltre 1000 componenti aggiuntivi. Viene offerta una dimostrazione online per testare il sistema.

La definizione degli add-on avviene attraverso un'analisi delle risorse fornite dagli add-on, disponibili per richieste esterne. In genere, i componenti aggiuntivi includono vari file di accompagnamento, come immagini, definiti nel manifest del componente aggiuntivo dalla proprietà web_accessible_resources. Nella prima versione del manifest di Chrome, l'accesso alle risorse non era limitato e qualsiasi sito poteva scaricare le risorse fornite. Nella seconda versione del manifest, l'accesso a tali risorse per impostazione predefinita era consentito solo al componente aggiuntivo stesso. Nella terza versione del manifesto è stato possibile determinare quali risorse possono essere fornite a quali componenti aggiuntivi, domini e pagine.

Le pagine Web possono richiedere le risorse fornite dall'estensione utilizzando il metodo fetch (ad esempio, "fetch('chrome-extension://okb....nd5/test.png')"), che in genere restituisce "false" che il componente aggiuntivo non è installato. Per impedire a un componente aggiuntivo di rilevare la presenza di una risorsa, alcuni componenti aggiuntivi generano un token di verifica richiesto per accedere alla risorsa. La chiamata a fetch senza specificare un token fallisce sempre.

A quanto pare, la protezione dell'accesso alle risorse aggiuntive può essere aggirata stimando il tempo di esecuzione dell'operazione. Nonostante il fatto che fetch restituisca sempre un errore quando si richiede senza token, il tempo di esecuzione dell'operazione con e senza il componente aggiuntivo è diverso: se il componente aggiuntivo è presente, la richiesta richiederà più tempo che se il componente aggiuntivo non è installato. Valutando il tempo di reazione, puoi determinare con precisione la presenza dell'integratore.

Alcuni componenti aggiuntivi che non includono risorse accessibili esternamente possono essere identificati da proprietà aggiuntive. Ad esempio, il componente aggiuntivo MetaMask può essere definito valutando la definizione della proprietà window.ethereum (se il componente aggiuntivo non è impostato, "typeof window.ethereum" restituirà il valore "unDefinito").

Fonte: opennet.ru

Aggiungi un commento