Chi l’ha scovato lo ha chiamato “Pollicino”: perché su alcuni smartphone, non su tutti, lascia qualche traccia di troppo. Ma è una vulnerabilità sfruttabile solo in condizioni particolari, e il problema è facilmente risolvibile
Nella celeberrima fiaba di Pollicino, il protagonista lascia sul cammino una serie di briciole di pane per poter poi ritrovare la strada di casa: un espediente semplice che non funziona perfettamente, visto che poi gli uccellini finiscono per mangiare le briciole e così il fanciullo con i suoi sette fratelli si perde nel bosco. Ricordando questa fiaba, due ricercatori hanno deciso di chiamare “Pollicino” (Le Petit Poucet) un bug che hanno scovato nel protocollo Google-Apple messo in piedi per la exposure notification: è la tecnologia alla base delle app come l’italiana immuni , ma è sviluppata direttamente dalle due aziende senza rilasciarne interamente il codice neppure ai governi.
Come funziona il bug Pollicino
Ricapitoliamo rapidamente come funziona un’app come immuni: lo smartphone con il protocollo Google-Apple (GAEN) attivato invia in modo generico attorno a sé dei codici casuali che cambiano continuamente, codici che vengono captati dagli altri smartphone nelle vicinanze che hanno lo stesso protocollo attivo e archiviati in una memoria locale che si cancella automaticamente ogni 15 giorni. Nel caso in cui qualcuno che ha immuni installata scopra di essere stato contagiato dal Covid19 può decidere, con l’ausilio di un operatore del servizio sanitario, di sbloccare una funzione di notifica nella app: a quel punto a tutti gli smartphone sarà comunicato un codice che servirà a capire se per caso nei 15 giorni precedenti si è entrato in contatto ravvicinato (meno di 2 metri per più di 15 minuti) con uno smartphone in particolare, e così decidere se farsi sottoporre ad esame per verificare un potenziale contagio.
I due ricercatori Serge Vaudenay e Martin Vuagnoux hanno scoperto quanto segue: oltre ai codici casuali del protocollo GAEN, nei segnali che vengono trasmessi attorno allo smartphone sono compresi anche dei codici relativi al sistema Bluetooth che insieme formano una stringa di lettere e numeri. In un certo senso è come se il codice inviato fosse formato da due sotto-codici: in sé non sarebbe un problema, visto che anche il codice relativo al Bluetooth (BD_ADDR) cambia periodicamente. Il problema sorge visto che i due ricercatori si sono accorti che non sempre i codici GAEN e Bluetooth cambiano contemporaneamente: e questo consente, monitorando costantemente i segnali, di poter rendere un po’ più tracciabile un singolo codice – a patto che resti a portata di un’antenna Bluetooth e che quest’ultima sia collegata a un computer che ne analizzi continuamente i segnali captati.
In linea teorica è dunque possibile monitorare i segnali attorno a un’antenna, diciamo all’aria aperta per un raggio di circa 50 metri circa se non si utilizzano attrezzature costose, e riuscire a rendere meno indistinguibili i codici prodotti dalle app per il contact tracing. Si tratta effettivamente di una potenziale vulnerabilità del protocollo, che tuttavia non consente di risalire all’identità specifica dei proprietari degli smartphone intercettati: e qual è nella pratica il rischio effettivo che venga messa in atto? Molto basso: vediamo perché.
Che rischi si corrono
Vaudenay e Vuagnoux dicono di aver effettuato una serie di tentativi di tracciare e rintracciare i segnali di una mezza dozzina di smartphone con risultati non sempre costanti (hanno anche testato diverse app, come l’italiana immuni, che si appoggiano sullo stesso protocollo): a quanto pare in alcuni casi le due stringhe GAEN+Bluetooth cambiano effettivamente in contemporanea, dunque impediscono di mettere in pratica il tracciamento, in altri invece è possibile riuscire a “seguire” uno smartphone fintanto che rimane a portata anche oltre i 15 minuti entro cui i codici dovrebbero cambiare. I due dicono di aver provato i dispositivi di diversi produttori e di non aver avuto sempre gli stessi risultati: segno che probabilmente il protocollo funziona in modo diverso su hardware di diversi marchi (forse a causa di chip differenti montati nei rispettivi smartphone, o di driver diversi installati nel software), o in alcuni casi l’accesso ai codici Bluetooth potrebbe addirittura essere bloccato (prudentemente) a livello di sistema.
Sebbene come detto si tratti di una potenziale vulnerabilità, i rischi per gli utenti sono comunque molto mitigati. La portata di un’antenna Bluetooth non è molto ampia, ad esempio, e l’unico modo che avrebbe un attaccante per monitorare gli spostamenti di un soggetto sarebbe installare moltissime antenne o di seguirlo costantemente: entrambe azioni che non passano certo inosservate. Seppure si riuscisse a mappare gli spostamenti di quei codici, inoltre, servirebbe comunque un punto di partenza che identifichi uno smartphone in modo “forte” per poterlo poi tracciare e collegarlo ad altri smartphone: sarebbe possibile in linea teoria puntando un luogo specifico, ma va da sé che ciò richiederebbe un dispendio di tempo e risorse che potrebbe non essere conveniente.
Inoltre, non è detto che dalla possibilità di tracciare i codici si possa risalire in modo automatico all’identità di un individuo: per quello servirebbe altro lavoro, non scontato, che leghi quei codici in modo diretto al nome e cognome di qualcuno. Tutto sommato ci sono metodi più semplici per tracciare un individuo: come convincerlo con l’inganno a installare un trojan nel suo telefono, con la cara vecchia ingegneria sociale, e ciò permetterebbe di scoprire molto di più di quanto non si potrebbe tramite il bug Pollicino. In questo caso, la decisione di decentralizzare la raccolta dati sugli smartphone (invece che centralizzarla in server centralizzati) e di optare per un robusto pseudo-anonimato gioca a favore del pubblico: pone degli ostacoli che non è banale superare.
Cosa fare adesso (e una semplice soluzione)
Allo stato dei fatti non è necessario preoccuparsi troppo: il bug c’è e potrebbe creare qualche problema, ma come abbiamo visto i rischi che venga sfruttato su larga scala sono remoti. Inoltre, visto che il problema risiede nel modo in cui funziona il protocollo Google-Apple basterà aggiornarlo per risolvere la questione: una patch distribuita tramite un aggiornamento di iOS e dei Google Play Services sistemerà tutto.
L’unica considerazione che si può fare è sulla opportunità che dovrebbero cogliere Google ed Apple, in questo frangente, per rilasciare totalmente il codice del protocollo GAEN al pubblico: ovvero renderlo open source, in modo tale che per i ricercatori e gli addetti ai lavori sia possibile contribuire in modo diretto a scovare bug come questo e suggerire le correzioni più indicate. In questo senso, meglio hanno fatto i Paesi come Germania e Italia che sono partiti direttamente con app FOSS: il codice di immuni è tutto su GitHub, le aziende di Cupertino e Mountain View dovrebbero fare altrettanto con il loro.