Solucionar la vulnerabilitat de PendingIntent implícita

Aquesta informació va dirigida als desenvolupadors amb aplicacions que contenen la vulnerabilitat de PendingIntent implícita.

Què passa

Com a mínim una de les teves aplicacions té un problema de PendingIntent implícita que pot provocar amenaces de seguretat en forma de denegació de servei, robatori de dades privades i augment de privilegis. Revisa els passos detallats següents per resoldre el problema de les aplicacions.  A la notificació de Play Console corresponent a la teva aplicació pots trobar les ubicacions de l'aplicació on hi ha els usos de les PendingIntent implícites. Si una ubicació acaba en "(codi carregat dinàmicament)", la ubicació es troba al codi carregat dinàmicament per l'aplicació o per biblioteques que l'aplicació utilitza. Les aplicacions solen utilitzar codi carregat dinàmicament a través de l'entrega de funcions a la carta, tot i que hi ha altres tècniques no recomanades (algunes tècniques no recomanades també infringeixen la política de Google Play i no s'han d'utilitzar). A més, els empaquetadors poden transformar el codi d'aplicació en codi carregat dinàmicament.

Et recomanem que corregeixis aquest problema, tot i que no és obligatori. L'estat de publicació de l'aplicació no s'hi veurà afectat.

Detalls addicionals

Les aplicacions d'Android envien missatges entre components mitjançant intents. Les intents poden especificar el component de destinació (intent explícita), o bé poden indicar una acció general i deixar que el sistema operatiu entregui la intent a qualsevol component del dispositiu que registri un filtre d'intent que coincideixi amb aquesta acció (intent implícita).

Les PendingIntents són intents que es deleguen a una altra aplicació perquè les entregui més tard. El fet de crear una intent implícita unida a una PendingIntent suposa una vulnerabilitat de seguretat que pot comportar la denegació de servei, el robatori de dades privades i l'augment de privilegis.

Passos següents

1. Actualitza l'aplicació i corregeix les alertes de "PendingIntent implícita" seguint els passos que s'indiquen a continuació.

Consulta l'aplicació per saber on es crea una PendingIntent. Per exemple, el codi següent crea una PendingIntent unida a una intent implícita: 

// Crea una intent implícita de base i uneix-la a una PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

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

Google recomana que els desenvolupadors corregeixin la vulnerabilitat aplicant qualsevol de les solucions següents (o, millor encara, totes):

  • Assegurar-se que els camps d'acció, de paquet i de component de la intent de base s'hagin definit.
  • Comprovar que la PendingIntent s'entregui només a components de confiança.
  • Utilitzar la marca FLAG_IMMUTABLE (afegida a l'SDK 23) per crear PendingIntents. Això evita que les aplicacions que rebin la PendingIntent emplenin les propietats buides. Si l'aplicació també s'executa en dispositius que tenen l'SDK 22 o una versió anterior, recomanem als desenvolupadors que apliquin les opcions anteriors i que reforcin la creació de la PendingIntent amb el patró:

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

  // Crea una PendingIntent amb FLAG_IMMUTABLE

} else {

  // Codi existent que crea una PendingIntent

}

2. Envia l'APK actualitzat.

Per enviar un app bundle o un APK actualitzats:

  1. Ves a Play Console.
  2. Selecciona l'aplicació.
  3. Ves a l'explorador d'app bundles.
  4. Selecciona la versió de l'aplicació de l'APK o de l'app bundle que no compleix les polítiques al menú desplegable de la part superior dreta i anota les versions que el contenen.
  5. Ves al canal que té el problema relacionat amb les polítiques. Serà una d'aquestes quatre pàgines: Prova interna, Prova tancada, Prova oberta o Producció.
  6. A prop de la part superior dreta de la pàgina, fes clic a Crea una versió. És possible que primer hagis de fer clic a Gestiona el canal.
    • Si la versió amb l'APK infractor està en estat d'esborrany, descarta-la.
  7. Afegeix la versió dels app bundles o dels APK que compleix les polítiques.
    • Assegura't que la versió dels app bundles o dels APK que no compleix les polítiques es trobi a la secció No inclosos d'aquesta versió. Per obtenir més indicacions, consulta la secció "No inclosos (app bundles i APK)" d'aquest article d'ajuda de Play Console.
  8. Per desar els canvis que facis a la versió, selecciona Desa.
  9. Quan hagis acabat de preparar la versió, selecciona Revisa la versió.

Si l'APK que no compleix les polítiques es publica en diversos canals, repeteix els passos 5-9 a cada canal.

Durant aquest període de temps, l'aplicació nova o l'actualització tindran l'estat en revisió fins que no es revisi la sol·licitud. Si l'aplicació no s'ha actualitzat correctament, continuaràs veient l'advertiment.

Som aquí per ajudar-te

Si tens cap dubte tècnic sobre la vulnerabilitat, pots publicar les teves preguntes a Stack Overflow amb l'etiqueta "android-security". Per aclarir els passos que has de seguir per resoldre aquest problema, pots contactar amb el nostre equip d'assistència.

false
Menú principal
16739803413884339902
true
Cerca al Centre d'ajuda
true
true
true
true
true
5016068
false
false