Неправильно предоставленные каталоги FileProvider

Категория OWASP: MASVS-STORAGE: Хранилище

Обзор

Неправильно настроенный FileProvider может непреднамеренно предоставить доступ к файлам и каталогам злоумышленнику. В зависимости от конфигурации злоумышленник может читать или записывать в эти открытые файлы, что, в свою очередь, может привести к краже конфиденциальной информации или, в худшем случае, к выполнению произвольного кода. Например, приложение с установленным в конфигурации <root-path> может позволить злоумышленнику получить доступ к конфиденциальной информации, хранящейся в базах данных, или перезаписать собственные библиотеки приложения, что приведет к выполнению произвольного кода.

Влияние

Воздействие варьируется в зависимости от конфигурации и содержимого файла, но обычно приводит к утечке данных (при чтении) или перезаписи (при записи) файлов.

Смягчения

Не используйте элемент пути <root-path> в конфигурации.

<root-path> соответствует корневому каталогу устройства ( / ). Разрешение этого в конфигурации обеспечивает произвольный доступ к файлам и папкам, включая песочницу приложения и каталог /sdcard , что открывает злоумышленнику очень широкую поверхность атаки.

Делитесь узкими диапазонами путей

В файле конфигурации пути избегайте совместного использования широкого диапазона путей, например . или / . Это может привести к ошибочному раскрытию конфиденциальных файлов. Делитесь только ограниченным/более узким диапазоном путей и убедитесь, что по этому пути находятся только файлы, которыми вы хотите поделиться. Это предотвратит случайное раскрытие конфиденциальных файлов.

Типичный файл конфигурации с более безопасными настройками может выглядеть так:

XML

<paths>
    <files-path name="images" path="images/" />
    <files-path name="docs" path="docs" />
    <cache-path name="cache" path="net-export/" />
</paths>

Проверьте и подтвердите внешние URI.

Проверьте внешние URI (используя схему content ) и убедитесь, что они не указывают на локальные файлы вашего приложения. Это предотвращает любую непреднамеренную утечку информации.

Предоставьте минимальные права доступа

content URI может иметь разрешения на чтение и запись. Убедитесь, что предоставлено только минимально необходимое разрешение доступа. Например, если требуется только разрешение на чтение, явно предоставьте только FLAG_GRANT_READ_URI_PERMISSION .

Избегайте использования <external-path> для хранения/передачи конфиденциальной информации.

Конфиденциальные данные, такие как личная информация (PII), не должны храниться за пределами контейнера приложения или хранилища системных учетных данных. Таким образом, избегайте использования элемента <external-path> , если только вы явно не подтвердили, что хранимая/передаваемая информация не является конфиденциальной.

Ресурсы