Mengekspos Direktori dengan Tidak Benar ke FileProvider

Kategori OWASP: MASVS-STORAGE: Storage

Ringkasan

FileProvider yang tidak dikonfigurasi dengan benar dapat secara tidak sengaja mengekspos file dan direktori kepada penyerang. Bergantung pada konfigurasinya, penyerang dapat membaca atau menulis file yang terekspos ini, yang pada akhirnya dapat menyebabkan pemindahan informasi sensitif secara tidak sah atau, dalam kasus terburuk, eksekusi kode arbitrer. Misalnya, aplikasi dengan <root-path> yang ditetapkan dalam konfigurasi dapat memungkinkan penyerang mengakses informasi sensitif yang tersimpan dalam database atau menimpa library native aplikasi, yang menyebabkan eksekusi kode arbitrer.

Dampak

Dampaknya dapat bervariasi bergantung pada konfigurasi dan konten file, tetapi umumnya menyebabkan kebocoran data (saat membaca) atau menimpa file (saat menulis).

Mitigasi

Jangan gunakan elemen jalur <root-path> dalam konfigurasi

<root-path> sesuai dengan direktori utama perangkat (/). Mengizinkan hal ini dalam konfigurasi akan memberikan akses arbitrer ke file dan folder, termasuk sandbox aplikasi dan direktori /sdcard, yang menawarkan permukaan serangan yang sangat luas untuk diserang penyerang.

Membagikan rentang jalur yang sempit

Di file konfigurasi jalur, hindari membagikan rentang jalur yang luas seperti . atau /. Hal ini dapat mengekspos file sensitif secara tidak sengaja. Hanya bagikan rentang jalur yang terbatas/lebih sempit dan pastikan hanya file yang ingin Anda bagikan yang berada di jalur ini. Tindakan ini akan mencegah file sensitif terekspos secara tidak sengaja.

File konfigurasi standar dengan setelan yang lebih aman terlihat seperti ini:

Xml

<paths>
    <files-path name="images" path="images/" />
    <files-path name="docs" path="docs" />
    <cache-path name="cache" path="net-export/" />
</paths>

Memeriksa dan memvalidasi URI eksternal

Validasi URI eksternal (menggunakan skema content) dan pastikan URI tersebut tidak mengarah ke file lokal aplikasi Anda. Hal ini untuk mencegah kebocoran informasi yang tidak disengaja.

Memberikan izin akses minimum

content URI dapat memiliki izin akses baca dan tulis. Pastikan hanya berikan izin akses minimum yang diperlukan. Misalnya, jika hanya memerlukan izin baca, hanya berikan FLAG_GRANT_READ_URI_PERMISSION secara eksplisit.

Menghindari penggunaan <external-path> untuk menyimpan/membagikan informasi sensitif

Data sensitif, seperti informasi identitas pribadi (PII), tidak boleh disimpan di luar penampung aplikasi atau fasilitas penyimpanan kredensial sistem. Oleh karena itu, hindari penggunaan elemen <external-path>, kecuali jika Anda secara eksplisit telah memverifikasi bahwa informasi yang disimpan/dibagikan tidak sensitif.

Referensi