Com solucionar la vulnerabilitat de Fragment Injection

Aquesta informació es dirigeix als desenvolupadors d'aplicacions que utilitzen una implementació no segura de les classes PreferenceActivity que les fa vulnerables a Fragment Injection. Una implementació no segura d'aquest tipus pot permetre que una aplicació externa maliciosa carregui Fragments que haurien de ser privats.

Què passa

A partir de l'1 de març de 2017, Google Play va començar a bloquejar la publicació de les aplicacions o les actualitzacions noves en què les classes PreferenceActivity poguessin ser vulnerables a Fragment Injection. Consulta l'avís a Play Console. Després de les dates límit que es mostren a Play Console, és possible que les aplicacions que presentin vulnerabilitats de seguretat sense solucionar se suprimeixin de Google Play.

Acció necessària​

  1. Inicia la sessió a Play Console i navega per la secció Alertes per consultar quines aplicacions es veuen afectades i les dates límit per resoldre aquests problemes.
  2. Actualitza les aplicacions afectades i soluciona la vulnerabilitat.
  3. Envia les versions actualitzades de les aplicacions afectades.

Un cop hagis l'hagis tornat a enviar, tornarem a revisar la teva aplicació. Aquest procés pot tardar diverses hores. Si l'aplicació passa la revisió i es publica correctament, no cal dur a terme cap altra acció. Si l'aplicació no passa la revisió, no se'n publicarà la versió nova i rebràs una notificació per correu electrònic.

Detalls addicionals

On sigui possible, defineix exported=false per a PreferenceActivity al teu fitxer de manifest. D'aquesta manera evitaràs que les aplicacions externes enviïn Intents a aquesta classe.

Si cal exportar la PreferenceActivity vulnerable a aplicacions externes, determina el motiu pel qual la classe és vulnerable i pren les mesures adequades. Hi ha dues possibilitats:

  1. Implementació incorrecta d'isValidFragment:

Comprova si la classe vulnerable conté o hereta una implementació d'isValidFragment que mostri el valor "true" en tots els camins de codi. Si es dóna el cas, actualitza la classe per veure una llista de les classes de Fragment disponibles. Per exemple, si PreferenceActivity permet classes de MyFragment i cap altre Fragment, implementa una comprovació com la següent:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. targetSdkVersion té un valor inferior a 19 i no implementa isValidFragment:

Si l'aplicació defineix actualment el seu targetSdkVersion al fitxer de manifest amb un valor inferior a 19 i la classe vulnerable no conté cap implementació d'isValidFragment, vol dir que la vulnerabilitat s'ha heretat de PreferenceActivity.

Per solucionar-ho, els desenvolupadors han d'actualitzar targetSdkVersion a 19 o un valor superior. En canvi, si targetSdkVersion no es pot actualitzar, els desenvolupadors han d'implementar isValidFragment tal com es descriu al primer pas per veure les classes de Fragment disponibles.

Tingues en compte que les aplicacions també han de complir l'Acord de distribució per a desenvolupadors i la política de continguts

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 per a desenvolupadors.

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