Dopo una serie di gaffe di sicurezza nei primi anni di vita del servizio, WhatsApp ha adottato da qualche tempo, per tutte le conversazioni, il protocollo di crittografia end-to-end Signal . Il ricercatore Jonathan Zdziarski ha però scovato una falla di tipologia completamente differente, riguardante la cosiddetta crittografia a riposo , la cifratura che interessa i dati quando sono memorizzati in locale.
“La questione chiave è che le comunicazioni effimere non lo sono quando arrivano su un disco”, ammonisce il ricercatore di sicurezza nel post in cui descrive la sua scoperta. Ogni operazione con cui l’utente pensa di agire su una conversazione singola o di gruppo, sia essa la cancellazione, lo svuotamento di singoli messaggi o l’archiviazione, non comporta l’effettiva rimozione dei messaggi sul disco . I record del database SQLite utilizzato da WhatsApp come backend per la memorizzazione non vengono alterati immediatamente, e rimangono quindi disponibili per l’estrazione con semplici tecniche di computer forensics a chiunque riesca a mettere le mani sul database. L’unico modo con cui Zdziarski è riuscito a cancellare realmente ogni traccia è attraverso la disinstallazione e reinstallazione dell’app.
SQLite è utilizzato come meccanismo di storage basato su database, ed una scelta popolare tra gli sviluppatori poiché permette di garantire la coerenza e l’ atomicità , ovvero che non si possa raggiungere uno stato in cui i dati sono stati solo parzialmente memorizzati. Una caratteristica interessante alla luce di possibili crash o batterie che muoiono improvvisamente. Il cuore della vulnerabilità risiede nel modo in cui SQLite gestisce i record da cancellare, marcandoli come “liberi” in una lista apposita ma di fatto senza renderli disponibili immediatamente per la sovrascrittura , come invece avviene tipicamente sui blocchi di un filesystem precedentemente occupati da un file. Perché i record vengano sovrascritti bisogna attendere un’operazione di espansione o riduzione del database, che però non avviene se non dopo molte altre operazioni e un periodo di tempo che può anche durare mesi.
WhatsApp non esibisce un comportamento malevolo cercando di preservare dati sensibili, ma scarta regolarmente i record con l’istruzione “delete”. Si tratta di un problema intrinseco a tutte le applicazioni che utilizzano SQLite senza lanciare l’istruzione di compattazione “vacuum”, la quale però costituisce una completa rigenerazione del database e come tale esibisce problemi di performance e, sulle memorie flash, di riduzione della vita utile, e come tale viene adoperata raramente. Anche iMessage di Apple soffre della stessa problematica , che rende i messaggi recuperabili fino alla successiva operazione di compattazione.
Il problema viene mitigato dalla presenza di un layer di crittografia superiore, come nel caso della full disk encryption presente su tutti i dispositivi Apple recenti e su alcuni Android. Tuttavia Zdziarski mette in guardia rispetto al fatto che il database di WhatsApp non sia presente solo sul dispositivo locale: è incluso nei backup effettuati da iTunes una volta collegato il dispositivo ad un PC, e nei backup in iCloud. Mentre i primi hanno un’opzione che permette di memorizzarli in forma cifrata sul disco del computer, il backup nel cloud di Apple non onora la preferenza crittografica dell’utente , salvando conversazioni che possono essere ad esempio richieste ad Apple dalle forze dell’ordine ed estratte.
In attesa di un fix da parte di WhatsApp, che secondo Zdziarski potrebbe comportare una sovrascrittura preliminare del record prima di marcarlo come libero, ma anche l’abbandono completo di SQLite come meccanismo di storage, gli utenti che vogliano rendere meno pericoloso il problema hanno alcune opzioni: disabilitare i backup iCloud e affidarsi solo a quelli iTunes che hanno disponibile la cifratura, ma soprattutto cancellare e reinstallare periodicamente l’applicazione per forzare la cancellazione del database. L’unico a trovare una nota positiva sembra essere il CEO di Telegram Pavel Durov, che ne ha approfittato per rivalersi sulle tante critiche (con qualche ammenda ) alla sicurezza del suo client, il principale concorrente di WhatsApp.
Even for 10% of something like this security experts would tear Telegram apart with hundreds of NEVER USE IT tweets. https://t.co/Y0VrhhFj2b
– Pavel Durov (@durov) 29 luglio 2016
Stefano De Carlo