Så här skyddar du mot fragmentinjektion

Informationen riktar sig till utvecklare vars appar innehåller en osäker implementering av PreferenceActivity-klasser som gör att apparna blir sårbara för fragmentinjektion. En sådan implementering kan medföra att fragment som borde vara privata laddas upp av en skadlig, extern app.

Detta händer

Sedan den 1 mars 2017 har publiceringen av nya appar eller uppdateringar där PreferenceActivity-klasser kan vara sårbara för fragmentinjektion blockerats på Google Play. Läs mer i meddelandet på Play ConsoleAlla appar där säkerhetsbristen inte har åtgärdats tas bort från Google Play efter det datum som anges på Play Console.

Åtgärd som krävs​

  1. Logga in på Play Console och öppna avsnittet Varningar. Där ser du vilka appar som berörs av problemet och vilket datum det måste vara åtgärdat.
  2. Uppdatera de berörda apparna och åtgärda säkerhetsbristen.
  3. Skicka in uppdaterade versioner av de berörda apparna.

När du skickar in den nya appversionen granskas den på nytt. Granskningen kan ta flera timmar. Om appen blir godkänd vid granskningen och publiceras utan problem behöver du inte göra något mer. Om appen inte blir godkänd vid granskningen publiceras inte den nya appversionen och du meddelas via e-post.

Ytterligare information

Ange exported=false för PreferenceActivity i manifestet. Det förhindrar att intent skickas till denna klass från externa appar.

Om den sårbara PreferenceActivity måste exporteras till externa appar fastställer du varför klassen är sårbar och vidtar lämpliga åtgärder. Sårbarheten kan bero på de två anledningarna nedan.

  1. Felaktig implementering av isValidFragment:

Kontrollera om den sårbara klassen innehåller eller har ärvt en implementering av isValidFragment som returnerar sant på alla kodsökvägar. Om så är fallet uppdaterar du klassen och letar upp en lista över tillåtna fragmentklasser. Om till exempel endast MyFragment-klasser ska tillåtas av PreferenceActivity genomför du en kontroll på följande sätt:

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

         }

  1. targetSdkVersion är lägre än 19 och isValidFragment implementeras inte:

Om det för tillfället anges i appen att värdet för targetSdkVersion i manifestet ska vara lägre än 19 och den sårbara klassen inte innehåller någon implementering av isValidFragment så har PreferenceActivity orsakat sårbarheten.

Utvecklare bör åtgärda detta genom att uppdatera targetSdkVersion till 19 eller högre. Om targetSdkVersion inte kan uppdateras bör utvecklarna implementera isValidFragment enligt beskrivningen i 1) för att söka efter tillåtna fragmentklasser.

Tänk på att appar även måste uppfylla villkoren i distributionsavtalet för utvecklare och innehållspolicyn

Vi hjälper dig gärna

Om du har tekniska frågor som handlar om säkerhetsbristen kan du ställa dem på Stack Overflow. Använd taggen android-security. Om du behöver mer information om hur du åtgärdar problemet kontaktar du vårt supportteam för utvecklare.

false
Huvudmeny
14454576479639608026
true
Sök i hjälpcentret
true
true
true
true
true
5016068
false
false