Scoperta una nuova tecnica di attacco contro Android che porta alla sovrascrittura dei file nella directory Home.
I sistemi operativi open source sono ormai una realtà consolidata da oltre vent’anni.
Nell’ambito mobile il sovrano indiscusso di questa filosofia è senza dubbio Android, che ha saputo imporsi grazie alla sua versatilità e scalabilità a seconda dell’hardware impiegato dal produttore.
Tuttavia, in più occasioni questa sua natura si è tradotta in un’arma a doppio taglio, con svariate cybergang e collettivi criminali che hanno intravisto nel sistema operativo di Google una ricchissima miniera d’oro.

dirty stream attack

Le forme di attacco predilette restano sempre le applicazioni contraffatte, vista la semplicità con cui è possibile distribuirle mediante APK diretto.
Ma in tempi recenti le cose sono cambiate, specialmente con la nuova minaccia che si è stagliata all’orizzonte: Dirty Stream.
Ma come sempre andiamo con ordine e analizziamo l’argomento per gradi.

Cos’è Dirty Stream?

Dirty Stream è un nuovo tipo di attacco rivolto al istema Android e che sfrutta una tecnica chiamata path traversal.
Scoperta dai ricercatori del Microsoft Security Vulnerability Research (MSVR), Dirty Stream permette alle applicazioni malevole di sovrascrivere interi file di applicazioni legittime localizzati nella directory Home, portando così non solo all’esecuzione di codice arbitrario, ma anche al furto dei token di autenticazione per l’accesso al proprio account Google.

L’esecuzione di codice arbitrario, altresì definito ACE (Arbitrary Code Execution), è un problema serio, in quanto permette ad un attore malevolo di prendere il controllo completo del normale comportamento di un’applicazione, portandola a trasformarsi in una vera e propria backdoor con cui estrarre dati sensibili dal dispositivo vittima.
La causa scatenante di Dirty Stream risiede in una vulnerabilità presente nei meccanismi intrinsechi di Android, in particolare il content provider, che si occupa della gestione dei dati condivisi tra sistema operativo e le applicazioni.

Le analisi condotte da Microsoft hanno portato alla luce che svariate applicazioni presenti sul Play Store sono interessate da questa vulnerabilità, per un totale di quattro miliardi di installazioni. In particolare, Dirty Stream segue un pattern abbastanza preciso che può essere trovato in applicazioni di uso comune, come:

  1. Xiaomi File Manager, che attualmente conta 1 miliardo di installazioni
  2. WPS Office, con 500 milioni di installazioni totali.

Come funziona un attacco path traversal?

I dati condivisi dal nucleo di Microsoft hanno messo in luce il meccanismo che porta all’attuazione di un attacco path traversal, il quale sfrutta il paradigma di programmazione con cui il sistema operativo condivide i dati tra sé stesso e le applicazioni.
Android rafforza l’isolamento delle risorse assegnando a ciascuna applicazione spazio in memoria e dati dedicati a cui accedere in maniera individuale.
L’accesso a queste è facilitato dal content provider, un componente che agisce come interfaccia di riferimento per la gestione e l’esposizione dei dati al resto delle applicazioni presenti sul dispositivo in maniera sicura e controllata.

Per comprenderne appieno il suo funzionamento, è necessario addentrarci ancora più a fondo, andando ad analizzare direttamente il kit di sviluppo Android, o SDK (Software Development Kit).

Dirty Stream Infografica

Nell’SDK di Android sono presenti sia la classe FileProvider, che la sottoclasse ContentProvider.
Ciascun file provider è inoltre dotato di una proprietà chiamata authority, che identifica il sistema e può essere usata dall’applicazione come un indirizzo di memoria. L’accesso alle risorse condivise è gestito dall’attributo grantUriPermissions presente nel manifest dell’applicazione, ma per ottenerlo deve esserci l’autorizzazione del provider, che fornisce sia il path coincidente con l’URI di richiesta, che il descrittore del file.

Se il content provider è usato in maniera efficace, ovvero come appena descritto, allora rappresenta una misura di sicurezza molto affidabile.
Ma un suo uso improprio si trasforma in una vulnerabilità capace di aggirare le restrizioni presenti nelle operazioni di lettura/scrittura nella cartella Home di ciascuna applicazione.

Dirty Stream sfrutta proprio questo uso improprio del content provider, in quanto esistono molteplici applicazioni non approvate da Google, ma disponibili altrove sottoforma di eseguibile APK, i cui contenuti non sono convalidati con il content provider. Risorse che dovrebbero risultare inaccessibili diventano disponibili alle applicazioni che implementano una versione malevola della classe FileProvider.

Tale sistema impiega un target di condivisione (share target), il quale rappresenta una vera e propria applicazione che svolge il ruolo di gestore di dati e file inviati da altre applicazioni.
Tra queste troviamo:

  • Client di e-mail
  • Social network
  • Messaggistica istantanea
  • Browser
  • Editor di file

Lo scenario d’uso comune prevede che, nel momento in cui l’utente decide di aprire un file cliccandoci sopra, Android richieda allo stesso di selezionare il componente a cui inviare suddetto file.
Sebbene non si traduca automaticamente in un attacco, un’applicazione malevola presente sul dispositivo può creare un intento esplicito e inviare un file malevolo proprio al target di condivisione, senza che però l’utente possa accorgersene, né intervenire direttamente.

Il pattern che ne consegue è questo:

  1. Viene richiesto il nome del file dal file provider remoto
  2. Il nome ricevuto viene usato per inizializzare un file che sarà successivamente impiegato per inizializzare un file di output stream
  3. Si crea un input stream utilizzando l’URI del contenuto in arrivo
  4. L’input stream è copiato nell’output stream.

L’applicazione malevola controlla sia il nome, che il contenuto del file e ciò porta alla sovrascrittura dei file genuini presenti nella cartella Home dell’applicazione che funge da share target.
Le conseguenze derivanti sono tremende, in quanto l’attaccante accede in maniera arbitraria e incontrollata ai dati sensibili gestiti da altre applicazioni, potendo così esfiltrare con successo:

  • Credenziali utente
  • Token di autorizzazione
  • Dati sensibili di carte di credito
  • Account personali

Contromisure e best practice per gli utenti

Nella giornata del 1° maggio 2024 Microsoft ha condiviso i dettagli delle proprie scoperte con le varie community Android, in particolare con gli sviluppatori di Xiaomi e WPS Office, poiché le loro applicazioni risultavano le più affette da Dirty Stream.
Questo per favorire una correzione tempestiva della vulnerabilità e prevenire l’insorgenza della stessa in applicazioni simili.
A ciò si aggiunge una risposta di Google, la quale è intervenuta con un aggiornamento delle proprie linee guida in merito alla sicurezza delle applicazioni Android.

A tal proposito l’azienda di Mountain View ha posto molta enfasi su come evitare di commettere gli errori più comuni, considerati i principali responsabili dell’insorgenza di tali vulnerabilità nelle future release di applicazioni già presenti sul proprio Play Store.

Tuttavia, è bene notare che ciò non basta a difendersi da Dirty Stream, in quanto sono soprattutto gli utenti Android a dover adottare delle contromisure efficaci e prendere consapevolezza dei rischi a cui si va in contro. Una serie di best practice da adottare in merito, sono le seguenti:

Eseguire costantemente gli aggiornamenti

Contrariamente all’opinione comune gli aggiornamenti di Android e delle applicazioni sono la miglior contromisura contro Dirty Stream, in quanto una possibile vulnerabilità intrinseca viene patchata e l’insorgenza di attacchi viene notevolmente mitigata. Inoltre, rispetto al passato, le pratiche di aggiornamento sono divenute molto più semplici e immediate, con rischi praticamente azzerati di trasformare il proprio dispositivo in un fermacarte.

Mai installare file APK acquisiti da fonti dubbie

Non si tratta di applicazioni genuine Android, ma di pacchetti contenenti al loro interno del codice non firmato e quindi potenzialmente dannoso per il proprio dispositivo. Ad esempio, sono da evitare in toto i marketplace esterni come Aptoide, Uptodown, o ApkPure, che più di una volta si sono dimostrati autentiche fucine di malware.

Affidarsi sempre alla reputazione del produttore

Controllare recensioni e media di punteggio che ciascuna sua applicazione riceve sia sul Play Store, che sui siti specializzati, è un ottimo metodo per evitare di scaricare qualcosa di indesiderato sul proprio dispositivo.

Effettuare una pulizia regolare

Almeno una volta a settimana è buona prassi disinstallare le applicazioni non utilizzate e svuotare la cache dei propri browser.

Conclusione

Dirty Stream è una nuova dimostrazione di come le minacce alla nostra sicurezza digitale sono in costante evoluzione e specialmente di questi tempi stanno conoscendo una diffusione a cui mai si era assistito. Per questa ragione è tassativamente richiesto di adottare una serie di misure cautelari, in quanto esse rivestono un ruolo cruciale per contrastare le vulnerabilità intrinseche alle applicazioni di uso comune e alle tattiche adottate dagli attori malevoli della scena cybercriminale.
La battaglia tra sicurezza informatica e tattiche malevoli si sta inasprendo sempre più, ma se c’è qualcuno che può fare la differenza, siamo noi stessi: gli utenti finali, i consumatori, il target demografico a cui le grandi aziende si rivolgono.

La nostra collaborazione e l’approccio attivo al contrasto di queste minacce sono l’arma più potente di cui possiamo disporre.