不當對 FileProvider 揭露目錄

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 配置),確保這些 URI 未指向應用程式的本機檔案。這麼做可以防止意外洩漏資訊。

授予最低存取權限

content URI 可以同時具有讀取和寫入權限,請務必只授予最低必要權限。比如,如果「只有」讀取權限是必要權限,就只明確授予 FLAG_GRANT_READ_URI_PERMISSION

避免使用 <external-path> 儲存/分享機密資訊

個人識別資訊 (PII) 之類的機密資料不應儲存在應用程式容器和系統憑證儲存空間之外的地方,因此,除非您確認儲存/分享的資訊不是機密資訊,否則請勿使用 <external-path> 元素。

資源