Säkerhetsbrist med otillåtna sökvägar

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 ConsoleAlla 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​

  1. 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.
  2. Uppdatera de berörda apparna och åtgärda säkerhetsbristen.
  3. 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:

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 getLastPathSegmentURI-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.

false
Huvudmeny
12158766601940341558
true
Sök i hjälpcentret
true
true
true
true
true
5016068
false
false