Behebung der Sicherheitslücke "Intent-Diebstahl"

Die folgenden Informationen richten sich an Entwickler von Apps, die die Sicherheitslücke "Intent-Diebstahl" enthalten.

Aktuelle Informationen

Eine oder mehrere Ihrer Apps enthalten die Sicherheitslücke "Intent-Diebstahl". Dadurch können schädliche Netzwerke und Websites auf private App-Komponenten zugreifen.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, aus 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 mithilfe der unten beschriebenen Schritte.

  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 wird, 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.

Zusätzliche Informationen

WebViews, mit denen nicht vertrauenswürdige Webinhalte aufgerufen, intent://-Links mithilfe von Intent.parseUri geparst und diese Intents mithilfe von startActivity gesendet werden, sind anfällig für Intent-Diebstahl. Diese WebViews werden eventuell durch schädliche Webinhalte veranlasst, beliebige Intents an private App-Komponenten zu senden. Dies kann dazu führen, dass die App manipuliert werden kann, z. B. durch Diebstahl privater App-Daten. Als nicht vertrauenswürdige Webinhalte gelten in diesem Fall auch Inhalte von vertrauenswürdigen Domains, die über HTTP geladen werden.

Wir empfehlen Ihnen, diese Sicherheitslücke auf eine der folgenden Weisen zu vermeiden:

Option 1: Sorgen Sie dafür, dass WebViews keine beliebigen Intents senden können.

Sie können festlegen, dass Apps Intents, die mit Intent.parseUri erstellt wurden, nur als Implicit Intents an Komponenten mit BROWSABLE-Intent-Filtern senden dürfen. Verwenden Sie dazu den folgenden Code:

     // convert Intent scheme URL to Intent object
  Intent intent = Intent.parseUri(url);
  // forbid launching activities without BROWSABLE category
  intent.addCategory("android.intent.category.BROWSABLE");
  // forbid explicit call
  intent.setComponent(null);
  // forbid Intent with selector Intent
  intent.setSelector(null);
  // start the activity by the Intent
  view.getContext().startActivity(intent, -1);

Option 2: Sorgen Sie dafür, dass die betroffenen WebViews keine Webinhalte laden, die nicht vertrauenswürdig sind.

Wenn ein WebView beliebige URLs mit intent://-Schemata parsen muss, sorgen Sie dafür, dass keine Webinhalte geladen werden, die nicht vertrauenswürdig sind. Zu nicht vertrauenswürdigen Webinhalten gehören Webinhalte, die über eine unverschlüsselte Verbindung geladen werden. Entwickler haben die Möglichkeit, in ihrem Manifest für android:usesCleartextTraffic "false" festzulegen oder eine Network Security Config einzurichten, die HTTP-Datenverkehr blockiert. Alternativ können sie angeben, dass die betroffenen WebViews keine URLs mit HTTP-Schemata über loadUrl laden dürfen.

Entwickler sollten außerdem gewährleisten, dass die betroffenen WebViews keine unbeschränkten URLs laden, die aus nicht vertrauenswürdigen Quellen stammen, z. B. URLs, die aus nicht vertrauenswürdigen Intents stammen. 

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ü
17983427341072530551
true
Suchen in der Hilfe
true
true
true
true
true
5016068
false
false