Setiap rilis Android menyertakan lusinan peningkatan keamanan untuk melindungi pengguna. Android 10 menyertakan beberapa peningkatan keamanan dan privasi. Lihat catatan rilis Android 10 untuk daftar lengkap perubahan di Android 10.
Keamanan
Bounds Sanitizer
Android 10 menyebarkan BoundsSanitizer (BoundSan) di Bluetooth dan codec. BoundSan menggunakan pembersih batas UBSan. Mitigasi ini diaktifkan pada tingkat per-modul. Ini membantu menjaga komponen penting Android tetap aman dan tidak boleh dinonaktifkan. BoundSan diaktifkan di codec berikut:
-
libFLAC
-
libavcdec
-
libavcenc
-
libhevcdec
-
libmpeg2
-
libopus
-
libvpx
-
libspeexresampler
-
libvorbisidec
-
libaac
-
libxaac
Eksekusi hanya memori
Secara default, bagian kode yang dapat dieksekusi untuk binari sistem AArch64 ditandai hanya-eksekusi (tidak dapat dibaca) sebagai mitigasi pengerasan terhadap serangan penggunaan kembali kode yang tepat waktu. Kode yang menggabungkan data dan kode bersama-sama dan kode yang dengan sengaja memeriksa bagian-bagian ini (tanpa terlebih dahulu memetakan kembali segmen memori agar dapat dibaca) tidak lagi berfungsi. Aplikasi dengan SDK target Android 10 (API level 29 atau lebih tinggi) akan terpengaruh jika aplikasi mencoba membaca bagian kode dari pustaka sistem yang diaktifkan hanya-eksekusi (XOM) di memori tanpa terlebih dahulu menandai bagian tersebut sebagai dapat dibaca.
Akses yang diperluas
Agen tepercaya, mekanisme dasar yang digunakan oleh mekanisme autentikasi tersier seperti Smart Lock, hanya dapat memperpanjang buka kunci di Android 10. Agen tepercaya tidak lagi dapat membuka kunci perangkat yang terkunci dan hanya dapat membuat perangkat tetap terbuka kuncinya selama maksimal empat jam.
Otentikasi wajah
Otentikasi wajah memungkinkan pengguna untuk membuka kunci perangkat mereka hanya dengan melihat bagian depan perangkat mereka. Android 10 menambahkan dukungan untuk tumpukan autentikasi wajah baru yang dapat memproses bingkai kamera dengan aman, menjaga keamanan dan privasi selama autentikasi wajah di perangkat keras yang didukung. Android 10 juga menyediakan cara mudah untuk implementasi yang mematuhi keamanan guna mengaktifkan integrasi aplikasi untuk transaksi seperti perbankan online atau layanan lainnya.
Sanitasi Luapan Bilangan Bulat
Android 10 mengaktifkan Integer Overflow Sanitization (IntSan) dalam codec perangkat lunak. Pastikan bahwa kinerja pemutaran dapat diterima untuk semua codec yang tidak didukung di perangkat keras perangkat. IntSan diaktifkan di codec berikut:
-
libFLAC
-
libavcdec
-
libavcenc
-
libhevcdec
-
libmpeg2
-
libopus
-
libvpx
-
libspeexresampler
-
libvorbisidec
Komponen sistem modular
Android 10 memodulasi beberapa komponen sistem Android dan memungkinkannya diperbarui di luar siklus rilis Android normal. Beberapa modul antara lain:
- Waktu Proses Android
- Konskripsi
- Pemecah DNS
- DokumenUI
- Layanan Ekst
- Media
- ModulMetadata
- Jaringan
- Pengontrol Izin
- Data Zona Waktu
OEMCrypto
Android 10 menggunakan OEMCrypto API versi 15.
Scudo
Scudo adalah pengalokasi memori mode pengguna dinamis yang dirancang agar lebih tahan terhadap kerentanan terkait tumpukan. Ini menyediakan alokasi C standar dan primitif deallokasi, serta primitif C++.
ShadowCallStack
ShadowCallStack (SCS)
adalah mode instrumentasi LLVM yang melindungi terhadap alamat pengirim yang ditimpa (seperti stack buffer overflows) dengan menyimpan alamat pengembalian fungsi ke instance ShadowCallStack
yang dialokasikan secara terpisah dalam prolog fungsi fungsi nonleaf dan memuat alamat pengirim dari instance ShadowCallStack
di epilog fungsi.
WPA3 dan Wi-Fi Ditingkatkan Terbuka
Android 10 menambahkan dukungan untuk standar keamanan Wi-Fi Protected Access 3 (WPA3) dan Wi-Fi Enhanced Open untuk memberikan privasi dan ketahanan yang lebih baik terhadap serangan yang diketahui.
Pribadi
Akses aplikasi saat menargetkan Android 9 atau lebih rendah
Jika aplikasi Anda berjalan di Android 10 atau lebih tinggi tetapi menargetkan Android 9 (API level 28) atau lebih rendah, platform akan menerapkan perilaku berikut:
- Jika aplikasi Anda mendeklarasikan elemen
<uses-permission>
untukACCESS_FINE_LOCATION
atauACCESS_COARSE_LOCATION
, sistem secara otomatis menambahkan elemen<uses-permission>
untukACCESS_BACKGROUND_LOCATION
selama instalasi. - Jika aplikasi Anda meminta
ACCESS_FINE_LOCATION
atauACCESS_COARSE_LOCATION
, sistem secara otomatis menambahkanACCESS_BACKGROUND_LOCATION
ke permintaan.
Batasan aktivitas latar belakang
Mulai Android 10, sistem membatasi aktivitas memulai dari latar belakang . Perubahan perilaku ini membantu meminimalkan gangguan bagi pengguna dan membuat pengguna lebih mengontrol apa yang ditampilkan di layar mereka. Selama aplikasi Anda memulai aktivitas sebagai akibat langsung dari interaksi pengguna, kemungkinan besar aplikasi Anda tidak terpengaruh oleh pembatasan ini.
Untuk mempelajari lebih lanjut tentang alternatif yang disarankan untuk memulai aktivitas dari latar belakang, lihat panduan tentang cara memberi tahu pengguna tentang peristiwa sensitif waktu di aplikasi Anda.
Metadata kamera
Android 10 mengubah luasnya informasi yang dikembalikan oleh metode getCameraCharacteristics()
secara default. Secara khusus, aplikasi Anda harus memiliki izin CAMERA
untuk mengakses metadata khusus perangkat yang berpotensi yang disertakan dalam nilai kembalian metode ini.
Untuk mempelajari lebih lanjut tentang perubahan ini, lihat bagian tentang bidang kamera yang memerlukan izin .
Data papan klip
Kecuali jika aplikasi Anda adalah editor metode input (IME) default atau aplikasi yang saat ini memiliki fokus, aplikasi Anda tidak dapat mengakses data clipboard di Android 10 atau lebih tinggi.
Lokasi perangkat
Untuk mendukung kontrol tambahan yang dimiliki pengguna atas akses aplikasi ke informasi lokasi, Android 10 memperkenalkan izin ACCESS_BACKGROUND_LOCATION
.
Tidak seperti izin ACCESS_FINE_LOCATION
dan ACCESS_COARSE_LOCATION
, izin ACCESS_BACKGROUND_LOCATION
hanya memengaruhi akses aplikasi ke lokasi saat aplikasi berjalan di latar belakang. Aplikasi dianggap mengakses lokasi di latar belakang kecuali salah satu kondisi berikut terpenuhi:
- Aktivitas milik aplikasi terlihat.
- Aplikasi menjalankan layanan latar depan yang telah mendeklarasikan jenis
location
layanan latar depan .
Untuk mendeklarasikan jenis layanan latar depan untuk layanan di aplikasi Anda, seteltargetSdkVersion
ataucompileSdkVersion
aplikasi Anda ke29
atau lebih tinggi. Pelajari lebih lanjut tentang bagaimana layanan latar depan dapat melanjutkan tindakan yang dimulai pengguna yang memerlukan akses ke lokasi.
Penyimpanan luar
Secara default, aplikasi yang menargetkan Android 10 dan lebih tinggi diberikan akses terbatas ke penyimpanan eksternal , atau penyimpanan terbatas . Aplikasi tersebut dapat melihat jenis file berikut dalam perangkat penyimpanan eksternal tanpa perlu meminta izin pengguna terkait penyimpanan apa pun:
- File dalam direktori khusus aplikasi, diakses menggunakan
getExternalFilesDir()
. - Foto, video, dan klip audio yang dibuat aplikasi dari penyimpanan media .
Untuk mempelajari lebih lanjut tentang penyimpanan terbatas, serta cara berbagi, mengakses, dan memodifikasi file yang disimpan di perangkat penyimpanan eksternal, lihat panduan tentang cara mengelola file di penyimpanan eksternal dan mengakses serta memodifikasi file media .
Pengacakan alamat MAC
Pada perangkat yang menjalankan Android 10 atau lebih tinggi, sistem mentransmisikan alamat MAC acak secara default.
Jika aplikasi Anda menangani kasus penggunaan perusahaan , platform menyediakan API untuk beberapa operasi yang terkait dengan alamat MAC:
- Dapatkan alamat MAC acak : Aplikasi pemilik perangkat dan aplikasi pemilik profil dapat mengambil alamat MAC acak yang ditetapkan ke jaringan tertentu dengan memanggil
getRandomizedMacAddress()
. - Dapatkan alamat MAC pabrik yang sebenarnya: Aplikasi pemilik perangkat dapat mengambil alamat MAC perangkat keras yang sebenarnya dengan memanggil
getWifiMacAddress()
. Metode ini berguna untuk melacak armada perangkat.
Pengidentifikasi perangkat yang tidak dapat disetel ulang
Mulai Android 10, aplikasi harus memiliki izin istimewa READ_PRIVILEGED_PHONE_STATE
untuk mengakses pengenal perangkat yang tidak dapat disetel ulang, yang mencakup IMEI dan nomor seri.
-
Build
-
TelephonyManager
Jika aplikasi Anda tidak memiliki izin dan Anda tetap mencoba meminta informasi tentang pengenal yang tidak dapat disetel ulang, respons platform bervariasi berdasarkan versi SDK target:
- Jika aplikasi Anda menargetkan Android 10 atau lebih tinggi,
SecurityException
akan terjadi. - Jika aplikasi Anda menargetkan Android 9 (API level 28) atau lebih rendah, metode akan mengembalikan data
null
atau placeholder jika aplikasi memiliki izinREAD_PHONE_STATE
. Jika tidak,SecurityException
terjadi.
Pengenalan aktivitas fisik
Android 10 memperkenalkan izin waktu proses android.permission.ACTIVITY_RECOGNITION
untuk aplikasi yang perlu mendeteksi jumlah langkah pengguna atau mengklasifikasikan aktivitas fisik pengguna, seperti berjalan kaki, bersepeda, atau bergerak di dalam kendaraan. Ini dirancang untuk memberikan visibilitas kepada pengguna tentang bagaimana data sensor perangkat digunakan di Setelan.
Beberapa library dalam layanan Google Play, seperti Activity Recognition API dan Google Fit API , tidak memberikan hasil kecuali pengguna telah memberikan izin ini kepada aplikasi Anda.
Satu-satunya sensor bawaan pada perangkat yang mengharuskan Anda untuk menyatakan izin ini adalah sensor penghitung langkah dan pendeteksi langkah .
Jika aplikasi Anda menargetkan Android 9 (API level 28) atau lebih rendah, sistem akan otomatis memberikan izin android.permission.ACTIVITY_RECOGNITION
ke aplikasi Anda, sesuai kebutuhan, jika aplikasi Anda memenuhi setiap ketentuan berikut:
- File manifes menyertakan izin
com.google.android.gms.permission.ACTIVITY_RECOGNITION
. - File manifes tidak menyertakan izin
android.permission.ACTIVITY_RECOGNITION
.
Jika sistem-otomatis memberikan izin android.permission.ACTIVITY_RECOGNITION
, aplikasi Anda akan mempertahankan izin tersebut setelah Anda memperbarui aplikasi untuk menargetkan Android 10. Namun, pengguna dapat mencabut izin ini kapan saja di setelan sistem.
/proc/net batasan sistem file
Pada perangkat yang menjalankan Android 10 atau lebih tinggi, aplikasi tidak dapat mengakses /proc/net
, yang menyertakan informasi tentang status jaringan perangkat. Aplikasi yang memerlukan akses ke informasi ini, seperti VPN, harus menggunakan kelas NetworkStatsManager
atau ConnectivityManager
.
Grup izin dihapus dari UI
Pada Android 10, aplikasi tidak dapat mencari cara izin dikelompokkan di UI.
Penghapusan afinitas kontak
Mulai Android 10, platform tidak melacak informasi afinitas kontak. Akibatnya, jika aplikasi Anda melakukan penelusuran pada kontak pengguna, hasilnya tidak diurutkan berdasarkan frekuensi interaksi.
Panduan tentang ContactsProvider
berisi pemberitahuan yang menjelaskan kolom dan metode tertentu yang sudah usang di semua perangkat mulai Android 10.
Akses terbatas ke konten layar
Untuk melindungi konten layar pengguna, Android 10 mencegah akses diam ke konten layar perangkat dengan mengubah cakupan READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
, dan CAPTURE_SECURE_VIDEO_OUTPUT
. Pada Android 10, izin ini hanya untuk akses tanda tangan .
Aplikasi yang perlu mengakses konten layar perangkat harus menggunakan MediaProjection
API, yang menampilkan perintah yang meminta pengguna untuk memberikan persetujuan.
Nomor seri perangkat USB
Jika aplikasi Anda menargetkan Android 10 atau lebih tinggi, aplikasi Anda tidak dapat membaca nomor seri hingga pengguna memberikan izin kepada aplikasi Anda untuk mengakses perangkat USB atau aksesori.
Untuk mempelajari lebih lanjut tentang bekerja dengan perangkat USB, lihat panduan tentang cara mengonfigurasi host USB .
Wifi
Aplikasi yang menargetkan Android 10 atau lebih tinggi tidak dapat mengaktifkan atau menonaktifkan Wi-Fi. Metode WifiManager.setWifiEnabled()
selalu mengembalikan false
.
Jika Anda perlu meminta pengguna untuk mengaktifkan dan menonaktifkan Wi-Fi, gunakan panel setelan .
Pembatasan akses langsung ke jaringan Wi-Fi yang dikonfigurasi
Untuk melindungi privasi pengguna, konfigurasi manual daftar jaringan Wi-Fi dibatasi untuk aplikasi sistem dan pengontrol kebijakan perangkat (DPC) . DPC tertentu dapat berupa pemilik perangkat atau pemilik profil.
Jika aplikasi Anda menargetkan Android 10 atau lebih tinggi, dan itu bukan aplikasi sistem atau DPC, metode berikut tidak akan mengembalikan data yang berguna:
- Metode
getConfiguredNetworks()
selalu mengembalikan daftar kosong. - Setiap metode operasi jaringan yang mengembalikan nilai
addNetwork()
danupdateNetwork()
mengembalikan -1. - Setiap operasi jaringan yang mengembalikan nilai
removeNetwork()
,reassociate()
,enableNetwork()
,disableNetwork()
,reconnect()
, dandisconnect()
—selalu mengembalikanfalse
.