Rekomendasi keamanan untuk pencadangan

Kategori OWASP: MASVS-CODE: Kualitas Kode

Ringkasan

Pencadangan aplikasi bertujuan untuk mempertahankan data pengguna sehingga nantinya dapat dipulihkan ke perangkat baru atau jika terjadi kehilangan data. Rekomendasi keamanan yang ada terkait pencadangan aplikasi memiliki perbedaan, antara versi Android dan produsen perangkat. Tema umum adalah bahwa rekomendasi ini bertujuan untuk memastikan tidak ada data sensitif yang bocor.

Sistem Pencadangan Android Standar memberikan solusi yang paling aman, andal, dan termudah bagi aplikasi untuk mencadangkan datanya ke cloud atau mentransfer data ke perangkat baru melalui Pencadangan Otomatis (yang diaktifkan secara default, tidak memerlukan upaya untuk diterapkan dan juga dapat diperluas) serta pencadangan nilai kunci. Sebaiknya gunakan solusi ini karena solusi ini menyimpan data cadangan yang dihasilkan di direktori yang tidak dapat diakses oleh aplikasi 3p lainnya, serta memfasilitasi enkripsi dalam penyimpanan, enkripsi saat transit, dan konfigurasi yang memungkinkan pengecualian data sensitif dari cadangan.

Jika aplikasi menerapkan solusi pencadangan yang tidak bergantung pada sistem Pencadangan Android Standar, hal ini dapat meningkatkan kemungkinan terjadinya kesalahan yang menyebabkan kebocoran data sensitif. Contoh solusi pencadangan non-standar yang mengekspos data pengguna ke kebocoran mencakup aplikasi yang menawarkan kemampuan "ekspor" atau "pencadangan" yang membuat salinan data aplikasi di direktori yang dapat dibaca oleh aplikasi lain, dan karenanya rentan terhadap kebocoran (baik secara langsung maupun melalui kerentanan lainnya).

Dampak

Mengikuti rekomendasi keamanan saat menyiapkan pencadangan aplikasi akan mencegah potensi kebocoran data sensitif yang mungkin disertakan dalam pencadangan. Bergantung pada data sebenarnya dan niat penyerang, kebocoran data sensitif dapat menyebabkan pengungkapan informasi, peniruan identitas pengguna, dan kerugian finansial.

Mitigasi

Menggunakan sistem Pencadangan Android Standar

Sistem Android Backup Standar selalu mengenkripsi data cadangan saat dalam pengiriman dan dalam penyimpanan. Enkripsi ini diterapkan terlepas dari versi Android yang digunakan dan apakah perangkat Anda memiliki layar kunci. Mulai dari Android 9, jika perangkat telah menyetel layar kunci, data cadangan tidak hanya dienkripsi, tetapi dienkripsi dengan kunci yang tidak diketahui Google (rahasia layar kunci melindungi kunci enkripsi, sehingga mengaktifkan enkripsi end-to-end).

Secara umum, jangan lupa untuk mengikuti penyimpanan data dan pedoman keamanan.

Jika cadangan Anda menyertakan data yang sangat sensitif, sebaiknya kecualikan data ini atau, jika Anda tidak dapat mengecualikannya, minta enkripsi end-to-end seperti yang dijelaskan di bagian berikut.

Mengecualikan data dari pencadangan

Anda dapat menentukan data yang akan dikecualikan dari pencadangan menggunakan file aturan, yang secara konvensional disebut backup_rules.xml dan ditempatkan di folder aplikasi res/xml. Ada beberapa perbedaan dalam cara aturan pencadangan dikonfigurasi, bergantung pada versi Android yang digunakan:

Kemudian, konfigurasi file backup_rules.xml sesuai dengan persyaratan keamanan dan persistensi data aplikasi, dengan mengikuti format konfigurasi yang diperbarui.

Format yang diperlukan untuk konfigurasi file backup_rules.xml memungkinkan developer menentukan aturan pencadangan kustom untuk transfer Cloud dan Perangkat ke Perangkat (D2D). Jika atribut <device-transfer> tidak ditetapkan, semua data aplikasi akan ditransfer selama migrasi D2D. Penting untuk menyoroti bahwa meskipun aplikasi target menargetkan Android 12 atau yang lebih tinggi, file terpisah dengan kumpulan aturan pencadangan tambahan harus selalu ditentukan untuk perangkat yang menjalankan Android 11 (API level 30) atau yang lebih rendah.

  • Untuk Android versi 11 dan yang lebih lama, tambahkan atribut android:fullBackupContent ke elemen <application> dalam AndroidManifest.xml:
  • xml xml <application android:name="com.example.foo" android:fullBackupContent="@xml/backup_rules_full"> … </application>

Selanjutnya, konfigurasi file backup_rules.xml sesuai dengan persyaratan keamanan dan persistensi data aplikasi menggunakan sintaksis yang dilaporkan dalam artikel mencadangkan data pengguna.

Mewajibkan enkripsi end-to-end

Jika Anda tidak dapat mengecualikan data sensitif dari cadangan, sebaiknya syaratkan enkripsi end-to-end. Artinya, hanya izinkan pencadangan di Android 9 atau yang lebih baru dan hanya saat layar kunci disetel. Anda dapat melakukannya dengan menggunakan flag requireFlags="clientSideEncryption", yang perlu diganti namanya menjadi disableIfNoEncryptionCapabilities dan ditetapkan ke true mulai dari Android 12.

Jika Anda tidak dapat menggunakan sistem Pencadangan Android Standar

Jika Anda tidak dapat menggunakan sistem Pencadangan Android Standar, penyimpanan data cadangan dengan aman serta menentukan data yang akan dikecualikan dari cadangan akan lebih kompleks. Hal ini perlu ditentukan di tingkat kode dan akibatnya rawan error, sehingga berisiko kebocoran data. Dalam skenario ini, sebaiknya uji penerapan Anda secara rutin untuk memastikan tidak ada perubahan pada perilaku pencadangan yang diharapkan.

Referensi