La vulnerabilità di WhatsApp che genera un buffer overflow
Anche WhatsApp, la famosa app di messaggistica istantanea, non è al sicuro a causa di una vulnerabilità svelata pochi giorni fa che genera buffer overflow e, quindi, avrebbe potuto rendere decifrabile il contenuto delle chat. Infatti, il gruppo di ricerca Check Point Research (CPR) ha appena reso noti i dettagli di un possibile attacco legato alla vulnerabilità CVE-2020-1910 scoperta lo scorso novembre. È bene sottolineare che WhatsApp, nel frattempo, ha ovviamente rilasciato una versione successiva dell’applicazione che corregge il problema e mette al sicuro gli utenti.
La falla del sistema: un’immagine “particolare”
Cerchiamo di capire le cause che hanno portato ad evidenziare e rendere nota la vulnerabilità CVE-2020-1910. I ricercatori, infatti, sono partiti dal modificare alcune immagini applicando tecniche di AFL fuzzing. L’American Fuzzy Lop (AFL) tenta dapprima di eseguire un comando (ad esempio aprire un’immagine) e quindi tenta di ridurre l’input al minimo possibile per attivare l’azione. Dopodiché, introduce del disturbo nell’input (in questo caso l’immagine) al fine di individuare possibili crash del sistema (nel qual caso ecco trovato un bug).
Così hanno fatto con WhatsApp, in particolare andando ad interagire con le librerie usate per l’applicazione di filtri. Infatti, l’applicazione non è solo usata per la messaggistica più classica ma anche per scambiare ogni giorno grandi quantità di immagini, video e contenuti multimediali.
Buffer overflow per WhatsApp
L’invio di un’immagine modificata a un’utente di WhatsApp, la sua modifica, tramite l’applicazione di filtri e il successivo invio dell’immagine modificata, crea di fatto una possibile perdita di informazioni sensibili. Il problema risiede nella funzione applyFilterIntoBuffer() della libreria libwhatsapp.so che accetta qualsiasi tipo di immagine senza particolari controlli.
In particolare, un’immagine è come un’array di dati dove ogni gruppo di 4 bytes rappresenta un pixel secondo la codifica RGBA. Pertanto, la funzione da per scontato l’utilizzo di tale codifica e scorre l’immagine (l’array) a blocchi di 4. Tuttavia, qualora l’immagine sia realizzata “su misura” in modo che ogni pixel sia di un solo byte, la funzione tenterà di leggere 4 volte l’ammontare dello spazio nel buffer sorgente. Il risultato è l’accesso a parti di memoria non autorizzate causate da buffer overflow nella lettura dell’immagine sorgente con pixel da 1 byte.
È chiaro che uno scenario di attacco di questo genere comporta un’elevata interazione da parte dell’utente e lo rende piuttosto improbabile ma non impossibile. Certamente il livello di difficoltà è a dir poco elementare dal momento che sono necessari ben pochi strumenti per riuscire ad avere porzioni di memoria di WhatsApp. È altresì vero che creare un dump delle chat di WhatsApp mediante questa tecnica non è molto fattibile a causa della limitata quantità di informazioni recuperabili e dell’elevata richiesta di cooperazione della vittima.
La risposta di WhatsApp alla vulnerabilità
L’azienda ha naturalmente preso gli adeguati provvedimenti per mettere al sicuro i propri utenti. La versione 2.21.1.13 ha introdotto il fix della vulnerabilità e nel bollettino di Febbraio WhatsApp ha rassicurato gli utilizzatori della sicurezza della sua applicazione. In particolare, della bontà del protocollo di cifratura end-to-end che garantisce la protezione del canale di comunicazione fra mittente e destinatario.
Infatti, pur permettendo l’accesso a porzioni di memoria non autorizzate, il problema è insito in altre logiche dell’applicazione e non nel protocollo di cifratura della comunicazione. Ad ogni modo, WhatsApp ha raccomandato di mantenere sempre aggiornati sistema operativo e applicazione con le ultime patch di sicurezza. Noi di Close Up Engineering non possiamo far altro che sottoscrivere questi suggerimenti che sono alla base per mantenersi protetti.