Nicht ordnungsgemäß offengelegte Verzeichnisse gegenüber FileProvider

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.

Ressourcen