So beheben Sie die Fragment Injection-Sicherheitslücke

Die folgenden Informationen richten sich an Entwickler mit Apps, die die unsichere Implementierung von PreferenceActivity-Klassen verwenden, was diese Apps anfällig für die Fragment Injection macht. Durch eine solche Implementierung können schädliche externe Apps Fragmente laden, die eigentlich privat sein sollten.

Aktuelle Informationen

Seit dem 1. März 2017 blockiert Google Play die Veröffentlichung sämtlicher neuer Apps und Updates, bei denen PreferenceActivity-Klassen möglicherweise für Fragment Injection anfällig sind. Weitere Informationen dazu finden Sie in der entsprechenden Nachricht in der Play Console. Nachdem die in der Play Console angezeigten Fristen abgelaufen sind, werden alle Apps, die nicht behobene Sicherheitslücken enthalten, von Google Play entfernt.

Erforderliche Maßnahmen

  1. Melden Sie sich in der Play Console an und gehen Sie zum Bereich "Warnmeldungen". Dort sehen Sie, welche Apps betroffen sind und bis wann Sie diese Probleme beheben müssen.
  2. Aktualisieren Sie die betroffenen Apps und beheben Sie die Sicherheitslücke.
  3. Reichen Sie aktualisierte Versionen Ihrer betroffenen Apps ein.

Nachdem Ihre App neu eingereicht wurde, wird sie noch einmal überprüft. Dieser Vorgang kann mehrere Stunden dauern. Wenn die App die Überprüfung besteht und veröffentlicht wurde, sind keine weiteren Maßnahmen erforderlich. Falls die App die Überprüfung nicht besteht, wird die neue App-Version nicht veröffentlicht und Sie erhalten eine Benachrichtigung per E-Mail.

Weitere Details

Wenn es möglich ist, legen Sie in Ihrem Manifest "exported=false" für die PreferenceActivity-Klasse fest. So können fremde Apps keine Intents an diese Klasse senden.

Wenn die angreifbare PreferenceActivity-Klasse in fremde Apps exportiert werden muss, ermitteln Sie, weshalb die Klasse angreifbar ist, und ergreifen Sie entsprechende Maßnahmen. Es gibt zwei Möglichkeiten:

  1. Falsche Implementierung von isValidFragment:

Überprüfen Sie, ob die angreifbare Klasse eine isValidFragment-Implementierung enthält oder übernimmt, die bei allen Codepfaden "true" zurückgibt. Ist dies der Fall, aktualisieren Sie die Klasse, um sich eine Liste mit den zulässigen Fragmentklassen anzusehen. Beispiel: Wenn die PreferenceActivity-Klasse MyFragment-Klassen und keine anderen Fragmente zulassen sollte, implementieren Sie beispielsweise folgende Überprüfung:

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

         }

  1. targetSdkVersion weniger als 19 und keine Implementierung von isValidFragment:

Wenn die App ihre targetSdkVersion aktuell im Manifest auf einen geringeren Wert als 19 festlegt und die angreifbare Klasse keine isValidFragment-Implementierung enthält, wird die Sicherheitslücke von der PreferenceActivity-Klasse übernommen.

Um dies zu beheben, sollten Entwickler die targetSdkVersion entweder auf 19 oder höher umstellen. Wenn die targetSdkVersion nicht aktualisiert werden kann, sollten Entwickler alternativ isValidFragment wie in 1) beschrieben implementieren, um eine Überprüfung auf zulässige Fragmentklassen durchzuführen.

Beachten Sie, dass Apps der Vereinbarung für den Entwicklervertrieb und den Inhaltsrichtlinien entsprechen müssen. 

Hilfe und Support

Technische Fragen zu dieser Sicherheitslücke können Sie bei Stack Overflow posten. Bitte verwenden Sie dabei das Tag "android-security". Weitere Informationen zu den Maßnahmen, die zur Lösung dieses Problems erforderlich sind, erhalten Sie von unserem Entwicklersupportteam.

War das hilfreich?

Wie können wir die Seite verbessern?
false
Hauptmenü
6332776938925093963
true
Suchen in der Hilfe
true
true
true
true
true
5016068
false
false