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.
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 ?”1,
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:
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:
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.
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.
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).
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/
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)
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.
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.
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.
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).
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 documento2 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”.
Una volta generata la sessione cifrata, il client non reinizializza la sessione finchè l’App non viene reinstallata.
Il documento2 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.
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.
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.
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).
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.
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.
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 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.
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 chiaro3 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
Dominio: web.whatsapp.com
Hash: 183ddb9b37b549f7673ac38ec2ca15e1516655d559f20eaf63146a4030073d2d
Si esegue l’estrazione completa degli Indicatori di Compromissione.
Estrazione
completa: https://otx.alienvault.com/pulse/5e35c5a4977b679705a90b1a
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.
Qui il dettaglio del Protocollo di comunicazione utilizzato dalla
Piattaforma:
https://scontent.whatsapp.net/v/t61/68135620_760356657751682_6212997528851833559_n.pdf/WhatsApp-Security-Whitepaper.pdf?_nc_ohc=CHOBWPVCIIYAX_XCiy_&_nc_ht=scontent.whatsapp.net&oh=15dfec47f6e56501d415bbd1443c6839&oe=5E3885A5
https://scontent.whatsapp.net/v/t61/68135620_760356657751682_6212997528851833559_n.pdf/WhatsApp-Security-Whitepaper.pdf?_nc_ohc=CHOBWPVCIIYAX_XCiy_&_nc_ht=scontent.whatsapp.net&oh=15dfec47f6e56501d415bbd1443c6839&oe=5E3885A5
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
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 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 blog4 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.
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”.
Per dimostrare la minaccia, si può fare riferimento al cosiddetto “Ghost Protocol”.
Il “Ghost Protocol” (link:
https://www.theguardian.com/uk-news/2019/may/30/apple-and-whatsapp-condemn-gchq-plans-to-eavesdrop-on-encrypted-chats)
è una procedura che evita di “rompere” la cifratura di
un’applicazione, pur avendo accesso a tutte le conversazioni.
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.
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:
https://otx.alienvault.com/pulse/5e36395f8654862296f22c8c
Mappa della rete:
Mappa della rete:
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.
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.
Anche questo indirizzo non presenta Indicatori che comunicano direttamente.
Si prendano ora in analisi le porte utilizzate.
- 80
- 443
- 5222
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.
E’ molto interessante osservare come da Settembre 2019 siano
aumentati in maniera esponenziale le scansioni attive su questa
porta:
https://isc.sans.edu/port.html?port=5222
https://isc.sans.edu/port.html?port=5222
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.
L’applicazione in se presenta 8
CVE:
https://www.cvedetails.com/vulnerability-list/vendor_id-19851/product_id-54433/Whatsapp-Whatsapp.html
https://www.cvedetails.com/vulnerability-list/vendor_id-19851/product_id-54433/Whatsapp-Whatsapp.html
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.
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.
Questa una lista di vulnerabilità di
Android:
https://www.cvedetails.com/product/19997/Google-Android.html?vendor_id=1224
https://www.cvedetails.com/product/19997/Google-Android.html?vendor_id=1224
Questa la lista di vulnerabilità del Sistema Operativo
iOS:
https://www.cvedetails.com/product/15556/Apple-Iphone-Os.html?vendor_id=49
https://www.cvedetails.com/product/15556/Apple-Iphone-Os.html?vendor_id=49
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.
Perché l’applicazione Whatsapp salva i propri Database dei messaggi cifrati e le chiavi per la crittografia end-to-end direttamente sul dispositivo.
Per questa analisi si è eseguito un test con questo
tool:
https://forum.xda-developers.com/showthread.php?t=1583021
https://forum.xda-developers.com/showthread.php?t=1583021
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.
Il recupero delle chiavi sembra essere possibile anche per Signal, il
quale però risulta essere molto più robusto, per questo tipo di
operazioni infatti, in Signal è necessario utilizzare un programma
di terze
parti:
https://blog.elcomsoft.com/2019/08/how-to-extract-and-decrypt-signal-conversation-history-from-the-iphone/
https://blog.elcomsoft.com/2019/08/how-to-extract-and-decrypt-signal-conversation-history-from-the-iphone/
Questo apre molti scenari in cui la sicurezza della comunicazione può
essere compromessa.
Si pensi ad esempio all’azienda israeliana Cellebrite.
Si pensi ad esempio all’azienda israeliana Cellebrite.
L’azienda in questione ha prodotto un software, UFED, che
permette di superare qualunque protezione, anche dei dispositivi High
End:
https://www.cellebrite.com/en/ufed-ultimate/
https://www.cellebrite.com/en/ufed-ultimate/
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.
L’analisi è pubblica, e non presenta comportamenti sospetti.
Questo il link
all’analisi:
https://www.virustotal.com/gui/file/4a7b1a8f5ab065978feb00fd8f90ba29f8c5b5ff6cd25970f33daa78d8b40e20/behavior/Tencent%20HABO
https://www.virustotal.com/gui/file/4a7b1a8f5ab065978feb00fd8f90ba29f8c5b5ff6cd25970f33daa78d8b40e20/behavior/Tencent%20HABO
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.
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.
Questo problema è noto già dal 2018, ed è presente anche un tipo
di “dork”5 sul portale “exploit-db”:
https://www.exploit-db.com/ghdb/4753
https://www.exploit-db.com/ghdb/4753
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.
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.
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 utilizzo6 (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?
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)?
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”?
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 procedura7 indicata da WhatsApp, via e-mail, motivando la propria volontà di essere esclusi dalla profilazione/elaborazione dei dati.
Purtroppo non è presente una procedura automatica, ma è necessario seguire la procedura7 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.
Signal è una applicazione per la messaggistica istantanea,
esattamente come Whatsapp, e ha un modello di funzionamento
“Client/Server” di questo tipo:
Client (App) → Trasporto
pacchetti cifrato → Server (Piattaforma)
Il modello di funzionamento è lo stesso di Whatsapp e il trasporto
dei pacchetti è sempre di tipo “end-to-end”.
Per essere precisi, Open Whisper Systems (gruppo no profit creatore dell’applicazione) ha creato il protocollo Signal, ripreso successivamente da Whatsapp.
Per essere precisi, Open Whisper Systems (gruppo no profit creatore dell’applicazione) ha creato il protocollo Signal, ripreso successivamente da Whatsapp.
La prima differenza riscontrabile è data dal tipo di Client e dal
tipo di Server.
La Piattaforma Signal è difatti completamente Open Source, ovvero è possibile leggere il codice sorgente dell’applicazione e del server.
La Piattaforma Signal è difatti completamente Open Source, ovvero è possibile leggere il codice sorgente dell’applicazione e del server.
Questo il Repository GitHub
dell’applicazione:
https://github.com/signalapp
https://github.com/signalapp
Come è possibile osservare, è presente sia il codice dei Client che
il codice del Server.
Si procede, quindi, all’analisi esterna della Piattaforma:
Indicatori rilevati:
IP: 104.16.54.111
Hash: 01733a96208c513bdd333efe56900bf0ae03fa28955085058a957a484d599cab
Hash: 01733a96208c513bdd333efe56900bf0ae03fa28955085058a957a484d599cab
Nonostante sia stato rilevato un solo Indicatore, si procede
all’estrazione di tutta la mappa di rete e tutti gli Indicatori
correlati e apparsi nel tempo.
Estrazione
completa:
https://otx.alienvault.com/pulse/5e393d8ae94aab466d01fe91
https://otx.alienvault.com/pulse/5e393d8ae94aab466d01fe91
Mappa
di rete:
Dalla mappa di rete si può comprendere che rispetto a Whatsapp, la
Piattaforma Signal abbia avuto nel tempo molti meno casi di file
malevoli, comunicanti con la stessa.
Questa potrebbe, comunque,
essere una conseguenza della minor diffusione del software.
Dopo aver analizzato la Piattaforma, si procede con l’analisi del
protocollo di trasporto.
La Piattaforma utilizza la crittografia “end-to-end”, ovvero i
pacchetti sono cifrati sul dispositivo mittente e decifrati sul
dispositivo destinatario, rendendo impossibile da parte del server la
lettura dei contenuti.
Qui sono presenti tutte le informazioni sul protocollo e le
specifiche di funzionamento di Signal:
https://signal.org/docs/
https://signal.org/docs/
La Electronic Frontier Foundation, Fondazione senza scopo di lucro la
cui Missione è difendere la privacy e i diritti dei cittadini
online, ha rilasciato delle note per l’utilizzo di Signal.
Note per l’utilizzo di Signal su Sistema Operativo
Android:
https://ssd.eff.org/en/module/how-use-signal-android
https://ssd.eff.org/en/module/how-use-signal-android
Note per l’utilizzo di Signal su Sistema Operativo
iOS:
https://ssd.eff.org/en/module/how-use-signal-ios
https://ssd.eff.org/en/module/how-use-signal-ios
Come segnalato anche da EFF, Signal propone all’utente la lista dei
contatti che hanno anch’essi l’applicazione installata.
Per fare questo, viene effettuato l’upload dei numeri di telefono su server Signal, nonostante vengano quasi immediatamente eliminati.
Per fare questo, viene effettuato l’upload dei numeri di telefono su server Signal, nonostante vengano quasi immediatamente eliminati.
Una fondamentale differenza con Whatsapp è data dalla natura Open
Source del Progetto.
In dettaglio, non c’è una grande corporazione (come Facebook) dietro lo sviluppo dell’applicazione e il codice è visibile, il che permette di verificare puntualmente cosa fa la stessa e permette agli utenti di non cadere nelle maglie delle esigenze di monetizzazione o di marketing dell’azienda di turno.
In dettaglio, non c’è una grande corporazione (come Facebook) dietro lo sviluppo dell’applicazione e il codice è visibile, il che permette di verificare puntualmente cosa fa la stessa e permette agli utenti di non cadere nelle maglie delle esigenze di monetizzazione o di marketing dell’azienda di turno.
Un’altra differenza con Whatsapp è data dal fatto che, essendo
Open Source, non presenta (e a detta di chi ha analizzato il sorgente
è esattamente così) backdoor, ovvero delle “porte di servizio”
che permettono ad un Governo, ad esempio, di poter leggere le
conversazioni senza autorizzazione.
Per fare un confronto reale, con Signal (installandolo da fonti ufficiali) si è sicuri di non imbattersi nel “Ghost Protocol”, mentre con Whatsapp l’utente non lo può dire con certezza.
In conclusione, Signal non presenta le stesse minacce sistemiche che presenta Whatsapp (a livello di trasporto dati) data la natura Open Source del Progetto.
Per fare un confronto reale, con Signal (installandolo da fonti ufficiali) si è sicuri di non imbattersi nel “Ghost Protocol”, mentre con Whatsapp l’utente non lo può dire con certezza.
In conclusione, Signal non presenta le stesse minacce sistemiche che presenta Whatsapp (a livello di trasporto dati) data la natura Open Source del Progetto.
In alcuni ambiti è preferibile l’utilizzo di strumenti Open Source in quanto dà la possibilità all’Organizzazione o alla Comunità che utilizza un determinato software di poterne analizzare il codice.
In linea di massima, questa condizione porta ad una maggiore probabilità di rilevare, analizzare e risolvere i bug.
Questa operazione viene effettuata di solito sia dal produttore del Software, sia dalla comunità stessa (ovviamente da parte di persone che hanno le competenze necessarie) e questo permette di trovare più velocemente i bug.
Non è scontato, comunque, che tali bug siano risolti in tempi più brevi rispetto ai Software closed-source e questo può variare in base alle persone che lavorano al progetto, al modello di business del Produttore e al tipo di bug segnalato.
In linea di massima, questa condizione porta ad una maggiore probabilità di rilevare, analizzare e risolvere i bug.
Questa operazione viene effettuata di solito sia dal produttore del Software, sia dalla comunità stessa (ovviamente da parte di persone che hanno le competenze necessarie) e questo permette di trovare più velocemente i bug.
Non è scontato, comunque, che tali bug siano risolti in tempi più brevi rispetto ai Software closed-source e questo può variare in base alle persone che lavorano al progetto, al modello di business del Produttore e al tipo di bug segnalato.
Si riporta un caso reale, dove la Piattaforma Signal ha ricevuto una
richiesta di cessione dati a titolo investigativo, da parte dello
Stato del Virginia.
https://signal.org/bigbrother/
https://signal.org/bigbrother/
In sintesi, da questa richiesta le uniche informazioni che lo Stato
del Virginia è riuscito ad ottenere sono le seguenti:
- Data e ora di registrazione di un utente al servizio
- Data dell’ultima connessione al servizio
Per analizzare a fondo il livello di trasporto, si analizza il
funzionamento dell’applicazione su dispositivo reale.
Come per Whatsapp, per catturare le connessioni effettuate
dall’applicazione, si utilizza una fakeVPN.
Questo il risultato:
Dall’analisi del pattern si ottengono le seguenti informazioni:
- L’applicazione utilizza solo porte standard
- L’applicazione si connette a server Amazon
Dall’analisi degli indirizzi IP non si rilevano Indicatori recenti.
Utilizzando solo la porta 443, l’applicazione è più resistente
nel caso in cui un avversario avesse la possibilità di ispezionare
il traffico di rete, rendendo di fatto la comunicazione meno
individuabile.
Dopo aver preso in esame il trasporto dei dati, si analizza il
Client.
L’applicazione presenta 6
CVE:
https://www.cvedetails.com/vulnerability-list/vendor_id-17912/Signal.html
https://www.cvedetails.com/vulnerability-list/vendor_id-17912/Signal.html
Nonostante i CVE, non si segnala una minaccia diretta, in quanto non
sono registrate vulnerabilità per la versione attuale
dell’applicazione.
Si sottolinea come l’ecosistema dove risiede l’applicazione non
sia trascurabile.
Esattamente come Whatsapp, anche Signal è prono ad attacchi, nel
caso ovviamente l’attaccante abbia accesso fisico al dispositivo.
Oltre al sopracitato UFED, si segnala un software dell’azienda
ElcomSoft, tale “Phone
Viewer”:
Conclusione analisi Signal e confronto con Whatsapp
Per concludere, tale analisi dimostra che Signal potrebbe essere utilizzato in ambiti più sensibili, minimizzando il rischio grazie alla natura Open del Progetto e alla sua infrastruttura, più sicura e robusta in confronto a quella di Whatsapp.
Una nota negativa è rappresentata dal comportamento di Signal alla
registrazione di un utente.
La Piattaforma, alla registrazione, provvede a segnalare tramite notifica tutti i contatti Signal presenti nella rubrica di chi ha effettuato la registrazione.
Si consiglia di fare attenzione a questo comportamento dell’applicazione, in alcuni ambiti sicuramente fastidioso.
La Piattaforma, alla registrazione, provvede a segnalare tramite notifica tutti i contatti Signal presenti nella rubrica di chi ha effettuato la registrazione.
Si consiglia di fare attenzione a questo comportamento dell’applicazione, in alcuni ambiti sicuramente fastidioso.
Il caso sopracitato dimostra che la Piattaforma Signal è resistente
anche in caso di intervento di uno Stato.
Di contro, per tutte e due le applicazioni si presenta un problema
riguardo l’accesso fisico al dispositivo.
Se si prevede un utilizzo in un ambito a rischio, nel quale può
esserci un controllo e accesso fisico al dispositivo, entrambe le
Piattaforme non andrebbero utilizzate.
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 certamente l’utilizzo della Piattaforma Signal.
Per un utilizzo comune è accettabile l’utilizzo di entrambe le
Piattaforme.
Alessandro Fiori, Alessandro Rugolo
4 https://robertheaton.com/2017/10/09/tracking-friends-and-strangers-using-whatsapp/
5 Una “Google Dork” è una ricerca particolare, che sfrutta
la potenza del motore di ricerca e del suo servizio di
indicizzazione. Il motore di Google possiede varie opzioni di
ricerca, dei veri e propri “flag”, che possono essere usati per
affinare le ricerche. Ovviamente, come ogni funzione, questi flag possono essere sfruttati
per trovare informazioni o dati, che normalmente non dovrebbero
essere trovati.
7 https://faq.whatsapp.com/en/general/26000153/
Reference 1 - Chiavi e algoritmi utilizzati da WhatsApp:
Chiavi Pubbliche utilizzate da WhatsApp:
- Coppia di chiavi d’identità (Identity key pair): Una coppia di chiavi a lungo termine, ovvero archiviate e conservate dall’applicazione, di tipo Curve25519, generatea in fase d’installazione.
Curve25519 è una crittografia ellittica a 128 bit.
Una crittografia a curva ellittica è un tipo di crittografia che utilizza una formula i cui risultati, se posizionati su un piano, formano un’ellisse. - Coppia di chiavi pre-firmata (Signed Pre-Key): Una coppia di chiavi a medio termine, ovvero cambiata periodicamente, di tipo Curve25519, generata dalla chiave d’identità in fase d’installazione.
- Coda di chiavi (One-Time Pre-Keys): Una serie di coppie di chiavi di tipo Curve25519, generate in fase di installazione e rigenerabili quando necessario.
Tipi di Chiavi utilizzate da WhatsApp per le sessioni cifrate:
- Root Key: Valore di 32 byte, utilizzato per generare le “Chain Keys”.
- Chain Key: Valore di 32 byte, utilizzato per generare le “Message Keys”
- Message Key: Valore di 80 byte, utilizzato per cifrare il contenuto dei dati scambiati su Whatsapp.
Questo valore viene utilizzato nel seguente modo: - 32 byte per la chiave AES-256
- 32 byte per la chiave HMAC-SHA256
- 16 byte per generare l’IV
AES (Advanced Encryption Standard)
E’ lo standard di cifratura attualmente utilizzato dal Governo degli Stati Uniti.
AES, a differenza dell’algoritmo visto in precedenza, è un sistema di cifratura simmetrico, ovvero utilizza la stessa chiave sia per cifrare che per decifrare.
AES-256 è un’implementazione dell’AES che utilizza chiavi a 256 bit.
E’ lo standard di cifratura attualmente utilizzato dal Governo degli Stati Uniti.
AES, a differenza dell’algoritmo visto in precedenza, è un sistema di cifratura simmetrico, ovvero utilizza la stessa chiave sia per cifrare che per decifrare.
AES-256 è un’implementazione dell’AES che utilizza chiavi a 256 bit.
HMAC-SHA256
HMAC (Keyed-hash Message Authentication Code) è un sistema che utilizza il messaggio originale più una chiave per garantire l’autenticità e l’integrità del messaggio tramite hash.
Un hash è una stringa di lunghezza fissa, generata da una funzione matematica capace di “mappare” in sequenza di caratteri qualunque tipo di dato in input, come ad esempio un file di testo, audio o video.
Si garantisce integrità e autenticità in quanto la modifica anche minima del dato in ingresso, genererà un hash totalmente diverso dall’originale.
HMAC (Keyed-hash Message Authentication Code) è un sistema che utilizza il messaggio originale più una chiave per garantire l’autenticità e l’integrità del messaggio tramite hash.
Un hash è una stringa di lunghezza fissa, generata da una funzione matematica capace di “mappare” in sequenza di caratteri qualunque tipo di dato in input, come ad esempio un file di testo, audio o video.
Si garantisce integrità e autenticità in quanto la modifica anche minima del dato in ingresso, genererà un hash totalmente diverso dall’originale.
Un esempio:
Stringa da computare: CIAO
Hash: 39F119842EBE582F049160F44BCD99F4
Hash: 39F119842EBE582F049160F44BCD99F4
Ora si noti la differenza:
Stringa da computare: CIaO
Hash: 8C3E82238DF7A597C99EC0B70ACC4A58
Hash: 8C3E82238DF7A597C99EC0B70ACC4A58
La stringa hash è completamente diversa dalla precedente.
Questo effetto, portato anche dal minimo cambiamento del valore originale, si chiama “effetto valanga”.
Questo effetto, portato anche dal minimo cambiamento del valore originale, si chiama “effetto valanga”.
SHA256 indica che in questo caso l’HMAC viene calcolato tramite l’algoritmo di hash “SHA256”.
IV (Initialization Vector)
Il Vettore di inizializzazione è una sequenza di bit precisa, che permette di avere risultati crittografici differenti anche a chiavi identiche e deve essere noto al destinatario, che altrimenti non può decifrare il messaggio.
Il Vettore di inizializzazione è una sequenza di bit precisa, che permette di avere risultati crittografici differenti anche a chiavi identiche e deve essere noto al destinatario, che altrimenti non può decifrare il messaggio.