Vulnerabilitatea prin traversarea căii

Aceste informații sunt destinate dezvoltatorilor de aplicații care conțin o vulnerabilitate prin traversarea căii.

Ce se întâmplă

Începând din 16 ianuarie 2018, Google Play a început să blocheze publicarea tuturor aplicațiilor noi și a actualizărilor care conțin vulnerabilitatea prin traversarea căii. Consultați notificarea din Play ConsoleDupă termenele limită afișate în Play Console, toate aplicațiile care conțin vulnerabilități de securitate neremediate pot fi eliminate din Google Play.

Acțiune necesară

  1. Conectați-vă la Play Console și navigați la secțiunea Alerte ca să vedeți ce aplicații sunt afectate și care sunt termenele limită pentru remedierea problemelor.
  2. Actualizați aplicațiile afectate și remediați vulnerabilitatea.
  3. Trimiteți versiunile actualizate ale aplicațiilor afectate.

După retrimiterea solicitării, aplicația dvs. va fi examinată din nou. Procesul poate dura câteva ore. Dacă aplicația trece de etapa de examinare și este publicată, nu mai este necesară nicio acțiune din partea dvs. Dacă aplicația nu trece de examinare, noua versiune a aplicației nu va fi publicată și veți primi o notificare prin e-mail.

Detalii suplimentare

Implementările funcției openFile în clasele exportate ContentProvider pot fi vulnerabile dacă nu validează corect parametrii URI de intrare. O aplicație rău intenționată poate oferi un URI modificat (de exemplu, unul care conține „/../”), pentru a determina aplicația dvs. să returneze un obiect ParcelFileDescriptor pentru un fișier în afara directorului dorit, permițând astfel aplicației rău intenționate să acceseze orice fișier care poate fi accesat de aplicația dvs.

Există două strategii recomandate pentru eliminarea vulnerabilității prin traversarea căii dintr-o clasă ContentProvider.

1. Dacă nu este necesar să expuneți clasa ContentProvider altor aplicații:

2. Dacă este necesar să expuneți clasa ContentProvider altor aplicații:

Trebuie să vă asigurați că parametrii de intrare din openFile care conțin caractere de traversare a căii nu pot determina aplicația dvs. să returneze fișiere neașteptate. În acest scop, verificați calea canonică a fișierului. De exemplu:

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

Avertismente: rețineți că apelarea funcției getLastPathSegment pentru parametrul Uri nu este sigură. O aplicație rău intenționată poate oferi o cale URI codificată, de exemplu, %2F..%2F..cale%2Fcătre%2Fsecret.txt, prin urmare, rezultatul pentru getLastPathSegment va fi /../../cale/către/secret.txt. De exemplu, următoarea implementare este totuși vulnerabilă la atac.

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

Vă stăm la dispoziție pentru ajutor

Dacă aveți întrebări tehnice cu privire la vulnerabilitate, puteți posta pe Stack Overflow, cu eticheta „android-security”. Pentru clarificarea pașilor necesari pentru remedierea acestei probleme, contactați echipa de asistență pentru dezvoltatori.

false
Meniu principal
11040128063981368082
true
Căutaţi în Centrul de ajutor
true
true
true
true
true
5016068
false
false