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.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- # Key management {:#key-management}
- Esegui il codice DEX incorporato direttamente dall'APK
- Tapjacking