Come risolvere il problema della vulnerabilità Fragment Injection

Queste informazioni sono rivolte agli sviluppatori di app che usano un'implementazione non sicura delle classi PreferenceActivity che rende queste ultime vulnerabili all'operazione di Fragment Injection (inserimento di frammenti). Tale implementazione potrebbe consentire a un'app esterna dannosa di caricare frammenti che dovrebbero essere privati.

Situazione attuale

A partire dal 1 marzo 2017, Google Play impedisce la pubblicazione di qualsiasi nuova app o aggiornamento in cui le classi PreferenceActivity potrebbero essere vulnerabili all'inserimento di frammenti. Consulta la notifica sulla Play Console. Passate le scadenze visualizzate nella Play Console, le app che contengono vulnerabilità di sicurezza non corrette potrebbero essere rimosse da Google Play.

Azione richiesta

  1. Accedi alla Play Console e vai alla sezione Avvisi per scoprire quali app sono interessate dai problemi e le scadenze per risolverli.
  2. Aggiorna le app interessate e correggi la vulnerabilità.
  3. Invia le versioni aggiornate delle tue app coinvolte.

Quando invii nuovamente le app, queste vengono riesaminate. Questo processo può richiedere diverse ore. Se l'app supera il controllo e viene pubblicata correttamente, non sono necessari ulteriori interventi. Se l'applicazione non supera il controllo, la nuova versione dell'app non verrà pubblicata e riceverai una notifica via email.

Ulteriori dettagli

Dove possibile, imposta exported=false per la classe PreferenceActivity nel file manifest. In questo modo le app esterne non potranno inviare intent a questa classe.

Se è necessario esportare la classe PreferenceActivity vulnerabile in app esterne, cerca di capire la causa della vulnerabilità e adotta gli opportuni provvedimenti. Esistono due possibilità:

  1. Implementazione sbagliata del metodo isValidFragment:

Controlla se la classe vulnerabile contiene o eredita un'implementazione del metodo isValidFragment che restituisce true per tutti i percorsi di codice. In questo caso, aggiorna la classe per cercare un elenco di classi Fragment consentite. Ad esempio, se la classe PreferenceActivity deve consentire classi MyFragment e nessun'altra classe Fragment, implementa un controllo come il seguente:

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

         }

  1. Valore targetSdkVersion inferiore a 19 che non implementa il metodo isValidFragment:

Se il valore targetSdkVersion attualmente impostato nel file manifest dell'app è inferiore a 19 e la classe vulnerabile non contiene alcuna implementazione del metodo isValidFragment, significa che la vulnerabilità è stata ereditata dalla classe PreferenceActivity.

Per risolvere il problema di questa vulnerabilità, gli sviluppatori dovrebbero impostare un valore minimo di 19 per targetSdkVersion. In alternativa, se non è possibile aggiornare il valore targetSdkVersion, gli sviluppatori dovrebbero implementare il metodo isValidFragment come spiegato nel passaggio 1 per verificare la disponibilità delle classi di frammenti consentite.

Inoltre, tieni presente che le app devono essere conformi al Contratto di distribuzione per gli sviluppatori e alle norme relative ai contenuti

Siamo qui per aiutarti

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

È stato utile?

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