Die folgenden Informationen richten sich an Entwickler von Apps, die eine Sicherheitslücke des Typs „Impliziter PendingIntent“ enthalten.
Problembeschreibung
Mindestens eine Ihrer Apps enthält ein Problem in Verbindung mit einem impliziten PendingIntent, was Denial-of-Service-Angriffe, den Diebstahl privater Daten und Angriffe durch Rechteausweitung begünstigen kann. Bitte lesen Sie die folgenden detaillierten Schritte, um das Problem in Ihren Apps zu beheben. Informationen dazu, wo in Ihrer App implizite PendingIntents verwendet werden, finden Sie in der Play Console-Benachrichtigung für Ihre App. Wenn ein Standort mit „(in dynamisch geladenem Code)“ endet, ist er im Code, der von der App oder durch die von der App verwendeten Bibliotheken dynamisch geladen wird. In der Regel nutzen Apps dynamisch geladenen Code über die On-Demand-Auslieferung von Funktionen. Es gibt jedoch auch andere nicht empfohlene Methoden. Einige nicht empfohlene Methoden verstoßen jedoch gegen die Google Play-Richtlinien und dürfen nicht verwendet werden. Außerdem können Packer Anwendungscode in dynamisch geladenen Code umwandeln.
Die Behebung dieses Problems wird empfohlen, ist aber nicht zwingend erforderlich. Der Veröffentlichungsstatus Ihrer App ist von dem Problem nicht betroffen.
Weitere Details
Android-Apps senden Nachrichten zwischen Komponenten mithilfe von Intents. Intents können entweder die Zielkomponente (expliziter Intent) angeben oder eine allgemeine Aktion auflisten und es dem Betriebssystem überlassen, den Intent an Komponenten auf dem Gerät zu senden, die einen mit dieser Aktion übereinstimmenden Intent-Filter registrieren (impliziter Intent).
PendingIntents sind Intents, die an eine andere App delegiert wurden und später gesendet werden sollen. Das Erstellen eines impliziten Intents, der von einem PendingIntent umschlossen wird, kann Denial-of-Service-Angriffe, den Diebstahl privater Daten und Angriffe durch Rechteausweitung begünstigen.
Nächste Schritte
1. Aktualisieren Sie Ihre App und beheben Sie Probleme des Typs „Impliziter PendingIntent“ anhand der unten hervorgehobenen Schritte.
Prüfen Sie, wo in Ihrer App ein PendingIntent erstellt wird. Durch den folgenden Code wird beispielsweise ein PendingIntent erstellt, der einen impliziten Intent umschließt:
// Impliziten Basis-Intent erstellen und mit einem PendingIntent umschließen
Intent base = new Intent("ACTION_FOO");
base.setPackage("some_package");
PendingIntent pi = PendingIntent.getService(this, 0, base, 0);
Google empfiehlt Entwicklern, die Sicherheitslücke zu beseitigen, indem Sie möglichst viele der folgenden Maßnahmen umsetzen:
- Darauf achten, dass die Basis-Intent-Felder für Aktion, Paket und Komponente festgelegt sind.
- Dafür sorgen, dass der PendingIntent nur an vertrauenswürdige Komponenten gesendet wird.
- PendingIntents mithilfe von FLAG_IMMUTABLE (in SDK 23 hinzugefügt) erstellen. Dadurch wird verhindert, dass Apps, die den PendingIntent empfangen, nicht festgelegte Attribute selbst festlegen. Falls die App auch auf Geräten mit SDK 22 oder älteren Versionen ausgeführt wird, sollten Entwickler zusätzlich die Erstellung von PendingIntents mit dem folgenden Muster sicherer machen:
if (android.os.Build.VERSION.SDK_INT >= 23) {
// PendingIntent mithilfe von FLAG_IMMUTABLE erstellen
} else {
// Vorhandener Code, durch den ein PendingIntent erstellt wird
}
2. Reichen Sie Ihr aktualisiertes App Bundle oder APK folgendermaßen ein:
To submit an updated app bundle or APK:
- Rufen Sie die Play Console auf.
- Wählen Sie die App aus.
- Rufen Sie den App Bundle Explorer auf.
- Wählen Sie rechts oben im Drop-down-Menü die App-Version des nicht konformen APKs / App Bundles aus und merken Sie sich, in welchen Releases es vorhanden ist.
- Gehen Sie zum Track mit dem Richtlinienverstoß. Das wird eine der folgenden vier Seiten sein: Interner Test, Geschlossener Test, Offener Test oder Produktion.
- Wählen Sie rechts oben auf der Seite die Option Neuen Release erstellen aus. Unter Umständen müssen Sie zuerst auf „Track verwalten“ klicken.
- Wenn sich der Release mit dem APK, das gegen die Richtlinien verstößt, im Entwurfsstatus befindet, verwerfen Sie den Release.
- Fügen Sie die richtlinienkonforme Version der App Bundles oder APKs hinzu.
- Achten Sie darauf, dass sich die nicht konforme Version von App Bundles oder APKs im Abschnitt Nicht enthalten dieses Release befindet. Weitere Informationen finden Sie in diesem Play Console-Hilfeartikel im Abschnitt „Nicht inbegriffen“.
- Um an dem Release vorgenommene Änderungen zu speichern, wählen Sie Speichern aus.
- Wenn Sie mit der Vorbereitung des Releases fertig sind, wählen Sie Release überprüfen aus.
Wenn das nicht konforme APK in mehreren Tracks veröffentlicht wird, wiederholen Sie die Schritte 5 bis 9 in jedem Track.
Bis diese Überprüfung abgeschlossen ist, hat Ihre neue App oder Ihre App-Aktualisierung den Status Wird überprüft. Wenn die App nicht richtig aktualisiert wurde, wird die Warnung weiter angezeigt.
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 Supportteam.