Deze informatie is bedoeld voor ontwikkelaars met apps die het beveiligingsrisico met betrekking tot padverkeer bevatten.
Wat er gebeurt
Vanaf 16 januari 2018 blokkeert Google Play de publicatie van nieuwe apps of updates die het beveiligingsrisico met betrekking tot padverkeer (Path traversal vulnerability) bevatten. Bekijk de melding in uw Play Console. Na de deadlines die worden weergegeven in uw Play Console, worden apps met niet-opgeloste beveiligingsproblemen verwijderd uit Google Play.
Vereiste actie
- Log in bij de Play Console en navigeer naar het gedeelte Meldingen om te zien welke apps het betreft en wat de deadlines zijn om deze problemen op te lossen.
- Update de betreffende apps en verhelp de kwetsbaarheid.
- Dien de geüpdatete versies van de betreffende apps in.
Nadat uw app opnieuw is ingediend, wordt deze opnieuw beoordeeld. Dit proces kan enkele uren duren. Als de app is goedgekeurd en is gepubliceerd, hoeft u verder geen actie te ondernemen. Als de app niet wordt goedgekeurd, wordt de nieuwe app-versie niet gepubliceerd en ontvangt u een e-mailmelding.
Aanvullende details
Implementaties van openFile in geëxporteerde ContentProviders kunnen kwetsbaar zijn als ze inkomende Uri-parameters niet goed valideren. Een schadelijke app kan een bewerkte Uri leveren (bijvoorbeeld een Uri die '/../' bevat) die probeert uw app te misleiden tot het retourneren van een ParcelFileDescriptor voor een bestand buiten de beoogde directory, waardoor de schadelijke app toegang krijgt tot bestanden die toegankelijk zijn voor uw app.
Er zijn twee aanbevolen strategieën voor het oplossen van het beveiligingsrisico met betrekking tot padverkeer in een ContentProvider.
1. Als uw ContentProvider niet aan andere apps moet worden blootgesteld:
- U kunt de tag <provider> van de betreffende ContentProvider wijzigen in uw manifest door android:exported="false" in te stellen. Hiermee wordt voorkomen dat andere apps intenties verzenden naar de betreffende ContentProvider.
- U kunt ook het kenmerk android:permission instellen als permission met android:protectionLevel=“signature” om te voorkomen dat apps die zijn geschreven door andere ontwikkelaars intenties verzenden naar de betreffende ContentProvider.
2. Als uw ContentProvider toegankelijk moet zijn voor andere apps:
U moet ervoor zorgen dat ingevoerde items in openFile die tekens voor padverkeer bevatten, uw app geen onverwachte bestanden kunnen laten retourneren. U kunt dit doen door het canonieke pad van het bestand te controleren. Bijvoorbeeld:
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);
}
Let op: Het aanroepen van getLastPathSegment in de parameter Uri is niet veilig. Een schadelijke app kan een gecodeerd Uri-pad leveren zoals% 2F..%2F..path%2Fto%2Fsecret.txt, zodat het resultaat van getLastPathSegment /../../path/to/secret.txt is. De volgende implementatie is bijvoorbeeld nog steeds kwetsbaar voor aanvallen.
public ParcelFileDescriptor openFile(Uri uri, String mode){
File f = new File(DIR, uri.getLastPathSegment());
return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
}
We helpen u graag
Als u technische vragen over de kwetsbaarheid heeft, kunt u een bericht posten op Stack Overflow en de tag 'android-security' gebruiken. Neem contact op met ons supportteam voor ontwikkelaars voor meer informatie over de stappen die u moet uitvoeren om dit probleem op te lossen.