Kategoria OWASP: MASVS-STORAGE: Storage
Przegląd
Nieprawidłowo skonfigurowany FileProvider może nieumyślnie udostępnić pliki i katalogi osobie atakującej. W zależności od konfiguracji osoba przeprowadzająca atak może odczytywać lub zapisywać dane w tych udostępnionych plikach, co może prowadzić do wycieku informacji poufnych lub, w najgorszym przypadku, do wykonania dowolnego kodu. Na przykład aplikacja z ustawieniem <root-path> w konfiguracji może umożliwić osobie przeprowadzającej atak dostęp do informacji poufnych przechowywanych w bazach danych lub zastąpienie natywnych bibliotek aplikacji, co prowadzi do wykonania dowolnego kodu.
Wpływ
Wpływ zależy od konfiguracji i zawartości pliku, ale zwykle prowadzi do wycieku danych (podczas odczytu) lub nadpisania plików (podczas zapisu).
Środki ograniczające ryzyko
Nie używaj w konfiguracji elementu ścieżki <root-path>.
<root-path> odpowiada katalogowi głównemu urządzenia (/). Zezwolenie na to w konfiguracji zapewnia dowolny dostęp do plików i folderów, w tym do piaskownicy aplikacji i katalogu /sdcard, co daje atakującemu bardzo szerokie pole do działania.
Udostępnianie wąskich zakresów ścieżek
W pliku konfiguracji ścieżki unikaj udostępniania szerokiego zakresu ścieżek, np. . lub /. Może to spowodować przypadkowe ujawnienie poufnych plików. Udostępniaj tylko ograniczony/węższy zakres ścieżek i upewnij się, że w tej ścieżce znajdują się tylko pliki, które chcesz udostępnić. Zapobiegnie to przypadkowemu udostępnieniu poufnych plików.
Typowy plik konfiguracyjny z bezpieczniejszymi ustawieniami może wyglądać tak:
XML
<paths>
<files-path name="images" path="images/" />
<files-path name="docs" path="docs" />
<cache-path name="cache" path="net-export/" />
</paths>
Sprawdzanie i weryfikowanie zewnętrznych identyfikatorów URI
Sprawdź zewnętrzne identyfikatory URI (za pomocą schematu content) i upewnij się, że nie wskazują one lokalnych plików aplikacji. Zapobiega to przypadkowemu wyciekowi informacji.
Przyznawanie minimalnych uprawnień dostępu
content URI może mieć uprawnienia do odczytu i zapisu. Przyznawaj tylko minimalne wymagane uprawnienia dostępu.
Jeśli na przykład wymagane są tylko uprawnienia do odczytu, przyznaj tylko uprawnienia FLAG_GRANT_READ_URI_PERMISSION.
Unikaj używania <external-path> do przechowywania i udostępniania informacji poufnych.
Dane wrażliwe, takie jak informacje umożliwiające identyfikację (PII), nie powinny być przechowywane poza kontenerem aplikacji ani systemowym magazynem danych logowania. Dlatego unikaj używania elementu<external-path>, chyba że masz wyraźną pewność, że przechowywane lub udostępniane informacje nie są poufne.