Уразливий елемент обходу шляху

Ця інформація призначена для розробників додатків, які містять уразливий елемент обходу шляху.

Основна інформація

З 16 січня 2018 року в Google Play не публікуються додатки й оновлення, які містять уразливий елемент обходу шляху. Ознайомтеся зі сповіщенням у Play ConsoleПісля кінцевих термінів, указаних у Play Console, додатки з уразливими елементами може бути видалено з Google Play.

Що потрібно зробити​

  1. Увійдіть в обліковий запис Play Console і перейдіть у розділ "Сповіщення", щоб переглянути, які додатки уражено та які терміни вирішення цих проблем.
  2. Оновіть уражені додатки й усуньте вразливі елементи.
  3. Надішліть оновлені версії цих додатків.

Коли ви надішлете оновлені версії, ми знову перевіримо їх. Це може тривати кілька годин. Якщо додаток пройде перевірку та його буде опубліковано, виконувати додаткові дії не потрібно. Якщо додаток не пройде перевірку, його нову версію не буде опубліковано й ви отримаєте відповідне сповіщення електронною поштою.

Додаткова інформація

Застосування методу openFile в експортованих постачальниках ContentProviders може загрожувати безпеці, якщо вхідні параметри URI не перевіряються належним чином. Шкідливий додаток може вказувати змодельований шлях URI (наприклад, такий, що містить "/../"), щоб повертати об’єкт ParcelFileDescriptor для файлу поза визначеним каталогом. Так шкідливий додаток матиме доступ до будь-якого файлу, до якого має доступ ваш додаток.

Є два способи усунення вразливого елемента обходу шляху постачальника ContentProvider.

1. Якщо постачальнику ContentProvider не потрібно взаємодіяти з іншими додатками, виконайте вказані нижче дії.

  • Можна вказати значення атрибуту android:exported="false" у тезі <provider> відповідного постачальника ContentProvider у вашому файлі Manifest. Так інші додатки не зможуть надсилати наміри у відповідний постачальник 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, ParcelFileDescriptorMODE_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
Головне меню
9863062604142328581
true
Пошук у довідковому центрі
true
true
true
true
true
5016068
false
false