Se si tratta di sicurezza e privacy la community di sviluppatori open source è sicuramente quella più sensibile a riguardo. I progetti open source dedicati alla tutela della sicurezza e della privacy sono infatti molto numerosi e spesso vengono sfruttati da migliaia di aziende per migliorare i propri servizi. Oggi vogliamo parlarvi di un piccolo progetto chiamato Nefarious LinkedIn.
Si tratta di un'estensione per Chrome che si occupa di verificare il comportamento del noto social network professionale. Lo sviluppatore di Nefarious LinkedIn, Corey Prophitt, ha pubblicato questa estensione con l'intendo di mostrare ciò che LinkedIn domanda al browser dell'utente durante la navigazione.
Secondo le analisi di Prophitt sembrerebbe che LinkedIn scansioni il browser dell'utente alla ricerca di determinate estensioni installate. Nel dettaglio lo sviluppatore ha rilevato che LinkedIn è interessato in particolare a 38 addon.
Sulla sua pagina di Github lo sviluppatore spiega il modo in cui LinkedIn dovrebbe rilevare le estensioni installate. Esistono infatti due modi per scoprire se l'utente ha installato degli addon. Il primo metodo consiste nella scansione delle risorse pubbliche disponibili nell'estensione, l'altro è l'analisi della pagina Web di destinazione andando a ricercare i comportamenti anomali.
Dalle analisi di Prophitt sembrerebbe emergere che LinkedIn utilizzi entrambi i metodi.
Risorse pubbliche
Il rilevamento delle risorse pubbliche è di gran lunga il metodo più semplice per rilevare l'utilizzo di un'estensione. Se apriamo la console degli sviluppatori mentre navighiamo su LinkedIn si possono notare una serie di errori di richiesta di rete. Osservandole Prophitt ha notato che non si tratta di richieste esterne ma per file locali. I nomi di questi iniziano con chrome-extension: //, ciò dovrebbe indicare che la pagina Web sta effettuando richieste ai file situati nel browser stesso.
Modelli comportamentali
Il secondo metodo per rilevare l'utilizzo di un'estensione descritto da Prophitt riguarda l'esame della pagina Web stessa per identificante eventuali effetti collaterali causati da un'estensione. LinkedIn usa i selettori CSS per individuare gli elementi identificativi nella pagina. Il sito sembra utilizzare la memoria locale del browser per memorizzare un file JSON, tale file contiene un elenco di estensioni da rilevare. Ogni estensione contiene una o più risorse pubbliche da cercare e uno o più selettori CSS da utilizzare per provare a rilevare l'estensione.
Il file in questione si trova nella memoria locale del browser sotto la chiave C_C_M
. Il testo al suo interno è codificato in base64
e una volta decodificato i contenuti sono ulteriormente offuscati. I characters sono tutti convertiti in modelli di byte unicode, che rendono difficile la lettura per un essere umano. Tuttavia se si esegue un'analisi approfondita del file JSON è possibile riuscire ad ottenere del testo comprensibile per l'uomo.
Ad esempio basta aprire l'inspector del browser ed eseguire questo comando:
JSON.parse(window.atob(localStorage.getItem('C_C_M')))
Si dovrebbe ottenere un output simile a questo:
{Config: {…}, Metadata: {…}, date: 1546974713230, version: "0.2.32"}
Config: {autoUpdate: true, autoExecute: true, executeInterval: 900000, enable: true, execute: false, …}
Metadata:
ext: Array(85)
0:
date: 1546974711128
dom:
selector: Array(1)
0: "#daxtra-info-div"
@each: (...)
[]: (...)
firstObject: (...)
hasArrayObservers: (...)
lastObject: (...)
length: 1
__proto__: Array(0)
__proto__: Object
interval: 1800000
name: "wOmysO"
path: ["ombdgbngokkngdbcahjbeimfcfimdole/magnet/ChromePlugin/inject/daxtra_info.html"]
Prophitt indirizza la nostra attenzione sulla stringa path
e su daxtra_info
, per lo sviluppatore questa voce sarebbe la prova che il sito Web va alla ricerca degli elementi della presenza di tale estensione e in questo file esistono numerose altre voci che rimandano ad altre estensioni.
Un simile comportamento potrebbe essere spiegato andando a leggere i termini di utilizzo del portale. Infatti secondo i termini di servizio di LinkedIn non è consentito l'uso di software di terzi, inclusi “crawler”, bot, plug-in del browser o estensioni del browser che effettuano lo scraping, modificano l’aspetto o automatizzano l’attività del sito Web di LinkedIn.
Molto probabilmente questa forma di scansione è volta ad individuare chi sta violando i termini, accettati durante la registrazione, e a tutelare l'utente da possibili frodi.
Ma per Prophitt ciò rappresenterebbe una violazione diretta della privacy dell'utente e nella sua pagina Github è possibile trovare alcuni consigli per gli sviluppatori che vogliono evitare scansioni di questo genere:
- non usare Web accessible resources: delle 38 estensioni di cui LinkedIn sembra voler tenere traccia 28 le usano, se non necessario per il funzionamento dell'estensione Prophitt consiglia di evitare il loro impiego;
- limitare la content script activity alla semplice lettura: questo punto è però più difficile da applicare visto che si tratta di un elemento chiave per molte estensioni;
- non mostrare estensioni utilizzando content script: prendere in considerazione l'utilizzo di una browser action invece di modificare la pagina tramite un content script. Le browser action vengono eseguite in un ambiente isolato e questo le rende più difficili da rilevare.
Via Corey Prophitt