Категория 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 ) и убедитесь, что они не указывают на локальные файлы вашего приложения. Это предотвратит непреднамеренную утечку информации.
Предоставьте минимальные права доступа.
A content URI can have both read and write access permissions. Ensure only the minimum required access permission is granted. For example, if only read permission is required, then explicitly grant only FLAG_GRANT_READ_URI_PERMISSION .
Избегайте использования <внешнего пути> для хранения/передачи конфиденциальной информации.
Конфиденциальные данные, такие как персональные данные, не следует хранить вне контейнера приложения или системных хранилищ учетных данных. Поэтому избегайте использования элемента <external-path> , если вы явно не убедились, что хранимая/передаваемая информация не является конфиденциальной.