OWASP-Kategorie: MASVS-STORAGE: Speicher
Übersicht
Eine falsch konfigurierte FileProvider
kann dazu führen, dass Dateien und Verzeichnisse versehentlich für Angreifer freigegeben werden. Je nach Konfiguration kann ein Angreifer Daten aus diesen freigegebenen Dateien lesen oder in diese schreiben. Dies kann wiederum zur Ausschleusung vertraulicher Informationen oder im schlimmsten Fall zur Ausführung beliebigen Codes führen. Beispielsweise könnte eine Anwendung mit <root-path>
in der Konfiguration es einem Angreifer ermöglichen, auf in Datenbanken gespeicherte vertrauliche Informationen zuzugreifen oder die nativen Bibliotheken der Anwendung zu überschreiben, was zur Ausführung beliebigen Codes führen kann.
Positiv beeinflussen
Die Auswirkungen variieren je nach Konfiguration und Dateiinhalt, führen aber in der Regel zu Datenlecks (beim Lesen) oder zum Überschreiben von Dateien (beim Schreiben).
Abhilfemaßnahmen
Verwenden Sie in der Konfiguration nicht das Pfadelement <root-path>.
<root-path>
entspricht dem Stammverzeichnis des Geräts (/
). Wenn Sie dies in der Konfiguration zulassen, erhalten Sie beliebigen Zugriff auf Dateien und Ordner, einschließlich der Sandbox und des /sdcard
-Verzeichnisses der App. Dies bietet Angreifern eine sehr große Angriffsfläche.
Bereiche mit schmalen Pfaden teilen
Geben Sie in der Pfadkonfigurationsdatei keinen zu großen Pfadbereich wie .
oder /
an. Das kann dazu führen, dass versehentlich vertrauliche Dateien freigegeben werden. Geben Sie nur einen begrenzten Pfadbereich frei und achten Sie darauf, dass sich nur Dateien, die Sie freigeben möchten, unter diesem Pfad befinden. So wird verhindert, dass vertrauliche Dateien versehentlich freigegeben werden.
Eine typische Konfigurationsdatei mit sichereren Einstellungen könnte so aussehen:
XML
<paths>
<files-path name="images" path="images/" />
<files-path name="docs" path="docs" />
<cache-path name="cache" path="net-export/" />
</paths>
Externe URIs prüfen und validieren
Validieren Sie die externen URIs (mit einem content
-Schema) und achten Sie darauf, dass sie nicht auf die lokalen Dateien Ihrer Anwendung verweisen. So wird verhindert, dass versehentlich Informationen weitergegeben werden.
Mindestzugriffsberechtigungen gewähren
Eine content URI
kann sowohl Lese- als auch Schreibberechtigungen haben. Achten Sie darauf, dass nur die minimal erforderliche Zugriffsberechtigung gewährt wird.
Wenn beispielsweise nur die Leseberechtigung erforderlich ist, gewähren Sie explizit nur FLAG_GRANT_READ_URI_PERMISSION
.
Vermeiden Sie die Verwendung von <external-path> zum Speichern oder Freigeben vertraulicher Informationen
Vertrauliche Daten wie personenidentifizierbare Informationen (PII) sollten nicht außerhalb des Anwendungscontainers oder des Speichers für Anmeldedaten des Systems gespeichert werden. Verwenden Sie das Element<external-path>
daher nur, wenn Sie ausdrücklich bestätigt haben, dass die gespeicherten/freigegebenen Informationen nicht vertraulich sind.