Sådan retter du sikkerhedsbristen Fragment Injection

Disse oplysninger er beregnet til appudviklere, der bruger en usikker implementering af klassen PreferenceActivity, som gør dem sårbare over for Fragment Injection. En sådan implementering kan gør det muligt for en skadelig ekstern app at indlæse fragmenter, der burde være private.

Hvad sker der?

Siden den 1. marts 2017 har Google Play blokeret udgivelsen af alle nye apps eller opdateringer, hvor klasserne PreferenceActivity kan være sårbare over for Fragment Injection. Få flere oplysninger ved at gå til meddelelsen i Play ConsoleEfter de tidsfrister, der vises i Play Console, fjernes alle apps med sikkerhedsbrister, som ikke er rettet, muligvis fra Google Play.

Påkrævet handling​

  1. Log ind på Play Console, og gå til afsnittet Advarsler for at se, hvilke apps der er berørt, og tidsfristerne for at løse disse problemer.
  2. Opdater dine berørte apps, og afhjælp sikkerhedsbristen.
  3. Indsend de opdaterede versioner af de berørte apps.

Din app gennemgås på ny, når du indsender den igen. Dette kan tage flere timer. Hvis appen består gennemgangen og udgives korrekt, skal du ikke gøre mere. Hvis appen ikke består gennemgangen, udgives den nye appversion ikke, og du modtager en notifikation via mail.

Yderligere oplysninger

Der hvor det er muligt, skal du angive exported=false for PreferenceActivity i dit manifest. Dette forhindrer eksterne apps i at sende formål til denne klasse.

Hvis den sårbare PreferenceActivity skal eksporteres til eksterne apps, skal du finde ud af, hvorfor klassen er sårbar, og derefter træffe de nødvendige foranstaltninger. Der er to muligheder:

  1. Forkert implementering af isValidFragment:

Tjek, om den sårbare klasse indeholder eller nedarver en implementering af isValidFragment, der returnerer SAND for alle kodestier. Hvis dette er korrekt, skal du opdatere klassen for at se efter en liste over tilladte Fragment-klasser. Hvis PreferenceActivity f.eks. skal tillade MyFragment-klasser og ingen andre fragmenter, skal du implementere en kontrol som denne:

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

         }

  1. targetSdkVersion er ældre end version 19 og implementerer ikke isValidFragment:

Hvis appen på nuværende tidspunkt angiver dens targetSdkVersion i manifestet til en værdi, der er mindre end 19, og den sårbare klasse ikke indeholder en implementering af isValidFragment, er sårbarheden nedarvet fra PrefenceActivity.

Udviklere bør opdatere targetSdkVersion til 19 eller mere for at rette dette. Alternativt bør udviklere implementere isValidFragment som beskrevet i 1) for at søge efter tilladte fragmentklasser, hvis targetSdkVersion ikke kan opdateres.

Bemærk, at apps også skal overholde distributionsaftalen for udviklere og indholdspolitikken

Vi sidder klar til at hjælpe dig

Hvis du har tekniske spørgsmål vedrørende sikkerhedshullet, kan du skrive et indlæg på Stack Overflow og bruge tagget "android-security". Hvis du har spørgsmål til den vejledning, du skal følge for at løse problemet, kan du kontakte vores supportteam til udviklere.

false
Hovedmenu
1240177623000210693
true
Søg i Hjælp
true
true
true
true
true
5016068
false
false