Google berkomitmen untuk memajukan ekuitas ras untuk komunitas kulit hitam. Lihat bagaimana.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Praktik Terbaik Keamanan Aplikasi

Bagian ini berisi rekomendasi untuk memastikan keamanan aplikasi di perangkat Android.

Ulasan kode sumber

Tinjauan kode sumber dapat mendeteksi berbagai masalah keamanan, termasuk yang diidentifikasi dalam dokumen ini. Android sangat mendorong peninjauan kode sumber manual dan otomatis.

  • Ikuti panduan keamanan komprehensif saat melakukan tinjauan untuk memastikan cakupan. Memanfaatkan standar internal atau eksternal yang relevan untuk memastikan ulasan yang konsisten dan lengkap.
  • Jalankan linter, seperti linter Android Studio , di semua kode aplikasi menggunakan Android SDK dan perbaiki masalah yang teridentifikasi.
  • Menganalisis kode asli menggunakan alat otomatis yang dapat mendeteksi masalah manajemen memori, seperti buffer overflows dan off-by-one error.
  • Sistem build Android mendukung banyak pembersih LLVM, seperti AddressSanitizer dan UndefinedBehaviorSanitizer , yang dapat digunakan untuk analisis runtime dari masalah yang berkaitan dengan memori. Dikombinasikan dengan fuzzing, didukung di Android melalui libFuzzer , pembersih dapat mengungkap kasus tepi yang tidak biasa yang memerlukan penyelidikan lebih lanjut.
  • Penilai keamanan yang berpengetahuan luas harus meninjau kode risiko yang lebih tinggi, seperti crypto, pemrosesan pembayaran, dan pemrosesan PII.

Pengujian otomatis

Pengujian otomatis dapat membantu mendeteksi berbagai masalah keamanan dan harus dilakukan secara teratur.

  • Jalankan versi terbaru CTS secara teratur selama proses pengembangan untuk mendeteksi masalah sejak dini dan mengurangi waktu untuk koreksi. Android menggunakan CTS sebagai bagian dari integrasi berkelanjutan dalam proses pembuatan otomatis kami, yang dibangun beberapa kali per hari.
  • Mengotomatiskan pengujian keamanan antarmuka, termasuk pengujian dengan input yang salah bentuk (pengujian fuzz). Sistem build Android mendukung libFuzzer untuk menulis tes fuzz.

Pemindaian kerentanan

Pemindaian kerentanan dapat membantu memastikan bahwa aplikasi yang diinstal sebelumnya bebas dari kerentanan keamanan yang diketahui. Deteksi lanjutan dapat mengurangi waktu dan biaya yang diperlukan untuk mengatasi kerentanan ini dan mencegah risiko bagi pengguna dan perangkat.

  • Pindai semua aplikasi yang telah diinstal sebelumnya menggunakan alat pemindaian kerentanan aplikasi yang diakui industri dan temukan kerentanan yang terdeteksi.

Aplikasi yang Berpotensi Berbahaya

Penting untuk memastikan bahwa aplikasi yang sudah diinstal pada perangkat Anda bukan Aplikasi yang Berpotensi Berbahaya (PHA). Anda bertanggung jawab atas perilaku semua aplikasi yang disertakan pada perangkat Anda. Sebelum peluncuran perangkat, pindai semua aplikasi yang dimuat sebelumnya untuk mengetahui kerentanannya.

Untuk informasi lebih lanjut tentang PHA dan bagaimana Google memeranginya di Play store, lihat dokumentasi pengembang Google Play Protect .

Instalasi dan izin aplikasi

Izin berlebihan untuk aplikasi yang sudah diinstal sebelumnya dapat menimbulkan risiko keamanan. Batasi aplikasi pra-instal hingga izin minimum yang diperlukan dan pastikan mereka tidak memiliki akses ke izin atau hak istimewa yang tidak perlu. Izin aplikasi dijelaskan dalam AndroidManifest.xml .

  • Jangan berikan izin atau hak istimewa yang tidak perlu untuk aplikasi yang sudah diinstal sebelumnya. Tinjau aplikasi dengan hak sistem sepenuhnya karena mereka mungkin memiliki izin yang sangat sensitif.
  • Pastikan bahwa semua izin yang diminta relevan dan diperlukan untuk fungsionalitas aplikasi spesifik itu.
  • Pastikan ada pengungkapan pengguna untuk semua aplikasi pra-instal yang menggunakan izin INSTALL_PACKAGES .
  • Pastikan bahwa pengembang secara kontrak berkewajiban untuk tidak menginstal aplikasi apa pun sebagai UID 0.
  • Mengevaluasi izin yang dinyatakan dalam manifes semua aplikasi yang akan diinstal melalui jaringan pengembang.
  • Pastikan bahwa pengembang berkewajiban secara kontrak untuk memindai semua URL unduh aplikasi pembaruan otomatis dan penginstal dengan API Penjelajahan Aman Google sebelum menyajikan aplikasi ke perangkat.

Penandatanganan aplikasi

Tanda tangan aplikasi memainkan peran penting dalam keamanan perangkat dan digunakan untuk pemeriksaan izin dan pembaruan perangkat lunak. Saat memilih kunci yang akan digunakan untuk menandatangani aplikasi, penting untuk mempertimbangkan apakah suatu aplikasi hanya akan tersedia di satu perangkat atau umum di beberapa perangkat.

  • Pastikan aplikasi tidak ditandatangani dengan kunci yang diketahui publik, seperti kunci pengembang AOSP.
  • Pastikan bahwa kunci yang digunakan untuk menandatangani aplikasi dikelola dengan cara yang konsisten dengan praktik standar industri untuk menangani kunci sensitif, termasuk modul keamanan perangkat keras (HSM) yang menyediakan akses terbatas dan dapat diaudit.
  • Pastikan aplikasi tidak ditandatangani dengan kunci platform. Melakukannya memberikan akses aplikasi ke izin tanda tangan platform, yang sangat kuat dan hanya dimaksudkan untuk digunakan oleh komponen sistem operasi. Aplikasi sistem harus menggunakan izin istimewa.
  • Pastikan aplikasi dengan nama paket yang sama tidak ditandatangani dengan kunci yang berbeda. Ini sering terjadi ketika membuat aplikasi untuk perangkat yang berbeda, terutama saat menggunakan kunci platform. Jika aplikasi ini independen perangkat, gunakan kunci yang sama di seluruh perangkat. Jika aplikasi ini khusus untuk perangkat, buat nama paket unik per perangkat dan kunci.

Mengisolasi aplikasi dan proses

Model kotak pasir Android menyediakan keamanan ekstra di sekitar aplikasi dan proses saat digunakan dengan benar.

Mengisolasi proses root

Proses root adalah target serangan eskalasi hak istimewa yang paling sering; mengurangi jumlah proses root mengurangi risiko eskalasi hak istimewa.

  • Pastikan perangkat menjalankan kode minimum yang diperlukan sebagai root. Jika memungkinkan, gunakan proses Android biasa daripada proses root. Jika suatu proses harus dijalankan sebagai root pada perangkat, dokumentasikan proses tersebut dalam permintaan fitur AOSP sehingga dapat ditinjau secara publik.
  • Jika memungkinkan, kode root harus diisolasi dari data yang tidak dipercaya dan diakses melalui komunikasi antarproses (IPC). Misalnya, mengurangi fungsionalitas root ke Layanan kecil yang dapat diakses melalui Binder dan mengekspos Layanan dengan izin tanda tangan ke aplikasi dengan hak istimewa rendah atau tidak ada untuk menangani lalu lintas jaringan.
  • Proses root tidak boleh mendengarkan pada soket jaringan.
  • Proses root tidak boleh menyertakan runtime tujuan umum, seperti Java VM).

Mengisolasi aplikasi sistem

Secara umum, aplikasi pra-instal tidak boleh berjalan dengan pengenal unik sistem (UID) bersama. Jika diperlukan aplikasi untuk menggunakan UID sistem bersama atau layanan istimewa lainnya (mis., Telepon), aplikasi tidak boleh mengekspor layanan apa pun, penerima siaran, atau penyedia konten yang dapat diakses oleh aplikasi pihak ketiga yang diinstal oleh pengguna .

  • Pastikan perangkat menjalankan kode minimum yang diperlukan sebagai sistem. Jika memungkinkan, gunakan proses Android dengan UID sendiri daripada menggunakan kembali sistem UID.
  • Jika memungkinkan, kode sistem harus diisolasi dari data yang tidak dipercaya dan mengekspos IPC hanya untuk proses tepercaya lainnya.
  • Proses sistem tidak boleh mendengarkan pada soket jaringan. Ini adalah persyaratan CTS.

Mengisolasi proses

Aplikasi Android Sandbox menyediakan aplikasi dengan harapan isolasi dari proses lain pada sistem, termasuk proses root dan debugger. Kecuali jika debugging diaktifkan secara khusus oleh aplikasi dan pengguna, tidak ada aplikasi yang melanggar harapan itu.

  • Pastikan proses root tidak mengakses data dalam folder data aplikasi individual, kecuali menggunakan metode debugging Android yang terdokumentasi.
  • Pastikan proses root tidak mengakses memori aplikasi, kecuali menggunakan metode debugging Android yang terdokumentasi.
  • Pastikan perangkat tidak menyertakan aplikasi apa pun yang mengakses data atau memori aplikasi atau proses lain.