Пропуст у вези са приступом путањи

Ове информације су намењене програмерима са апликацијама које садрже пропуст у вези са приступом путањи.

Шта се дешава

Од 16. јануара 2018. Google Play је почео да блокира објављивање свих нових апликација или ажурирања која садрже пропуст у вези са приступом путањи. Погледајте обавештење у Play конзоли. Уклонићемо из Google Play-а све апликације које и после датума наведених у Play конзоли буду садржале безбедносне пропусте.

Треба да реагујете​

  1. Пријавите се у Play конзолу и идите до одељка Обавештења да бисте видели које апликације су угрожене и рокове за решавање тих проблема.
  2. Ажурирајте апликације на које се ово односи и исправите пропусте.
  3. Пошаљите ажуриране верзије апликација на које се ово односи.

Када је поново пошаљете, апликација ће поново бити прегледана. Овај процес може да потраје неколико сати. Ако апликација прође преглед и буде објављена, не треба ништа више да предузимате. Ако апликација не прође преглед, онда нова верзија апликације неће бити објављена, а ви ћете добити обавештење имејлом.

Додатне информације

Примене openFile-a у извезеним ContentProvider-има могу да садрже пропуст ако правилно не потврде долазне URI параметре. Злонамерна апликација може да достави направљен URI (на пример, онај који садржи „/../“) да би преварила вашу апликацију да врати ParcelFileDescriptor за датотеку изван намењеног директоријума и на тај начин злонамерна апликација може да приступи свим датотекама којима ваша апликација има приступ.

Препоручујемо вам две стратегије за уклањање пропуста у вези са приступом путањи у ContentProvider-у.

1. Ако ContentProvider не мора да буде видљив другим апликацијама:

  • Можете да измените ознаку <provider> угроженог ContentProvider-а у манифесту да бисте подесили android:exported=”false”. На тај начин ћете спречити да остале апликације шаљу намере угроженом ContentProvider-у.
  • Можете и да подесите атрибут android:permission на permission са вредношћу android:protectionLevel=“signature” да бисте спречили да апликације које напишу други програмери шаљу намере угроженом ContentProvider-у. 

2. Ако ContentProvider мора да буде видљив другим апликацијама:

Морате на исправан начин да се побринете да апликација не враћа неочекиване датотеке због уноса у openFile-у који садрже знакове приступа путањи. То можете да урадите тако што ћете проверити канонску путању датотеке. На пример:

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

Упозорења: Имајте у виду да позивање getLastPathSegment-а на URI параметру није безбедно. Злонамерна апликација може да достави кодирану URI путању као што је %2F..%2F..path%2Fto%2Fsecret.txt тако да ће резултат getLastPathSegment-а бити /../../path/to/secret.txt. На пример, следећа примена је и даље подложна нападу.

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

Ту смо да помогнемо

Ако имате техничких питања у вези са пропустом, можете да их поставите на Stack Overflow помоћу ознаке „android-security“. Да бисте разјаснили кораке које треба да предузмете да бисте решили овај проблем, можете да контактирате тим подршке за програмере.

false
Главни мени
4504042748866379172
true
Центар за помоћ за претрагу
true
true
true
true
true
5016068
false
false