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:
- Untuk Android versi 12 (API level 31) dan yang lebih tinggi, tambahkan
atribut
android:dataExtractionRules
ke elemen<application>
dalamAndroidManifest.xml
: - xml
xml <application android:name="com.example.foo" android:dataExtractionRules="@xml/backup_rules_extraction"> … </application>
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>
dalamAndroidManifest.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
- Deskripsi atribut allowBackup
- Enkripsi Berbasis File
- Perubahan perilaku transfer D2D
- Mencadangkan data pengguna dengan Pencadangan Otomatis
- Mencadangkan key-value pair dengan Android Backup Service
- Mengontrol pencadangan di Android 12 atau yang lebih baru
- Mengontrol pencadangan di Android 11 dan yang lebih lama
- Memahami PII dalam kontrak dan kebijakan Google
- Menguji pencadangan dan pemulihan
- Kriptografi
- Sistem Android Keystore
- ADB
- Opsi developer