EXECUTIVE SUMMARY:
Con questo articolo vogliamo presentare uno studio sulla
Piattaforma Whatsapp ed i rischi ad essa connessi. Abbiamo inoltre
provato a fare un confronto con la Piattaforma Signal.
Seppure si tratti di uno studio parziale, è comunque uno studio
molto articolato, per cui con questa prefazione presentiamo i
risultati dell’analisi allo scopo di fornire al lettore frettoloso
o non esperto un’idea di massima su quanto svolto.
Consigliamo comunque la lettura dell’articolo completo per
approfondire le tematiche e le analisi effettuate.
Come primo passo, si è effettuato uno studio sul protocollo di
cifratura utilizzato da Whatsapp.
Dall’analisi è emerso che
il livello di cifratura è sufficientemente elevato per l’utente
medio.
Per la natura closed-source della piattaforma, il caso
Cambridge Analytica e il comportamento di Facebook in materia di
trattamento dei dati, se ne sconsiglia l’utilizzo in ambito
classificato o qualora le informazioni siano considerate di elevato
valore (brevetti, segreto industriale ecc.).
Per tali ambiti, ovviamente non appartenenti al mercato “consumer”, è necessario che i vendor stessi possano offrire garanzie adeguate per quanto concerne sicurezza, privacy, compliance e trattamento dei dati.
Tali garanzie, oltre che essere presenti a livello tecnico, devono essere regolamentate anche a livello contrattuale con il vendor stesso.
Analizzando la rete
e gli indirizzi IP contattati dall’applicazione, è emerso che
molti file malevoli, nel tempo, hanno contattato i server della
Piattaforma.
Questo è dovuto all’enorme diffusione dell’app
di messaggistica ed al fatto che sia effettivamente semplice
modificare il client web per veicolare attacchi verso altri
utenti.
Nell’analisi è presente un esempio di vulnerabilità,
ora risolta, riguardante questo tipo di modifica del client
web.
Confrontando questo aspetto con la piattaforma Signal,
Whatsapp presenta un rischio maggiore.
Un ulteriore rischio, dovuto alla natura closed-source
dell’applicazione, è la possibile implementazione del cosiddetto
“Ghost Protocol” che consiste nella presenza di un utente di
terze parti invisibile, il quale (facendo parte della conversazione)
può ricevere i messaggi di tutti gli interlocutori.
Nello studio “Chiffrement de messagerie quasi instantanée : à
quel protocole se vouer ?”,
pubblicato da Florian Maury nel 2017, viene spiegato che il
protocollo Signal non è esattamente aperto come sembra e che per
garantire una maggiore sicurezza degli utenti, l’ideale sarebbe
utilizzare il protocollo OMEMO.
Di seguito una comparativa di
sintesi:
Fonte:
“Chiffrement de messagerie quasi instantanée : à quel protocole
se vouer ?”, Florian Maury, 2017
Di seguito si riporta la traduzione della tabella e una breve spiegazione dei punti presi in esame nello studio di Florian Maury:
Quasi istantaneo: Analizza la bontà della cifratura applicata alla messaggistica istantanea
Decentramento: Analizza quanto le piattaforme in analisi sono decentrate
PFS: Analizza la bontà dell’implementazione della Perfect Forward Secrecy da parte della Piattaforma analizzata
Ripudiabilità: Proprietà di un cifrario che permette ad un utente di negare che abbia inviato un messaggio
Identificatori: Indica la possibilità di risalire all’identità dell’utente (ad esempio, per Signal è bassa perché utilizza come identificatore il numero di cellulare.
Cifratura: Indica la bontà del sistema crittografico e dell’implementazione dello stesso nel software.
Implementazioni Libere: Indica se esistono implementazioni Open Source del software
Specifiche Pubbliche: Indica se tutte le specifiche del software sono pubbliche e facilmente reperibili.
Sistema gestione chiavi: Indica l’affidabilità del sistema di gestione delle chiavi, come ad esempio lo scambio delle chiavi.
Distribuzione: Indica quanto è diffuso un determinato software o sistema crittografico applicato alla messaggistica istantanea.
=======
Dall’analisi delle porte utilizzate dall’applicazione WhatsApp,
si è rilevato l’utilizzo di una porta non standard.
Questo
espone gli utenti ad eventuali rischi sia in caso di controllo del
traffico di rete, sia nel caso ci sia un aggressore attivo, che può
concentrare i propri sforzi solo sul servizio non standard.
L’analisi ha dimostrato inoltre come sia molto semplice recuperare
da un dispositivo le chiavi e il database dei messaggi, naturalmente
ciò è subordinato alla possibilità di accesso fisico al
dispositivo.
E’ stato riscontrato come i link di invito ai gruppi di Whatsapp
siano indicizzati su Google, esponendo gli utenti ad un rischio
importante per la segretezza delle comunicazioni.
Confrontando quanto analizzato con la Piattaforma Signal, si è
rilevato che Signal, data la sua natura open-source (con le dovute
riserve), sia considerato generalmente più robusto rispetto a
WhatsApp .
E’ stato preso in considerazione anche un caso reale di richiesta
dei dati da parte di uno Stato, ed è stato possibile dimostrare
come, proprio per la natura open dell’applicazione, la stessa
risulti essere più robusta rispetto a Whatsapp. Vi è da dire,
comunque, che sono poche le persone in grado di analizzare e
verificare l’intero codice dell’applicazione, pertanto il rischio
può considerarsi mitigato, ma non azzerato.
Si è rilevato come minacce sistemiche come il “Ghost Protocol”
siano più difficilmente implementabili nell’applicazione.
L’analisi di Signal, invece, ha mostrato la presenza di molti meno
file malevoli rispetto a Whatsapp, ma questo potrebbe essere dovuto
alla differenza di numero degli utenti attivi sulle rispettive
piattaforme.
E’ stato riscontrato che nonostante sia più difficile, anche per
Signal esiste in caso di possibilità di accesso fisico al
dispositivo, la possibilità di bypassare le misure di sicurezza dei
Sistemi Operativi mobili moderni tramite un software appositamente
creato.
Se si prevede un utilizzo in un ambito a
rischio, nel quale può esserci il rischio di accesso fisico al
dispositivo da parte di estranei, entrambe le piattaforme non
andrebbero utilizzate.
In conclusione, nel caso in cui non sussista il rischio di accesso fisico al
dispositivo o si prevede che l’avversario non abbia i mezzi
necessari per utilizzare determinati controlli o software, si
consiglia l’utilizzo della Piattaforma Signal, per un utilizzo
comune è accettabile l’utilizzo di entrambe le Piattaforme.
Infine ricordiamo a tutti che tutte le analisi presentate sono
eseguite dall'esterno, ovvero senza conoscere lo stato interno delle
piattaforme e dei sistemi.
I rischi relativi a file malevoli
potrebbero essere, quindi, risultato di falsi positivi.
Il ragionamento utilizzato per effettuare la presente analisi è di
tipo esterno “a scatola nera”, ovvero senza conoscere la
struttura della piattaforma.
Questo lo schema del ragionamento
utilizzato (replicabile in tutte le analisi di tipo esterno a scatola
nera).
Analisi della piattaforma Whatsapp e confronto con la piattaforma Signal.
SOMMARIO
Introduzione
Descrizione del Protocollo di Whatsapp
Considerazioni aggiuntive sul funzionamento di Whatsapp
Analisi Whatsapp
Conclusioni sull’analisi di Whatsapp
Analisi Signal
Conclusione analisi Signal e confronto con WhatsApp
Riferimenti
Introduzione
Whatsapp è l’applicazione di messaggistica istantanea più
utilizzata al mondo.
Questa analisi serve a capire il livello di sicurezza della
piattaforma, evidenziando eventuali punti deboli.
Dal momento che la Piattaforma presenta un bacino di utenti enorme, una falla di sicurezza attirerebbe attenzioni da parte di più aggressori rispetto ad altre Piattaforme e questo potrebbe avere ripercussioni maggiori sugli utenti.
Si potrebbe
pensare che un sistema così diffuso non abbia avuto problemi di
sicurezza ma non è così, per citare un esempio si segnala una
vulnerabilità, ora risolta, che permetteva la lettura dei file o
l’esecuzione di codice nel dispositivo della
vittima:
https://www.perimeterx.com/tech-blog/2020/whatsapp-fs-read-vuln-disclosure/
Whatsapp ha un modello di
funzionamento client/server di questo tipo:
Client (App) →
Trasporto pacchetti cifrato → Server (Piattaforma)
Il Client è una App, di conseguenza l’analisi si svolgerà tramite
un metodo che consenta di verificare la sicurezza su dispositivi
mobili.
Il modello server/client utilizzato da Whatsapp può essere
schematizzato nel seguente modo:
Questo
è uno schema esplicativo.
(Il logo di Whatsapp e di Facebook
appartengono a Facebook Inc.)
Il Trasporto dei dati avviene in maniera cifrata (end-to-end) ovvero
dal client di invio al client di destinazione, senza che nemmeno la
piattaforma possa leggerne il contenuto.
Prima di descrivere il funzionamento del protocollo, è necessario un
approfondimento sulle terminologie utilizzate, a partire dalle chiavi
di cifratura.
Che cosa si intende con “chiavi”:
Una chiave crittografica è un’informazione che serve a “bloccare”
o “sbloccare” delle funzioni crittografiche.
Non si pensi
alla chiave crittografica come ad una password bensì come ad una
chiave fisica: la chiave fisica, per poter essere utilizzata, ha
bisogno della sua serratura.
Allo stesso modo, la chiave
crittografica permette di “azionare” l’algoritmo crittografico
specifico per il tipo di chiave e permettere quindi allo stesso di
“cifrare” o “decifrare” dei dati.
Nel caso dell’algoritmo in analisi, viene generata una coppia di
chiavi, una pubblica e una privata.
La chiave pubblica deve essere distribuita, mentre quella privata
deve essere conservata dall’utente.
Essendo le chiavi pubbliche disponibili a tutti, il mittente del
messaggio provvede a cifrare il messaggio con la chiave pubblica del
destinatario.
Una volta che il messaggio è stato cifrato, solo
il destinatario può decifrarlo perché solo lui possiede la chiave
privata.
Questo tipo di algoritmi vengono chiamati “algoritmi di cifratura
asimmetrica” perché, appunto, servono due chiavi (pubblica del
destinatario per cifrare e quella privata del destinatario per
decifrare).
Nel nostro caso abbiamo un tipo di crittografia a 128 bit in cui il
numero di bit rappresenta la lunghezza della chiave.
Più la chiave è lunga, più sarà difficile a posteriori per un
attaccante recuperarla o “forzarla”.
Per un approfondimento delle chiavi e algoritmi di cifratura
utilizzati da WhatsApp, vedere “Reference 1 - Chiavi e
algoritmi utilizzati da WhatsApp” presente a fine
Studio.
Descrizione del Protocollo di Whatsapp
Passiamo ora alla descrizione del protocollo vero e proprio, in ogni
sua fase:
Registrazione;
Creazione di una sessione cifrata;
Ricezione di una nuova sessione cifrata;
Scambio dei messaggi;
Trasmissione di media;
Gruppi;
Telefonate.
1 - Registrazione
Al momento della registrazione al servizio, il Client (l’App di
Whatsapp) trasmette al server la chiave pubblica di identità
(Identity key pair), la chiave pubblica pre-firmata ( Signed Pre-Key)
e una serie di chiavi pubbliche (One-Time Pre-Keys).
Il server
provvede a memorizzare questa serie di chiavi pubbliche, associate
all’identificativo dell’account.
Nonostante il server non
abbia accesso alle chiavi private, il client ha comunque accesso alle
chiavi private ma non essendo open source non è possibile accertare
il comportamento dell’applicazione installata sullo smartphone
rispetto alle chiavi private. Questo è un primo elemento di rischio.
Sono presenti dei rischi legati alla generazione di chiavi
casuali.
Per generare le chiavi, i software (non solo Whatsapp)
utilizzano dei “generatori di numeri casuali”, i quali in realtà
sono delle funzioni che generano dei numeri pseudo-casualmente
partendo da un valore iniziale chiamato “seme” (seed).
Se ad un generatore di numeri casuali si passa lo stesso seed
iniziale, il software genererà sempre la stessa sequenza di numeri
(non essendo, appunto, realmente casuale).
Per ovviare a questo problema, i PRNG (Pseudo-Random Number
Generators, Generatori di Numeri Pseudo-Casuali, appunto) utilizzano
varie informazioni di difficile reperimento, come ad esempio una
combinazione di data, ora, spazio rimanente su disco e nome del
dispositivo, solo per fare un esempio.
Esiste comunque il rischio che un attaccante riesca a capire come il
PRNG generi i valori pseudo-casuali, riuscendo così a rigenerare le
stesse chiavi, invalidando così il sistema crittografico.
2 - Creazione di una sessione cifrata
Per comunicare con un altro utente, il client deve generare una
sessione cifrata con l’altro client.
Una volta generata la
sessione cifrata, il client non reinizializza la sessione finchè
l’App non viene reinstallata.
Il documento che esplica il protocollo di comunicazione non parla di
reinizializzazione delle chiavi, ciò può generare questo dubbio:
l’inizializzazione delle chiavi avviene solo alla PRIMA
registrazione?
Per essere più chiari, il documento parla di
“fase di registrazione”.
Nella sezione successiva (sessione cifrata) dice espressamente che i
client non hanno bisogno di ricostruire una sessione cifrata fino al
cambio dispositivo o reinstallazione dell’App.
Di conseguenza, non è chiaro se le chiavi private vengano
EFFETTIVAMENTE rigenerate alla reinstallazione o al cambio di
dispositivo, oppure vengano generate SOLO in fase di registrazione
(in pratica quando il server vede che il nostro numero di telefono
non è presente nel Database degli utenti).
Se le chiavi private fossero generate solo in fase di registrazione,
questo potrebbe significare che il server è in grado di conservarle.
Per stabilire una sessione, un client richiede le seguenti chiavi
pubbliche al server:
Identity Key
Signed Pre-Key
One-Time Pre-Key
Il server risponde con i dati.
In fase di registrazione, il
client invia una serie di One-Time Pre-Key.
Nello stabilire una
sessione cifrata, il server restituisce una singola chiave One-Time
Pre-Key.
Il server, contestualmente alla risposta, rimuove la One-Time Pre-Key
restituita al client.
Se non vi sono One-Time Pre-Keys, il server non invia la One-Time
Pre-Key.
Il client, una volta ricevute le chiavi pubbliche, può caricare
anche la propria Identity Key per generare un cosiddetto
“master_secret”.
Dal “master_secret” vengono generate una “Root Key” e le
relative “Chain Keys” (vedere sezione precedente, “sessioni
cifrate”).
3 - Ricezione di una nuova sessione cifrata
Una volta creata la sessione, il client può cominciare ad inviare
messaggi al destinatario.
Finchè il destinatario non risponde,
il mittente include nell’header dei messaggi la richiesta di
costruire una corrispondente sessione cifrata.
Per chiarezza, e per spiegare che cosa è un “header”, si prenda
come esempio una busta postale.
L’header sono i dati che
permettono alla busta di viaggiare in maniera corretta verso la
destinazione come ad esempio, l’indirizzo postale.
Viene
definito “payload”, invece, il contenuto stesso della busta.
Nel
nostro caso, l’header è incluso nel messaggio e non viene
visualizzato dall’utente, mentre il payload è il messaggio che
l’utente invia al destinatario.
Una volta ricevuta la richiesta, il destinatario crea un
corrispondente “master_secret”, elimina la “One-Time Pre-Key”
usata dal mittente che ha generato per primo la sessione cifrata e
calcola una “Root Key” e relative “Chain Keys” dal
“master_secret”.
4 - Scambio dei messaggi
Una volta costruita la sessione cifrata, i messaggi scambiati vengono
criptati con AES256 e HMAC-SHA256 per garantire l’autenticità e
l’integrità degli stessi.
Ad ogni messaggio viene cambiata la
“Message Key” (vedere sopra i tipi di chiavi utilizzate per le
sessioni cifrate).
La Message Key è “effimera”, ovvero viene generata in maniera
tale che non può essere ricostruita partendo dallo stato della
sessione cifrata.
La Message Key viene derivata dalla Chain Key del mittente.
Ad
ogni scambio di messaggi, viene rigenerata anche la Chain Key.
Questo garantisce la cosiddetta “Forward Secrecy”.
La
“Forward Secrecy” o “Perfect Forward Secrecy” (PFS) è una
proprietà che garantisce che nel caso una chiave a lungo termine
(come ad esempio la Identity Key) fosse compromessa, le sessioni
generate da quella chiave siano comunque sicure.
5 - Trasmissione di media
Tutti i media e gli allegati ai messaggi sono cifrati end-to-end.
Il
mittente invia un messaggio generando una chiave effimera AES256 e un
effimero HMAC-SHA256.
Il mittente cifra l’allegato con AES256 con un IV randomico
e appende alla fine, un HMAC-SHA256.
Il mittente fa l’upload di questi dati cifrati in uno spazio
apposito.
Il mittente invia al destinatario un normale messaggio cifrato,
contenente la chiave di cifratura, la chiave HMAC, un hash SHA256 che
rappresenta il file uploadato e un puntatore che dice al destinatario
da dove scaricare il file cifrato.
Il destinatario può quindi ricevere il file e decifrarlo.
Il documento, su questa parte, non si sofferma nello specificare come
fa il destinatario a decifrare il file se l’IV è randomico e non è
stato trasmesso.
Il documento (pagina 6: “Transmitting Media and Other Attachments”)
dice espressamente che viene cifrato l’allegato con la chiave di
cifratura e IV randomico, ma l’IV non viene successivamente
menzionato.
Sarebbe utile per gli utenti (per lo meno in alcuni ambiti sensibili)
conoscere lo schema di funzionamento preciso delle varie funzioni.
6 - Gruppi
La prima volta che un utente scrive su un gruppo, il mittente genera
una Chain Key da 32 byte.
Il mittente genera una coppia di Signature Keys di tipo Curve25519.
Il mittente combina la Chain Key da 32 byte con la Signature Key
pubblica, in un messaggio di tipo “Sender Key”.
La “Sender Key” viene cifrata e distribuita individualmente ad
ogni membro del gruppo.
Per tutti i messaggi successivi, il mittente calcola la Message Key
dalla Chain Key e aggiorna la Chain Key.
Il mittente cifra il messaggio con AES256.
Il mittente “marca” il messaggio con la Signature Key.
Il messaggio cifrato viene inviato al server, il quale distribuisce
il messaggio a tutti i membri del gruppo.
Se un utente lascia un gruppo, tutti i partecipanti eliminano la
Sender Key.
7 - Telefonate
Le chiamate voce e le videochiamate, sono criptate nel seguente modo:
Il chiamante genera una chiave di 32 byte SRTP.
SRTP (Secure
Real-Time Transport Protocol) è un protocollo che definisce uno
standard per le comunicazioni in tempo reale di tipo audio e video su
Internet, garantendo la sicurezza e l’integrità del trasporto dei
dati.
La chiave SRTP viene trasmessa al destinatario tramite normale
messaggio cifrato.
Il destinatario può quindi stabilire una chiamata o videochiamata
cifrata, conoscendo la chiave.
Considerazioni aggiuntive sul funzionamento di Whatsapp
Vi sono degli altri comportamenti del sistema di cui occorre tener
conto:
L’applicazione non consente di proteggere i backup delle chat
con password.
WhatsApp permette di salvare sul Cloud
(Google Drive) i backup delle nostre conversazioni.
Purtroppo,
il backup in Cloud viene effettuato in chiaro e non è ancora disponibile la funzione che permette di applicare
una password.
In un ambiente che richiede segretezza elevata,
si sconsiglia a priori l’utilizzo della funzione di salvataggio
dei backup in Cloud fino a quando non si potranno proteggere con la
password.
Notifiche di lettura dei messaggi:
Per
impostazione di default, WhatsApp avvisa l’utente che un messaggio
è stato letto dal destinatario (doppia spunta blu).
Di per se
questa opzione potrebbe risultare comoda, tuttavia viene considerata
come restrittiva per la privacy.
WhatsApp mette quindi a
disposizione la possibilità di disattivare le conferme di lettura
ma la disattivazione risulta bidirezionale, ovvero sia i contatti
che l’utente non riceveranno più le conferme.
Inoltre,
questa opzione non è valida per i gruppi, dove comunque i
partecipanti continuano a ricevere le conferme di lettura
dall’utente.
L’applicazione non filtra le estensioni dei file in
invio:
Normalmente WhatsApp viene utilizzata anche
per l’invio di documenti e file di vario genere.
Tuttavia se
l’utente sceglie di allegare un file, e si sceglie “Documento”,
l’applicazione non effettua un controllo sulle estensioni dei file
ammessi.
E’ possibile quindi inviare dei file eseguibili o
degli archivi zip oppure, ad esempio, applicazioni in formato “APK”,
ovvero installabili sul proprio telefono, di dubbia provenienza.
Si
consiglia, quindi, di non accettare a priori qualunque file
scambiato e di verificarne sempre il contenuto con il mittente.
In caso di eliminazione dei messaggi, l’applicazione visualizza
comunque una notifica all’interlocutore
Nel caso un
utente invii erroneamente un messaggio, una volta eliminato WhatsApp
mostra la frase “Questo messaggio è stato eliminato” al posto
del contenuto originale.
Questo tipo di comportamento,
apparentemente banale, mostra agli interlocutori che un messaggio è
stato effettivamente inviato.
Sarebbe meglio se l’eliminazione
del messaggio fosse totale per tutti gli interlocutori.
Mancanza di messaggi a tempo
Su WhatsApp non è
presente una funzione che permette l’invio di messaggi che si
“autodistruggono”.
In alcune situazioni, potrebbe essere
molto utile avvalersi di una impostazione che permette ai messaggi
di auto-eliminarsi dopo un determinato periodo di tempo impostato
dagli utenti.
Analisi Whatsapp
Passiamo ora all'analisi vera e propria.
Il Server è rappresentato dalla Piattaforma Facebook, la quale ha
acquisito Whatsapp, di conseguenza è necessario considerare il
rischio che Facebook possa interagire con il traffico generato
dall’applicazione.
Si consideri comunque che
l’applicazione interagisce anche con il Sistema Operativo
sottostante e che altre applicazioni possono interagire con Whatsapp
stesso.
Per prima cosa, si analizza lo stato della rete della Piattaforma,
per verificare la presenza di eventuali file malevoli che comunicano
con il dominio.
Non sono stati trovati evidenti indicatori di minacce recenti
comunicare direttamente con gli indirizzi IP della Piattaforma (a
questo punto dell’analisi).
La Piattaforma presenta, invece, molteplici file malevoli che
comunicano con i vari sottodomini.
Di seguito gli Indicatori rilevati come minacce recenti, i quali
comunicano direttamente con la Piattaforma:
Dominio:
web.whatsapp.com
Hash:
183ddb9b37b549f7673ac38ec2ca15e1516655d559f20eaf63146a4030073d2d
Si esegue l’estrazione completa degli Indicatori di Compromissione.
Mappa
della rete:
Come si può notare dalla mappa di rete (i punti rossi sulla mappa),
è possibile rilevare che nel tempo sono stati creati degli APK
(pacchetti di installazione per il Sistema Operativo Android) e degli
eseguibili malevoli, è quindi possibile dedurre che esiste un
rischio persistente che il nostro client possa interagire con un
client malevolo.
Dopo aver analizzato lo stato attuale della rete ed eventuali
Indicatori, si può esaminare il protocollo di trasporto dati della
Piattaforma.
Whatsapp utilizza un protocollo di cifratura di tipo “end-to-end”
il che significa che qualunque dato in transito può essere
visualizzato solo dal mittente e dal destinatario.
La Piattaforma utilizza di default la crittografia end-to-end ma
consente, tramite un’impostazione, di visualizzare quando la chiave
dell’interlocutore cambia:
Questo accade ad un cambio telefono o ad una reinstallazione
dell’applicazione ed è utile per evitare Man in the Middle, ovvero
questa funzione è utile a capire se l’utente sta parlando con il
reale interlocutore in quanto, in caso di dubbio, l’utente può
chiedere (ovviamente di persona) al diretto interessato se ha
cambiato telefono o reinstallato l’applicazione.
Da questo documento è possibile comprendere che il protocollo per
cifrare i dati end-to-end si basa su quello di Signal.
La Electronic Frontier Foundation (EFF), Fondazione senza scopo di
lucro creata per difendere i diritti e la privacy degli utenti in
rete, ha scritto un interessante documento riguardo la sicurezza
dell’applicazione su SO Android, riportato in questo
link:
https://ssd.eff.org/en/module/how-use-whatsapp-android
Lo studio effettuato dalla EFF evidenzia alcune preoccupazioni in
merito alle impostazioni sulla privacy dell’applicazione.
In
particolare l’utente non può rifiutare un eventuale utilizzo dei
dati telemetrici inviati dalla stessa verso i server di Facebook.
In dettaglio, secondo quanto affermato dalla EFF, i vecchi utenti
Whatsapp (all’acquisizione della stessa da parte di Facebook)
avevano un periodo di tolleranza per modificare le proprie
impostazioni di privacy per impedire a Facebook di suggerire amicizie
o presentare pubblicità mirate partendo dai dati raccolti da
Whatsapp.
I nuovi utenti non hanno questa possibilità, ovvero con l’utilizzo
di Whatsapp l’utente accetta la condivisione dei dati per intero.
Nonostante Facebook dichiari che i dati non vengono condivisi nè
rivenduti a terzi, il caso Cambridge Analytica (link:
https://www.ilpost.it/2018/03/19/facebook-cambridge-analytica/)
non può che dimostrare che questa condivisione sia una minaccia
sistemica, ovvero
esiste un rischio di compromissione del
dato, a prescindere dalle falle/malware/bug presenti sulla
Piattaforma.
La EFF dichiara la sua preoccupazione rispetto alla versione web
dell’applicazione, in quanto può essere modificata per renderla
malevola o interagire in modo malevolo con essa, confermando quanto
riportato nella mappa di rete.
Per approfondire quanto la versione web di WhatsApp influisca sulla
sicurezza dell’intera Piattaforma, Robert Heaton nel 2017 ha
pubblicato un interessante post sul suo blog dove descrive come effettuare un efficace tracking dei propri
contatti grazie alla manipolazione dell’interfaccia web.
Sempre a livello di trasporto, si segnala che la cifratura end-to-end
è utile fin quando si può considerare “trusted” l’applicazione.
In dettaglio, Whatsapp è un’applicazione closed-source.
Questo
vuol dire che nessuno, a parte Whatsapp stessa, può sapere le
operazioni che compie l’applicazione.
E’ comunque disponibile un documento, linkato anche nella
spiegazione del protocollo all’inizio della presente analisi, che
spiega in dettaglio come Whatsapp effettua la cifratura.
In linea di massima, volendo essere paranoici, non si può sapere se
l’applicazione effettua l’upload dei messaggi in chiaro su altri
server.
Anche qui è possibile dimostrare che questa è una minaccia
sistemica.
Per dimostrare la minaccia, si può fare riferimento
al cosiddetto “Ghost Protocol”.
Il protocollo prevede, infatti, di mandare “in copia” qualunque
messaggio di un determinato client ad una terza parte, facente parte
della conversazione in maniera invisibile.
Per capire il reale impatto del Ghost Protocol sulla segretezza delle
conversazioni, è come se un programma di posta elettronica inviasse
in automatico, ad una terza persona, ogni messaggio inviato e
ricevuto in modalità “copia nascosta”, senza che l’utente
possa averne evidenza, compromettendo completamente la sicurezza
delle informazioni trasmesse.
Nella seconda metà del 2019 l’azienda ha negato di inserire il
Ghost Protocol, nonostante la richiesta di implementazione arrivasse
dal GCHQ (l’agenzia di sicurezza britannica).
Nonostante il
braccio di ferro, l’utente non può sapere con certezza se tale
protocollo (o misure simili) siano implementate all’interno
dell’applicazione.
Questo tipo di minaccia è, dunque, sistemica e in ambito
classificato l’applicazione può considerarsi compromessa fino a
prova contraria.
Continuando a parlare del livello di trasporto, si esamina a fondo
come comunica l’applicazione.
Per catturare i pacchetti in transito su un dispositivo reale, si può
utilizzare un firewall (si è utilizzato “NoRoot Firewall”)
purché tale firewall crei una “fakeVPN”, ovvero una VPN locale
al dispositivo, la quale redireziona tutto il traffico.
Tramite questo, è possibile analizzare il comportamento reale
dell’applicazione.
Il risultato è mostrato nel seguente screenshot:
Effettuando varie prove si può osservare lo stesso pattern.
E’
possibile che tale pattern cambi nel tempo o sia leggermente diverso
per un altro dispositivo.
Dato il pattern, si possono osservare vari fattori:
Utilizzo di una porta non standard (5222)
Comunicazione verso i server di Facebook
Utilizzo di una porta standard non sicura (80)
Utilizzo della porta non sicura verso un server non conosciuto
(216.58.208.142)
Il server 216.58.208.142 risulta essere di Google, presenta i
seguenti Indicatori che risultano malevoli, coi quali comunicano
direttamente:
e2902cfd28362d7a0eef21e47b544a8b8a1e1a89e57a4140851af00ed1276659
aeb3d16722b438693bdb9afe901715e906f381afe31eb1df3c5fe8cafd8fbc66
3d5d3d5f1b9152da8b9d923451c2740b1e1c1123124b36b6fa62bf496154847f
b6447e14be7082e1437cad2fd5939c4c2ffc5832334a400cec6e994b35510651
a9cfdfa12a256cb9eb4b8f246b246894ffc27d2b034371efa96f1ba0bfd5762e
1010a92ebcf27c9ee2622cf361bd6638de0d9b442f9c422122e777e70c67ff05
69125f4b57aa1abe929d096417d7abefccee291f2988c00f4d36cb11c2049734
154c37eaf9c4eb19a8cec6798c68c9ea3a728d5af237bbf5f221afbe15c1c264
6b02df8d965e0ba96f9888d14c5d410660c41faafdc29586da3781c8c0ac4ac4
1c139f12997bc88aa1efb925007cb3f0c7d6255ab1b5ca1aabfe6fab4532b825
3333a2c2b1f8ec95ef01f4ca596cd443f2c1ae5d70cc3c1dbb50aa0f1740d1ad
055c2eb240a91d8f081a5499593e3ead092f5f4b2285b9b053ebe6cd05b67b12
009e6c27fb56baa09e2445539a9df547f225c22f909d0dfb6004647f13ff8cb1
0e2e40e07ebdeeff248daaf1adc7b78a03a873ca28de1bc73fbc0e64b6f4827f
6b331a27bcc06b2a7fd5060e2fc24285252ad8a4e3e7011ae774edc45b5fe2ca
5ecc6def525b09643d661958b63d7c65a9b93f6b10a27f001363b1790fe751e2
cb8bf1e4f331ea5a4b65a63c4a7c111d6677503b84e59eaff55f2ab95bd55a18
92d398b48f0ce44dc5f135653315aa80e21a8207e034038b52a3e2c235cafef8
b54a8f8d54d64ed346e04f03c027b960fda444505edeb7206b67d83482589d63
d039417cc0375f0d1106e140daa1c4a418cff02443b17ac49fc254ff5305ceba
a544e4f53e893c75514214338bcd33f5ca5a40a6d4a15e1bf8ca68a315a90d55
93db8dd78deecba7326a0c1975edf7bdc0f0bde230540bf887d169217570b741
108edb4cbd90116a725f43f1fad83cfc206303d1e66e3f6ae1d688e6ed0e5119
680dcb42f379d5be2484cd6b437d05e4fad42acfc6e32a726515b3f8aee81327
6757efaf6a6e068b6a4e346c1be0db6198c2888aa537a4f33bc60fe241286c09
9444e490c98c6a516bcaf6f81967b0c0e794f100ba616fcef33eee2264bb11d9
ff61097837d9226e6584b1ae25f5a1a164e4b168718227570025059bf0ad49e9
1b82460806a2d59f49ab82f8302191e500ff9161c5739e9697d22633d00555aa
14d1d88aa38dec7054f1a6fcd2874544640d4e4e9b5fe35b883017f228df16f9
11d85f340f1e133f8cdac2ef2710050311e18d050e7f088941944cd16eaedf23
2857d0f663bad67f930d38de439161dc205b67594f091e07b5fc9e4dd5a27454
9fc4a744fe5044d299e9385b1dbe0a317891546ee28226e0cd9bcb514cfb3ceb
0de6c92a30b63016e7fc42a2becc9f5f96ecaeed3b3440b0a53b064b0860ac24
|
Si procede, quindi, con l’individuazione di tutti gli Indicatori.
Estrazione
completa:
Come si può osservare, anche in questo caso si ha nel tempo una
moltitudine di Indicatori malevoli.
Si analizza ora il secondo indirizzo IP: 157.240.193.50
Questo
indirizzo IP non presenta Indicatori che comunicano direttamente.
Si analizza ora il terzo indirizzo IP: 157.240.193.55
Anche
questo indirizzo non presenta Indicatori che comunicano direttamente.
Si prendano ora in analisi le porte utilizzate.
Ragionando in ambiti aziendali, la porta 80 e 443 sono comuni, quindi
c’è molta probabilità che i Firewall non blocchino tali porte.
A differenza delle due porte sopra citate, la 5222 viene utilizzata
da Google Talk, Whatsapp e dai server Jabber, ovvero un tipo di
server utilizzato per servizi di messaggistica istantanea.
L’aumento delle scansioni non è direttamente collegato a Whatsapp,
ma è possibile dimostrare che esiste un rischio nell’utilizzo di
una porta non standard.
Il problema dell’utilizzo di tale porta riguarda un’eventuale
ispezione del traffico a livello di rete.
Sapendo che la porta 5222 viene utilizzata da tali servizi, è
possibile scansionare/attaccare tali dispositivi miratamente al
singolo servizio, facendo concentrare gli sforzi dell’attaccante su
un singolo protocollo, riducendo anche lo sforzo che l’attaccante
ha bisogno di effettuare.
Una volta analizzato il trasporto, si può analizzare il rischio
nell’utilizzo della Piattaforma nella sua forma originale, ovvero
tramite applicazione.
Non è comunque presente una minaccia diretta, in quanto la versione
attuale non è compresa nella lista delle vulnerabilità conosciute.
Nonostante questo, l’ecosistema del dispositivo non può essere
sottovalutato.
I dispositivi mobili, a differenza dei computer,
presentano una superficie d’attacco più ampia per via della loro
natura.
Devono essere semplici da utilizzare, alla portata di
tutti e anche loro presentano delle minacce sistemiche, ovvero il
Sistema Operativo è più difficile da modificare/controllare, e di
solito i produttori bloccano i privilegi di Amministrazione (ovvero
un account con privilegi elevati, per poter lanciare comandi che
possano modificare il comportamento dello stesso Sistema), oltre ad
avere driver proprietari closed-source.
Oltre alle minacce sistemiche, i Sistemi Operativi per i devices
mobili sono molto complessi e proni a vulnerabilità più o meno
gravi.
Esiste la possibilità, quindi, per una app malevola o un attaccante
poter sfruttare delle vulnerabilità per ottenere privilegi anche
sull’applicazione.
Ma perchè concentrarsi anche sul dispositivo?
Perché
l’applicazione Whatsapp salva i propri Database dei messaggi
cifrati e le chiavi per la crittografia end-to-end direttamente sul
dispositivo.
Il test ha avuto successo su un dispositivo completamente aggiornato
e senza privilegi di root (privilegi di amministrazione sull’intero
Sistema).
Il test dimostra che tramite accesso fisico al dispositivo è
possibile recuperare anche le chiavi. Questo comporta una
compromissione totale dei dati in transito, vanificando ogni
implementazione della cifratura end-to-end.
Questo apre molti scenari in cui la sicurezza della comunicazione può
essere compromessa.
Si pensi ad esempio all’azienda israeliana
Cellebrite.
Tale piattaforma potrebbe essere implementata anche nei famosi
“totem” di ricarica, ovvero dei punti-informazione presenti in
aeroporti e stazioni.
Si indica, infine, un’analisi comportamentale dell’applicazione
effettuata in sandbox tramite VirusTotal, per rilevare
“comportamenti” sospetti.
Il consiglio è quello di non collegare mai dispositivi a prese USB
dirette, ma utilizzare sempre l’alimentatore con normali prese
elettriche e munirsi, al limite, di power banks.
Vi è da segnalare un comportamento molto rischioso per gli utenti,
riguardante il link di invito ai gruppi.
Il giornalista Jordan
Wildon ha riportato, tramite Twitter (link:
https://twitter.com/JordanWildon/status/1230829082662842369)
che tramite la funzione “Invita tramite link” i gruppi vengono
indicizzati su Google.
Questo significa che, tramite una semplice ricerca “personalizzata”
è possibile entrare nei più disparati gruppi, esponendo i
partecipanti ad un rischio notevole.
Vi è da dire che la maggior parte di questi dati “esposti” da
Google, in realtà sono frutto di errori di configurazioni dei vari
server da parte degli Amministratori di Sistema.
Questo è un esempio di Dork per i suddetti gruppi di Whatsapp
(eseguito personalmente per verificare che fosse ancora “sfruttabile”
la Dork in questione):
L’indicizzazione dei gruppi avviene anche con Signal, sebbene può
avvenire solo con i gruppi aperti.
Nel caso dei gruppi privati,
l’indicizzazione non è ammessa.
Si può dire che sebbene il rischio esista, con Signal l’utente può
decidere come esporre il gruppo e, se privato, può decidere di non
esporlo.
Un’ultima, ma non meno importante analisi, riguarda i termini di
utilizzo e le note legali.
Di seguito si riportano i dubbi (non
confutabili data la natura closed-source dell’applicazione) che
possono sorgere leggendo i termini di servizio del servizio.
Per poter usufruire dei servizi offerti da WhatsApp, l’utente deve
accettare i suoi termini di utilizzo (questo è necessario per qualunque servizio di tipo commerciale).
Leggendo i termini di servizio, si può notare che:
“Ci impegniamo a fornire la sicurezza e la protezione di
WhatsApp prendendo misure appropriate in caso di persone offensive,
attività illecite e violazioni dei nostri Termini. Proibiamo l'uso
improprio dei nostri Servizi, il comportamento dannoso nei confronti
degli altri e le violazioni dei nostri Termini, Discipline e
Informative e ci impegniamo a far fronte a situazioni in cui possiamo
fornire supporto o protezione alla nostra community. Sviluppiamo
sistemi automatizzati per migliorare la nostra capacità di
individuare e rimuovere attività e persone pericolose che potrebbero
mettere a rischio la nostra community e la sicurezza e la protezione
dei nostri Servizi. Se veniamo a conoscenza della presenza di simili
attività o persone, adottiamo le misure appropriate rimuovendo tali
attività o persone o contattando le forze dell'ordine. Condividiamo
informazioni con altre società affiliate quando individuiamo un uso
improprio o un comportamento dannoso nell'uso dei nostri Servizi.”
La lotta (più che giusta) alle attività illecite fa sorgere in ogni
caso più di qualche domanda:
I sistemi automatizzati sopracitati in che modo svolgono la loro
funzione?
Esiste un database di “parole chiave” o “pattern”
direttamente all’interno dell’applicazione?
Dopo che
l’algoritmo ha verificato la presenza di attività potenzialmente
pericolose, ci sono delle persone che validano tali segnalazioni e
che quindi è possibile da parte dell’azienda leggere in chiaro le
conversazioni?
Un altro punto interessante sul quale riflettere, è il seguente:
Rubrica. L'utente ci fornisce regolarmente, conformemente alle
leggi applicabili, i numeri di telefono degli utenti di WhatsApp e di
altri contatti presenti nella rubrica del suo dispositivo mobile,
compresi quelli degli utenti dei nostri Servizi e degli altri
contatti.
Chi ci assicura che queste informazioni non vengano riutilizzate (e
questa domanda è valida per qualunque servizio di questo
tipo)?
Quali incroci vengono effettuati sui dati (stessa cosa,
qualunque servizio di questo tipo può farlo)?
Si noti ora, un passaggio fondamentale presente nell’informativa
sulla privacy:
Messaggi dell'utente. WhatsApp non archivia i messaggi dell'utente
durante la normale prestazione dei Servizi. Una volta consegnati, i
messaggi (compresi chat, foto, video, messaggi vocali, file, e
informazioni sulla posizione condivise) vengono eliminati dai nostri
server. I messaggi dell'utente vengono archiviati sul suo
dispositivo. Se non è possibile consegnare immediatamente un
messaggio (ad esempio se l'utente è offline), lo archivieremo nei
nostri server fino a 30 giorni nel tentativo di consegnarlo. Se dopo
30 giorni il messaggio non è stato ancora consegnato, verrà
eliminato. Per migliorare le prestazioni e consegnare i messaggi con
contenuti multimediali in modo più efficiente, ad esempio quando
molte persone condividono una foto o un video famoso, potremmo
archiviare tale contenuto nei nostri server per un periodo più
lungo. Offriamo inoltre la crittografia end-to-end per i nostri
Servizi, che è attiva per impostazione predefinita, quando l'utente
e le persone con cui messaggia utilizzano una versione della nostra
app rilasciata dopo il 2 Aprile 2016. La crittografia end-to-end
significa che i messaggi degli utenti sono criptati per impedire a
WhatsApp e a terzi di leggerli. Maggiori informazioni su Crittografia
end-to-end e Aziende su WhatsApp.
Questo punto rischia di mettere in discussione la solidità di tutta
la cifratura end-to-end.
Nel passaggio “WhatsApp non
archivia i messaggi dell'utente durante la normale prestazione dei
Servizi”, che cosa si intende per “normale prestazione”?
Inoltre, citando ancora: “Per migliorare le prestazioni e
consegnare i messaggi con contenuti multimediali in modo più
efficiente, ad esempio quando molte persone condividono una foto o un
video famoso, potremmo archiviare tale contenuto nei nostri server
per un periodo più lungo”.
Se anche i contenuti multimediali vengono cifrati end-to-end, come fa
WhatsApp a capire che un contenuto viene condiviso molte volte?
Altro punto interessante è sicuramente l’interazione tra
l’applicazione e il dispositivo:
Informazioni su dispositivo e connessioni. WhatsApp raccoglie
informazioni specifiche sul dispositivo e sulle connessioni quando
l'utente installa, accede o utilizza i nostri Servizi. Ciò comprende
informazioni quali il modello di hardware, le informazioni sul
sistema operativo, le informazioni sul livello della batteria, la
potenza del segnale, la versione dell'app, le informazioni sul
browser e sulla rete mobile, le informazioni sulle connessioni,
compreso il numero di cellulare, l'operatore mobile o il provider
ISP, la lingua e il fuso orario, l'IP, le informazioni sulle
operazioni dei dispositivi e identificatori come quelli dei
dispositivi (inclusi gli identificatori univoci per i prodotti
offerti dalle aziende di Facebook associati allo stesso dispositivo o
account).
Con questo, si noti l’enorme quantità di informazioni molto
rilevanti che l’applicazione raccoglie.
Un altro passaggio molto importante riguarda sicuramente la
collezione dei dati relativi al posizionamento:
Informazioni sulla posizione. WhatsApp raccoglie informazioni
sulla posizione del dispositivo se l'utente usa le funzioni relative
alla posizione, come quando decide di condividere la sua posizione
con i propri contatti, vedere posizioni vicine o quelle che gli altri
hanno condiviso con lui, e simili, e a scopi diagnostici e di
risoluzione dei problemi, ad esempio nel caso in cui l'utente
riscontri problemi con le funzioni di posizione dell'app. WhatsApp
usa varie tecnologie per determinare la posizione, tra cui IP, GPS,
segnali Bluetooth e informazioni sui punti di accesso Wi-Fi nelle
vicinanze, beacon e celle.
Un’ultima nota riguarda l’applicazione del Regolamento Europeo in
merito al trattamento dei dati personali GDPR.
E’ possibile richiedere che i propri dati non vengano più
elaborati.
Purtroppo non è presente una procedura automatica,
ma è necessario seguire la procedura indicata da WhatsApp, via e-mail, motivando la propria volontà di
essere esclusi dalla profilazione/elaborazione dei dati.
Se WhatsApp non dovesse ritenere fondato il motivo dell’utente può
rifiutare l’istanza dell’utente, il quale dovrà rivolgersi agli
organi di competenza (segnalati anche nella pagina apposita).
Conclusioni sull’analisi di Whatsapp
L’applicazione mette in campo una serie di misure di protezione che
sono dimensionate per il target prefissato, ovvero l’utente medio.
L’analisi dell’applicazione evidenzia che Whatsapp è adatto per
utilizzi comuni, mentre non dovrebbe essere usato in ambito
classificato o in situazioni in cui la compromissione della
comunicazione può rappresentare un pericolo per la vita
dell’utilizzatore o ancora in contesti dove il dato è ritenuto di
valore, anche se non è legato alla privacy (si pensi al segreto
industriale).
Analisi della Piattaforma Signal.