Il caso Superfish ha giustamente sollevato interrogativi sull’affidabilità dei meccanismi con cui vengono gestite le connessioni sicure: quelle, cioè, in cui viene stabilito un collegamento cifrato fra il nostro computer ed il server web su cui stiamo navigando. Come tutti sappiamo, il nostro browser segnala in maniera chiara ed evidente la presenza di una connessione sicura. Anche se non esiste una indicazione universale ed univoca, in generale la presenza di un lucchetto o di uno sfondo verde sull’indirizzo web è l’elemento di conferma che il sito che stiamo visitando è affidabile.
Ma quali sono i metodi che consentono al browser di stabilire che l’identità del sito sia effettivamente quella dichiarata e non un falso?
Semplifichiamo al massimo in modo da rendere il meccanismo immediatamente comprensibile.
Per potere stabilire una connessione sicura ed al riparo da occhi indiscreti vengono utilizzati dei certificati digitali, ovvero una sorta di carta di identità elettronica. Quando il nostro computer si collega ad un sito con il protocollo sicuro, prima di tutto chiede al server l’esibizione di questo certificato elettronico. Se i dati di questa sorta di documento corrispondono è allora possibile mettere in piedi la connessione sicura (https), che certifica non solo l’autenticità del collegamento, ma anche che i dati in transito siano effettivamente privati. Se c’è qualche discrasia, ad esempio anche un significativo errore di data e ora, la verifica non va a buon fine e viene mostrato un avviso.
Questi certificati sono rilasciati da degli enti terzi chiamati autorità di certificazione, o CA, e per attivare un canale sicuro ogni gestore di sito deve acquistare un certificato da una di queste organizzazioni. In ogni certificato sono incorporati degli elementi tecnici che consentono di stabilire quale sia la autorità che lo ha emesso, in modo che sia in ogni momento possibile attestarne l’autenticità.
Su che base il nostro browser stabilisce che il certificato esibito dal sito sia effettivamente legittimo? Verificando che l’ente terzo che lo ha emesso rientri in quelli ritenuti affidabili. Questo elenco è definito inizialmente dal produttore del sistema operativo, o in qualche caso – ad esempio, i prodotti Mozilla – da quello dell’applicazione. L’elenco è però aperto, in quanto può essere legittimamente modificato, inserendo o cancellando certificati a seconda delle nostre necessità. Ovviamente può essere anche consultato in qualsiasi momento.
Per potersi insidiare in questo oliato meccanismo, supefish – il crapware preinstallato da Lenovo – utilizza una tecnica di hacking chiamata man in the middle, letteralmente uomo nel mezzo. In questo schema, il terzo incomodo si frappone fra il server legittimo e l’utente. Per fare questo mostra all’utente un falso certificato in cui si spaccia per il sito di destinazione, in modo che sia in grado di decrittare il flusso che sarebbe altrimenti non intercettabile.
Per poter impersonare un altro sito con questa tecnica è necessario alterare l’archivio dei certificati, inserendo una nuova certification autority che possa far passare il certificato tarocco come originale.
Nel caso in questione il certificato tarocco era stato preinstallato dal costruttore, ma può rientrare come parte della procedura di installazione di un programma. Oppure può essere caricato manualmente, cliccando su di un file che il nostro sistema operativo riconosca come tale.
Ma siccome al diavolo riescono le pentole, ma non i coperchi, un falso certificato non può nascondere tutte le tracce. Basta un click per rendersi conto della presenza del terzo incomodo:
E’ facile vedere che la presenza di superfish è testimoniata dal fatto che Digicert, l’autorità di certificazione legittima del primo esempio è stata sostituita da Superfish, Inc, quella tarocca, nel secondo. E’ però altrettanto evidente che è difficile per un utente, anche se competente, rendersi conto di una differenza così minuscola. Sta di fatto che nella seconda condizione tutto il traffico che riterremmo essere privato, in realtà non lo sarebbe affatto.
Superfish aggiunge però una ulteriore falla di sicurezza. Ai certificati digitali sono associate delle password, atte ad evitarne un uso illecito. Il certificato usato da superfish per impersonare siti terzi non fa eccezione. Il problema, però, è che la password usata per il certificato tarocco era estremamente debole, e così facilmente craccabile, da essere stata individuata in un battito di ciglia. E’ questo che espone tutti i computer su cui è installato superfish ad un grande rischio: chiunque sia in possesso della password – ovvero tutti, visto che è oramai nel pubblico dominio – può spacciarsi per qualsiasi cosa.
Il problema non riguarda solo superfish, in quanto la tecnologia di questo prodotto non è proprietaria. Si basa, invece, sulla infrastruttura di una azienda specializzata, Komodia, che ha sviluppato questa piattaforma – di nome redirector – per supportare software legittimi, come ad esempio i tool per il controllo parentale. Secondo una autorevole fonte, Art technica, questa infrastruttura non solo è abbastanza diffusa, ma sembrerebbe addirittura che certificati digitali analoghi a quello di superfish siano stati individuati e sbloccati con la stessa, medesima password – che con grande fantasia (ed inscoscienza) è risultata essere proprio ‘komodia’.
Non c’è da drammatizare: nel concreto casi come quello citato sono ancora oggettivamente rari e, per fortuna, grazie alla circolazione di notizie garantita dalla rete vengono regolarmente e velocemente a galla.
L’importante è però rendersi conto dei meccanismi che usiamo quotidianamente, in modo da comprendere tutte le implicazioni delle nostre azioni.
E’ quindi fondamentale capire che quando ci viene proposto di importare un certificato, o di scavalcare una segnalazione di allerta su una connessione sicura, è buona cosa non farlo distrattamente, ma ponendo la nostra attenzione su tutte le possibili implicazioni del nostro gesto. E solo allora fare le nostre scelte. Perché una catena di sicurezza è robusta quanto il suo anello più debole.
Segnalo infine un sito che ci consente di testare la presenza di superfish o tecnologie analoghe sui nostri browser. Basta puntare il nostro browser su https://filippo.io/Badfish/ per sapere in pochi secondi se siamo in sicurezza o no.
Foto di Giorgio Rutigliano