Warning: Undefined array key "tbm_guide_level" in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Trying to access array offset on value of type null in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Undefined array key "tbm_guide_level" in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Trying to access array offset on value of type null in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113
Intent Spoofing su Android: cos'è e come difendersi | Sicurezza HTML.it
Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Intent Spoofing su Android: cos'è e come difendersi

Il supporto alla comunicazione basata su Intent è molto comodo per l'interoperabilità su Android, ma espone le app a potenziali attacchi di spoofing.
Il supporto alla comunicazione basata su Intent è molto comodo per l'interoperabilità su Android, ma espone le app a potenziali attacchi di spoofing.
Link copiato negli appunti

Su HTML.it abbiamo parlato abbondantemente di Android nella nostra guida, ed abbiamo spiegato come questo sistema operativo mobile permette agli elementi con che compongono un'applicazione di comunicare ed interagire tra di loro attraverso svariate tecniche. Una tipologia di comunicazione che vediamo più comunemente all'interno delle app Android è quella che avviene tramite gli Intent. Questi scambi di dati, però, se non correttamente gestiti e attenzionati, possono causare delle falle nella sicurezza delle applicazioni stesse. In questo articolo vedremo che cosa si intente per Intent Spoofing, e che danni può comportare ad un'app Android.

Intent Spoofing: definizione e basi

I navigati della sicurezza informatica saranno senz'altro a conoscenza del termine spoofing, ma volendone dare ugualmente un accenno diciamo che lo spoofing è un tipo di attacco informatico che consta nella manipolazione di dati per ottenere la falsificazione della propria identità e, in senso più generico, per ottenere la falsificazione di informazioni applicative.

Per spiegare in cosa consiste l'Intent Spoofing, che è una particolare tipologia di attacco basato su spoofing, dobbiamo prima elencare i principali componenti con i quali è possibile dare vita ad un'applicazione Android. Ne abbiamo già parlato in un'apposita lezione della guida ad Android, ma li riprendiamo rapidamente di seguito:

  • Activity : rappresentano una schermata dell'applicazione, e contengono gli elementi grafici che permettono all'utente di interagire con essa
  • Services : sono componenti che vengono eseguiti in background e sono adoperati per elaborare operazioni che hanno necessità di durare a lungo
  • Broadcast receivers : sono invece componenti ai quali ci si registra per ricevere notifiche

Ognuno dei componenti sopra elencati ha la possibilità di comunicare tramite l'uso degli Intent. Come comportamento di default, tutti i componenti possono ricevere Intent solo dai componenti appartenenti all'applicazione stessa, ma non da applicazioni esterne (sebbene questa possibilità può essere abilitata tramite l'AndroidManifest, utilizzando l'attributo android:exported).

Un Intent, nella sua accezione più comune, può quindi essere definito come una richiesta da parte di un componente di una funzionalità che viene implementata in un altro componente. Questo meccanismo è ben conosciuto dai fruitori di app, e anche se possono non esserne consapevoli, ogni volta che un'applicazione chiede il permesso di poter accedere a una funzionalità del cellulare, come per esempio l'uso della fotocamera, non si sta facendo altro che sfruttare un Intent.

Gli Intent si suddividono essenzialmente in due categorie:

  • Intent espliciti
  • Intent impliciti

Gli Intent espliciti esplicitamente Java

Intent i = new Intent(contex, ActivityB.class);

Gli Intent impliciti

Intent i = newIntent(action, uri);

Sfruttando gli Intent, abbiamo quindi la possibilità di perpetrare due tipologie di attacchi: l'Intent Interception Intent spoofing

  • l'Intent interception
  • l'Intent spoofing

Scenario

Un tipico scenario che rappresenta un attacco di tipo Intent spoofing è quello rappresentato nella figura seguente:

In questo scenario abbiamo due entità principali: una normale app, rappresentata dal riquadro Messenger App Malicious App Messenger App Message Composer Message Sender

Un'applicazione malevola potrebbe eseguire un attacco di tipo Intent spoofing registrandosi come Activity capace di ricevere una tipologia di Intent per modificarne il contenuto con parametri o dati malevoli.

Per verificare la presenza di possibili falle nelle proprie applicazioni, il framework Android offre un'utility chiamata am A M

adb shell

Con il comando am A

am start \
  -a android.intent.action.SENDTO \
  --es com.test.android.app.Telefono 329111 \
  --ei com.test.android.app.Civico 10 \
  -n com.test.android.app/.activity.Activity_A

Capiamo subito che, se le nostre applicazioni non sono adeguatamente progettate, chiunque, tramite la creazione di Intent, sarebbe in grado di poter interagire con le nostre Activity, facendo eseguire dei comportamenti inaspettati o comunque dannosi.

Proteggersi dall'Intent Spoofing

Ecco quindi alcuni semplici consigli per progettare applicazioni a prova di Intent Spoofing:

  • evitare l'uso di Intent impliciti, optando invece per quelli espliciti
  • nell'AndroidManifest, impostare per ogni componente il valore android:exported
  • se è necessario accettare Intent da applicazioni esterne, dobbiamo controllare attentamente i dati che vengono mandati tramite opportuni controlli via codice

Ti consigliamo anche