Izloženost napadu prelaskom puta (Path Traversal)

Ove su informacije namijenjene razvojnim programerima aplikacija koje su izložene napadu prelaskom puta.

Što se događa

Od 16. siječnja 2018. Google Play blokira objavljivanje svih novih aplikacija ili ažuriranja koja su izložena napadu prelaskom puta. Pogledajte obavijest na Play konzoliAplikacije koje budu sadržavale neriješene sigurnosne ranjivosti nakon rokova prikazanih na vašoj Play konzoli mogu se ukloniti s Google Playa.

Potrebna je radnja​

  1. Prijavite se na Play konzolu i u odjeljku Upozorenja pogledajte koje su aplikacije podložne ranjivostima i koji su rokovi za rješavanje tih poteškoća.
  2. Ažurirajte zahvaćene aplikacije i uklonite ranjivosti.
  3. Pošaljite ažurirane verzije ranjivih aplikacija.

Nakon slanja ponovo ćemo pregledati vašu aplikaciju. Taj postupak može trajati nekoliko sati. Ako aplikacija prođe pregled i uspješno se objavi, ne morate više ništa poduzimati. Ako aplikacija ne prođe pregled, nova verzija aplikacije neće se objaviti i dobit ćete obavijest e-poštom.

Dodatne pojedinosti

Implementacije openFile u izvezenim ContentProviderima mogu biti ranjive ako pravilno ne potvrđuju dolazne parametre URI-ja. Zlonamjerna aplikacija može dostaviti posebno izrađen URI (koji, na primjer, sadrži "/../") kako bi vaša aplikacija na prijevaru vratila ParcelFileDescriptor za datoteku izvan predviđenog direktorija, čime zlonamjernoj aplikaciji omogućuje pristup bilo kojoj datoteci koja je dostupna vašoj aplikaciji.

Dvije su preporučene strategije za uklanjanje ranjivosti na napad prelaskom puta u ContentProvideru.

1. Ako vaš ContentProvider ne mora biti izložen drugim aplikacijama:

2. Ako vaš ContentProvider treba biti izložen drugim aplikacijama:

Morate osigurati da unosi za openFile koji sadrže znakove za prelazak puta ne mogu uzrokovati da vaša aplikacija vraća neočekivane datoteke. Da biste to učinili, provjerite kanonski put datoteke. Na primjer:

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

Upozorenja: napominjemo da pozivanje getLastPathSegment na parametru URI nije sigurno. Zlonamjerna aplikacija može dostaviti kodirani put URI-ja kao što je %2F..%2F..path%2Fto%2Fsecret.txt, pa će rezultat za getLastPathSegment biti /../../path/to/secret.txt. Na primjer, sljedeća je implementacija i dalje izložena napadu.

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

Obratite nam se ako vam zatreba pomoć

Ako imate tehničkih pitanja o toj ranjivosti, možete objaviti post na Stack Overflowu uz oznaku "android-security". Ako vam je potrebno pojašnjenje postupka za rješavanje te poteškoće, možete se obratiti našem timu za podršku razvojnim programerima.

false
Glavni izbornik
828352571697893914
true
Pretraži Centar za pomoć
true
true
true
true
true
5016068
false
false