Categoria OWASP: MASVS-PLATFORM: Interazione con la piattaforma
Panoramica
I rischi per la sicurezza associati ai link diretti derivano dalla loro capacità di base di consentire una navigazione e un'interazione fluide all'interno delle applicazioni mobile. Le vulnerabilità dei link diretti derivano da debolezze nell'implementazione o nella gestione dei link diretti. Questi difetti possono essere sfruttati da malintenzionati per ottenere l'accesso a funzioni o dati privilegiati, con possibili violazioni dei dati, violazioni della privacy e azioni non autorizzate. Gli utenti malintenzionati possono sfruttare queste vulnerabilità tramite varie tecniche, come il furto di link diretti e gli attacchi di convalida dei dati.
Impatto
La mancanza di un meccanismo di convalida dei link diretti adeguato o l'uso non sicuro dei link diretti può aiutare gli utenti malintenzionati a eseguire attacchi come il aggiramento della convalida dell'host, lo scripting cross-app e l'esecuzione di codice remoto nel contesto delle autorizzazioni dell'applicazione vulnerabile. A seconda della natura dell'applicazione, è possibile che si verifichi l'accesso non autorizzato a funzioni o dati sensibili.
Mitigazioni
Impedire il furto di link diretti
Per impostazione predefinita, Android consente a più app di registrare filtri per intent per lo stesso URI del link diretto. Per impedire ad app dannose di intercettare i link diretti destinati alla tua app, implementa l'attributo android:autoVerify
in intent-filter
all'interno del file AndroidManifest
dell'applicazione. In questo modo, gli utenti possono selezionare la loro app preferita per la gestione dei link diretti, garantendo il funzionamento previsto e impedendo alle applicazioni dannose di interpretarli automaticamente.
Android 12 ha introdotto un'elaborazione più rigorosa degli intent web per migliorare la sicurezza. Ora le app devono essere verificate per gestire i link da domini specifici tramite i link diretti per Android o la selezione dell'utente nelle impostazioni di sistema. In questo modo, le app non possono assumere il controllo dei link che non devono gestire.
Per attivare la verifica della gestione dei link per la tua app, aggiungi filtri per intent corrispondenti al seguente formato (questo esempio è tratto dalla documentazione Verifica i link per app Android):
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a shared link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="..." />
</intent-filter>
Implementare una convalida dei dati solida
I link diretti possono includere parametri aggiuntivi che vengono pubblicati per l'intent di destinazione, ad esempio per eseguire ulteriori azioni. La base di una gestione sicura dei link diretti è una rigorosa convalida dei dati. Tutti i dati in entrata provenienti dai link diretti devono essere convalidati e sottoposti a sanificazione meticolosamente dagli sviluppatori per impedire l'inserimento di valori o codice dannoso nell'applicazione legittima. Questo può essere implementato controllando il valore di qualsiasi parametro del link diretto rispetto a una lista consentita predefinita di valori previsti.
Le app devono controllare altri stati interni pertinenti, come lo stato di autenticazione o l'autorizzazione, prima di esporre informazioni sensibili. Un esempio potrebbe essere un premio per il completamento di un livello di un gioco. In questo caso, vale la pena convalidare il prerequisito di aver completato il livello e reindirizzare alla schermata principale se non è stato completato.
Risorse
- Verifica i link per app Android
- Gestire i link per app Android
- Risoluzione dell'intent web
- Magic link che intercetta la compromissione dell'account per l'app Arrive
- Parte I: sfruttamenti di link diretti e WebView
- Parte II: sfruttamenti di link diretti e WebView
- Suggerimento recente di un problema con i link diretti in Jetpack Navigation