Sikkerhedsbrist i forbindelse med stiforløb

Disse oplysninger er beregnet til udviklere med apps, der indeholder sikkerhedsbristen i forbindelse med stiforløb.

Hvad sker der?

Siden den 16. januar 2018 har Google Play blokeret udgivelsen af alle nye apps eller opdateringer, som indeholder sikkerhedsbristen i forbindelse med stiforløb. Få flere oplysninger ved at gå til meddelelsen i Play ConsoleEfter de tidsfrister, der vises i Play Console, fjernes alle apps med sikkerhedsbrister, som ikke er rettet, fra Google Play.

Påkrævet handling​

  1. Log ind på Play Console, og gå til afsnittet Advarsler for at se, hvilke apps der er berørt, og tidsfristerne for at løse disse problemer.
  2. Opdater dine berørte apps, og afhjælp sikkerhedsbristen.
  3. Indsend de opdaterede versioner af de berørte apps.

Din app gennemgås på ny, når du indsender den igen. Dette kan tage flere timer. Hvis appen består gennemgangen og udgives korrekt, skal du ikke gøre mere. Hvis appen ikke består gennemgangen, udgives den nye appversion ikke, og du modtager en notifikation via mail.

Yderligere oplysninger

Implementeringer af openFile i eksporterede ContentProviders kan være sårbare, hvis de ikke bekræfter indgående Uri-parametre på korrekt vis. En skadelig app kan levere en kunstig Uri (som f.eks. indeholder "/../") for at snyde din app til at returnere en ParcelFileDescriptor for en fil uden for det påtænkte indeks. På den måde kan den skadelige app få adgang til enhver fil, din app har adgang til.

Der er to anbefalede metoder til at fjerne sikkerhedsbristen i forbindelse med stiforløb i en ContentProvider.

1. Hvis din ContentProvider ikke behøver at have kontakt med andre apps:

2. Hvis din ContentProvider er nødt til at have kontakt med andre apps:

Du skal på en korrekt måde sikre, at input til openFile, der indeholder tegn til stiforløb, ikke kan få din app til at returnere uventede filer. Du kan gøre dette ved at tjekke filens kanoniske sti. Eksempel:

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);
}
 

Forbehold: Bemærk, at det ikke er sikkert at kalde getLastPathSegmentUri-parameteren. En skadelig app kan levere en kodet Uri-sti såsom %2F..%2F..sti%2Ftil%2Fhemmelig.txt, så resultatet af getLastPathSegment bliver /../../sti/til/hemmelig.txt. Følgende implementering er f.eks. stadig sårbar over for angreb.

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

Vi sidder klar til at hjælpe dig

Hvis du har tekniske spørgsmål vedrørende sikkerhedshullet, kan du skrive et indlæg på Stack Overflow og bruge tagget "android-security". Hvis du har spørgsmål til den vejledning, du skal følge for at løse problemet, kan du kontakte vores supportteam til udviklere.

false
Hovedmenu
11719052972645459555
true
Søg i Hjælp
true
true
true
true
true
5016068
false
false