Soluzione per la vulnerabilità PendingIntent implicito

Queste informazioni sono rivolte agli sviluppatori di app che contengono la vulnerabilità PendingIntent implicito.

Situazione attuale

Una o più delle tue app contengono un problema di PendingIntent implicito che potrebbe comportare rischi per la sicurezza nella forma di denial of service, furto di dati privati ed escalation dei privilegi. Consulta la procedura dettagliata riportata di seguito per risolvere i problemi delle tue app.  Puoi trovare le posizioni degli utilizzi PendingIntent impliciti nella tua app in Play Console per la tua app. Se una posizione termina con "(in codice caricato dinamicamente)", questa viene caricata in modo dinamico dal codice dell'app o dalle librerie utilizzate dall'app. Le applicazioni in genere utilizzano il codice caricato dinamicamente attraverso la distribuzione di funzionalità on demand, anche se esistono altre tecniche non consigliate (alcune tecniche non consigliate violano inoltre le norme di Google Play e non devono essere utilizzate). Inoltre, i packer possono trasformare il codice dell'applicazione in codice caricato dinamicamente.

La risoluzione di questo problema è consigliata ma non obbligatoria. Lo stato di pubblicazione della tua app non sarà influenzato dalla presenza di questo problema.

Ulteriori dettagli

Le app Android si servono degli oggetti Intent per inviare messaggi da un componente all'altro. Gli intent possono specificare il componente di destinazione (intent esplicito) o indicare un'azione generale e poi lasciare che sia il sistema operativo a inviare l'intent a un qualsiasi componente del dispositivo che registra un filtro per intent corrispondente a tale azione (intent implicito).

I PendingIntent sono intent delegati a un'altra app da recapitare in un secondo momento. La creazione di un intent implicito aggregato in un PendingIntent costituisce una vulnerabilità di sicurezza che potrebbe causare attacchi di tipo denial of service, furto di dati privati ed escalation dei privilegi

Passaggi successivi

1. Aggiorna l'app e correggi gli avvisi di "PendingIntent implicito" seguendo i passaggi descritti di seguito.

Controlla nella tua app la posizione in cui è stato creato un PendingIntent. Ad esempio, il seguente codice crea un PendingIntent che aggrega un intent implicito: 

// Crea un intent di base implicito e lo aggrega in un PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

Google consiglia agli sviluppatori di correggere la vulnerabilità applicando una delle seguenti misure (o preferibilmente tutte):

  • Assicurarsi che i campi relativi all'azione, al pacchetto e al componente dell'intent di base siano impostati; 
  • Assicurarsi che PendingIntent sia recapitato unicamente a componenti attendibili; 
  • Utilizzare FLAG_IMMUTABLE (aggiunto nell'SDK 23) per creare i PendingIntent, in modo da impedire che le app destinatarie del PendingIntent non completino le proprietà non compilate. Se l'app viene eseguita anche su dispositivi che eseguono l'SDK 22 o versioni precedenti, consigliamo agli sviluppatori di applicare le opzioni precedenti, ma aumentando il livello di sicurezza del PendingIntent creato utilizzando il seguente pattern:

if (android.os.Build.VERSION.SDK_INT >= 23) {

  // Crea un PendingIntent utilizzando FLAG_IMMUTABLE

} else {

  // Codice esistente che crea un PendingIntent

}

2. Invia l'APK aggiornato

Per inviare un app bundle o APK aggiornato:

  1. Accedi a Play Console.
  2. Seleziona l'app.
  3. Vai a Explorer per app bundle.
  4. Seleziona la versione dell'app dell'APK o dell'app bundle non conforme nel menu a discesa in alto a destra e prendi nota delle relative release.
  5. Vai al canale con il problema relativo alle norme. Sarà una di queste 4 pagine: Test interni/Test chiusi/Test aperti o Produzione.
  6. In alto a destra nella pagina, fai clic su Crea nuova release. Potrebbe essere necessario fare prima clic su Gestisci canale.
    • Se la release con l'APK in violazione è in stato di bozza, eliminala.
  7. Aggiungi la versione conforme alle norme degli app bundle o degli APK.
    • Assicurati che la versione non conforme degli app bundle o degli APK si trovi nella sezione Non inclusi di questa release. Per ulteriori indicazioni, consulta la sezione "Non inclusi (app bundle e APK)" di questo articolo del Centro assistenza Play Console.
  8. Per salvare le modifiche che apporti alla tua release, seleziona Salva.
  9. Una volta preparata la release, seleziona Controllo della release.

Se l'APK non conforme viene rilasciato per più canali, ripeti i passaggi da 5 a 9 in ogni canale.

In questo lasso di tempo, la tua nuova app o l'aggiornamento dell'app presenterà lo stato In revisione fino al termine dell'esame della tua richiesta. Se l'app non è stata aggiornata correttamente, continuerai a vedere l'avviso.

Siamo a tua disposizione

Puoi pubblicare eventuali domande tecniche relative alla vulnerabilità su Stack Overflow utilizzando il tag "android-security". Per chiarimenti sui passaggi da seguire per risolvere il problema, puoi contattare il nostro team di assistenza.

È stato utile?

Come possiamo migliorare l'articolo?
false
Menu principale
5471395096422460647
true
Cerca nel Centro assistenza
true
true
true
true
true
5016068
false
false
false