Sicherheitslücke beim Pfaddurchlauf

Die folgenden Informationen richten sich an Entwickler von Apps, die eine Sicherheitslücke beim Pfaddurchlauf enthalten.

Aktuelle Informationen

Seit dem 16. Januar 2018 blockiert Google Play die Veröffentlichung sämtlicher neuer Apps und Updates, die eine Sicherheitslücke beim Pfaddurchlauf enthalten. 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 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 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

Implementierungen von openFile in exportierten ContentProviders können manipulationsanfällig sein, wenn die eingehenden Uri-Parameter nicht korrekt geprüft werden. Eine schädliche App kann einen selbst erstellten Uri liefern (z. B. einen, der "/../" enthält). Dieser kann Ihre App dazu veranlassen, "ParcelFileDescriptor" für eine Datei außerhalb des gewünschten Verzeichnisses zurückzugeben. So kann die schädliche App auf jede Datei zugreifen, auf die auch Ihre App zugreifen kann.

Zur Beseitigung einer Sicherheitslücke im Pfaddurchlauf in einem ContentProvider werden zwei Strategien empfohlen.

1. Wenn Ihr ContentProvider nicht anderen Apps ausgesetzt sein muss:

2. Wenn Ihr ContentProvider anderen Apps ausgesetzt sein muss:

Sie müssen ordnungsgemäß sicherstellen, dass Eingaben an openFile, die Pfaddurchlaufzeichen enthalten, nicht dazu führen können, dass Ihre App unerwartete Dateien zurückgibt. Dies erreichen Sie, indem Sie den kanonischen Pfad der Datei überprüfen. Beispiel:

public ParcelFileDescriptor openFile (Uri uri, String mode)
   throws FileNotFoundException {
 File f = new File(DIR, uri.getLastPathSegment());
 if (!f.getCanonicalPath().startsWith(DIR)) {
   throw new IllegalArgumentException();
 }
 return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
}
 

Warnung: Beachten Sie, dass das Aufrufen von getLastPathSegment für den Uri-Parameter nicht sicher ist. Eine schädliche App kann einen codierten Uri-Pfad wie "%2F..%2F..path%2Fto%2Fsecret.txt" liefern, sodass das Ergebnis von getLastPathSegment "/../../path/to/secret.txt" lautet. Beispielsweise ist die folgende Implementierung immer noch anfällig für Angriffe:

public ParcelFileDescriptor openFile(Uri uri, String mode){
 File f = new File(DIR, uri.getLastPathSegment());
 return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
}
 

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