android:esportato

Categoria OWASP: MASVS-PLATFORM: Platform Interaction

Panoramica

L'android:exported attributo imposta se un componente (attività, servizio, ricevitore di trasmissione ecc.) può essere avviato da componenti di altre applicazioni:

  • Se true, qualsiasi app può accedere all'attività e avviarla con il nome esatto della classe.
  • Se false, solo i componenti della stessa applicazione, le applicazioni con lo stesso ID utente o i componenti di sistema privilegiati possono avviare l'attività.

La logica alla base del valore predefinito di questo attributo è cambiata nel tempo ed era diversa a seconda dei tipi di componenti e delle versioni di Android. Ad esempio, al livello API 16 (Android 4.1.1) o inferiore, il valore degli elementi <provider> è impostato su true per impostazione predefinita. Se non imposti questo attributo in modo esplicito, rischi di avere valori predefiniti diversi tra alcuni dispositivi.

Impatto

La situazione con valori predefiniti diversi significa che potresti esporre accidentalmente componenti interni dell'applicazione. Ecco alcuni esempi di conseguenze:

Attacchi Denial of Service. Altre app che accedono in modo inappropriato a componenti interni per modificare la funzionalità interna della tua app. Divulgazione di dati sensibili. Esecuzione del codice nel contesto dell'applicazione vulnerabile.

Mitigazioni

Imposta sempre in modo esplicito l'attributo android:exported. In questo modo non ci sarà spazio per interpretazioni e la tua intenzione in merito alla visibilità di un componente sarà chiara.