Nicht ordnungsgemäß offengelegte Verzeichnisse gegenüber FileProvider

OWASP-Kategorie: MASVS-STORAGE: Storage

Übersicht

Bei einer falsch konfigurierten FileProvider-Instanz können Dateien und Verzeichnisse versehentlich für einen Angreifer offengelegt werden. Je nach Konfiguration kann ein Angreifer diese offengelegten Dateien lesen oder in sie schreiben. Das kann wiederum zum Exfiltrieren vertraulicher Informationen oder im schlimmsten Fall zur Ausführung beliebigen Codes führen. Wenn in der Konfiguration einer Anwendung beispielsweise <root-path> festgelegt ist, kann ein Angreifer auf vertrauliche Informationen zugreifen, die in Datenbanken gespeichert sind, oder die nativen Bibliotheken der Anwendung überschreiben, was zur Ausführung beliebigen Codes führt.

Auswirkungen

Die Auswirkungen variieren je nach Konfiguration und Dateiinhalten, führen aber im Allgemeinen zu Datenlecks (beim Lesen) oder zum Überschreiben von Dateien (beim Schreiben).

Gegenmaßnahmen

Das Pfadelement `<root-path>` nicht in der Konfiguration verwenden

<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 der App und des Verzeichnisses /sdcard. Das bietet einem Angreifer eine sehr breite Angriffsfläche.

Eingeschränkte Pfadbereiche freigeben

Vermeiden Sie es, in der Pfadkonfigurationsdatei einen breiten Pfadbereich wie . oder / freizugeben. Das kann dazu führen, dass vertrauliche Dateien versehentlich offengelegt werden. Geben Sie nur einen eingeschränkten/engeren Pfadbereich frei und achten Sie darauf, dass sich unter diesem Pfad nur Dateien befinden, die Sie freigeben möchten. So wird verhindert, dass vertrauliche Dateien versehentlich offengelegt 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 prüfen Sie, ob sie nicht auf die lokalen Dateien Ihrer Anwendung verweisen. So wird ein versehentliches Informationsleck verhindert.

Mindestzugriffsberechtigungen gewähren

Ein content URI kann sowohl Lese- als auch Schreibzugriffsberechtigungen haben. Achten Sie darauf, dass nur die mindestens erforderliche Zugriffsberechtigung gewährt wird. Wenn beispielsweise nur die Leseberechtigung erforderlich ist, gewähren Sie explizit nur FLAG_GRANT_READ_URI_PERMISSION.

Verwendung von `<external-path>` zum Speichern/Freigeben vertraulicher Informationen vermeiden

Vertrauliche Daten wie personenbezogene Daten sollten nicht außerhalb des Anwendungscontainers oder der Speichereinrichtungen für Systemanmeldedaten gespeichert werden. Vermeiden Sie daher die Verwendung des Elements <external-path>, es sei denn, Sie haben ausdrücklich bestätigt, dass die gespeicherten/freigegebenen Informationen nicht vertraulich sind.

Ressourcen