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.
Seppur parziale, è comunque uno studio molto articolato. 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.
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 ?”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:
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.
È 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.
È 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 nuovamente 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.
È 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.
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 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 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.
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 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.
È 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.
Estrazione completa: https://otx.alienvault.com/pulse/5e35c5a4977b679705a90b1a
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.
WhatsApputilizza 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_62129975288...
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 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.
È 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 “Ghost Protocol” (link: https://www.theguardian.com/uk-news/2019/may/30/apple-and-whatsapp-conde...) è 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.
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 nello screenshot)
Effettuando varie prove si può osservare lo stesso pattern.
È 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
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.
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.
È 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
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...
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.
Questa una lista di vulnerabilità di Android:
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
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.
Per questa analisi si è eseguito un test con questo tool:
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-con...
Questo apre molti scenari in cui la sicurezza della comunicazione può essere compromessa.
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/
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/4a7b1a8f5ab065978feb00fd8f90ba29f8c5...
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.
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
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 (immagine) è 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 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?
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. È 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.
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.
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.
Questo il Repository GitHub dell’applicazione:
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
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
Mappa di rete (immagine)
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:
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
Note per l’utilizzo di Signal su Sistema Operativo 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.
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.
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.
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.
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/
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 (immagine)
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
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”:
https://blog.elcomsoft.com/2019/08/how-to-extract-and-decrypt-signal-con...
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.
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.
1 https://www.ssi.gouv.fr/uploads/2017/10/chiffrement_messagerie_instantan...
2 https://scontent.whatsapp.net/v/t61/68135620_760356657751682_62129975288...)
3 https://faq.whatsapp.com/it/android/28000019/
4 https://robertheaton.com/2017/10/09/tracking-friends-and-strangers-using...
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.
6 https://www.whatsapp.com/legal/
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)
È 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.
Un esempio:
Stringa da computare: CIAO
Hash: 39F119842EBE582F049160F44BCD99F4
Ora si noti la differenza:
Stringa da computare: CIaO
Hash: 8C3E82238DF7A597C99EC0B70ACC4A58
La stringa hash è completamente diversa dalla precedente.
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.