Peningkatan Keamanan dan Privasi di Android 10

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:

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> untuk ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION , sistem secara otomatis menambahkan elemen <uses-permission> untuk ACCESS_BACKGROUND_LOCATION selama instalasi.
  • Jika aplikasi Anda meminta ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION , sistem secara otomatis menambahkan ACCESS_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 locationlayanan latar depan .
    Untuk mendeklarasikan jenis layanan latar depan untuk layanan di aplikasi Anda, setel targetSdkVersion atau compileSdkVersion aplikasi Anda ke 29 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:

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.

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 izin READ_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: