Den här informationen riktar sig till utvecklare med appar som innehåller en säkerhetsbrist med otillåtna sökvägar.
Detta händer
Sedan den 16 januari 2018 har publiceringen av nya appar eller uppdateringar som innehåller säkerhetsbristen Path Traversal blockerats på Google Play. Läs mer i meddelandet på Play Console. Alla appar där säkerhetsbristen inte har åtgärdats tas bort från Google Play efter det datum som anges på Play Console.
Åtgärd som krävs
- Logga in på Play Console och öppna avsnittet Varningar. Där ser du vilka appar som berörs av problemet och vilket datum det måste vara åtgärdat.
- Uppdatera de berörda apparna och åtgärda säkerhetsbristen.
- Skicka in uppdaterade versioner av de berörda apparna.
När du skickar in den nya appversionen granskas den på nytt. Granskningen kan ta flera timmar. Om appen blir godkänd vid granskningen och publiceras utan problem behöver du inte göra något mer. Om appen inte blir godkänd vid granskningen publiceras inte den nya appversionen och du meddelas via e-post.
Ytterligare information
Implementeringar av openFile i ContentProviders som har exporterats kan innehålla säkerhetsbrister om de inte validerar inkommande URI-parametrar på rätt sätt. En skadlig app kan tillhandahålla en utarbetad URI (till exempel en som innehåller /../) i syfte att lura appen att returnera ParcelFileDescriptor för en fil utanför den avsedda katalogen och därmed ge den skadliga appen åtkomst till alla filer som din app har åtkomst till.
Vi rekommenderar två strategier för att ta bort en säkerhetsbrist med otillåtna sökvägar i ContentProvider.
1. Gör följande om ContentProvider inte måste exponeras för andra appar:
- Ändra taggen <provider> i berörd ContentProvider i manifestet så att android:exported=”false” är angivet. På så sätt kan andra appar inte skicka intent till berörd ContentProvider.
- Du kan även ange att attributet android:permission ska vara en behörighet med android:protectionLevel=“signature” och förhindra att appar som är skrivna av andra utvecklare skickar intent till berörd ContentProvider.
2. Gör följande om ContentProvider måste exponeras för andra appar:
Du måste försäkra dig på rätt sätt om att inmatningar i openFile som innehåller tecken för genomgång till sökvägar inte kan leda till att appen returnerar oväntade filer. Detta gör du genom att kontrollera filens kanoniska sökväg. Exempel:
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);
}
Undantag: Tänk på att det inte är säkert att anropa getLastPathSegment på URI-parametern. En skadlig app kan tillhandahålla en kodad URI-sökväg som %2F.%2F..path%2Fto%2Fsecret.txt så att resultatet för getLastPathSegment blir /../../path/to/secret.txt. Bland annat följande implementering är fortfarande sårbar för attacker.
public ParcelFileDescriptor openFile(Uri uri, String mode){
File f = new File(DIR, uri.getLastPathSegment());
return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
}
Vi hjälper dig gärna
Om du har tekniska frågor som handlar om säkerhetsbristen kan du ställa dem på Stack Overflow. Använd taggen android-security. Om du behöver mer information om hur du åtgärdar problemet kontaktar du vårt supportteam för utvecklare.