Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Uygulama Güvenliği En İyi Uygulamaları

Bu bölüm, Android cihazlardaki uygulamaların güvenliğini sağlamak için öneriler içerir.

Kaynak kodu incelemesi

Kaynak kodu incelemesi, bu belgede tanımlananlar da dahil olmak üzere çok çeşitli güvenlik sorunlarını tespit edebilir. Android, hem manuel hem de otomatik kaynak kodu incelemesini şiddetle teşvik eder.

  • Kapsamı sağlamak için incelemeler yaparken kapsamlı güvenlik yönergelerini izleyin. Tutarlı ve eksiksiz incelemeler sağlamak için ilgili dahili veya harici standartları kullanın.
  • Android SDK'yı kullanarak tüm uygulama kodunda Android Studio linter gibi bir linter çalıştırın ve tanımlanan sorunları düzeltin.
  • Arabellek taşmaları ve tek tek hatalar gibi bellek yönetimi sorunlarını algılayabilen otomatik bir araç kullanarak yerel kodu analiz edin.
  • Android derleme sistemi, bellekle ilgili sorunların çalışma zamanı analizi için kullanılabilen AddressSanitizer ve UndefinedBehaviorSanitizer gibi birçok LLVM dezenfektanını destekler. Android'de libFuzzer aracılığıyla desteklenen bulanıklaştırma ile birlikte , dezenfektanlar daha fazla araştırma gerektiren olağandışı uç vakaları ortaya çıkarabilir.
  • Bilgili bir güvenlik değerlendiricisi kripto, ödeme işleme ve PII işleme gibi daha yüksek risk kodunu gözden geçirmelidir.

Otomatik test

Otomatik test, çok çeşitli güvenlik sorunlarının algılanmasına yardımcı olabilir ve düzenli olarak gerçekleştirilmelidir.

  • Sorunları erken tespit etmek ve düzeltme süresini azaltmak için geliştirme süreci boyunca CTS'nin en son sürümünü düzenli olarak çalıştırın. Android, günde birkaç kez oluşturulan otomatik oluşturma işlemimizde sürekli entegrasyonun bir parçası olarak CTS'yi kullanıyor.
  • Yanlış biçimlendirilmiş girişlerle test (fuzz testi) dahil arabirimlerin güvenlik testini otomatikleştirin. Android'in derleme sistemi, fuzz testleri yazmak için libFuzzer'ı destekliyor.

Güvenlik açığı taraması

Güvenlik açığı taraması, önceden yüklenmiş uygulamaların bilinen güvenlik açıklarından arınmış olmasını sağlar. Gelişmiş algılama, bu güvenlik açıklarını gidermek ve kullanıcılar ve aygıtlar için riski önlemek için gereken zaman ve maliyeti azaltabilir.

  • Sektörde tanınan bir uygulama güvenlik açığı tarama aracı kullanarak önceden yüklenmiş tüm uygulamaları tarayın ve algılanan güvenlik açıklarını giderin.

Potansiyel Olarak Zararlı Uygulamalar

Cihazınıza önceden yüklenmiş uygulamaların Potansiyel Olarak Zararlı Uygulamalar (PHA) olmamasını sağlamak önemlidir. Cihazlarınızda bulunan tüm uygulamaların davranışlarından siz sorumlusunuz. Aygıtın başlatılmasından önce, önceden yüklenmiş tüm uygulamaları güvenlik açıklarına karşı tarayın.

PHA'lar ve Google'ın Google Play Store'da bunlarla nasıl mücadele ettiği hakkında daha fazla bilgi için Google Play Protect geliştirici belgelerine bakın .

Uygulama yükleme ve izinler

Önceden yüklenmiş uygulamalar için aşırı izinler güvenlik riski oluşturabilir. Önceden yüklenmiş uygulamaları gerekli minimum izinlerle kısıtlayın ve gereksiz izinlere veya ayrıcalıklara erişemediklerinden emin olun. Uygulama izinleri AndroidManifest.xml dosyasında açıklanmıştır.

  • Önceden yüklenmiş uygulamalara gereksiz izinler veya ayrıcalıklar vermeyin. Çok hassas izinleri olabileceğinden, sistem ayrıcalıklarına sahip uygulamaları iyice inceleyin.
  • İstenen tüm izinlerin söz konusu uygulamanın işlevselliği için alakalı ve gerekli olduğundan emin olun.
  • INSTALL_PACKAGES iznini kullanan önceden yüklenmiş tüm uygulamalar için kullanıcı açıklamasının bulunduğundan emin olun.
  • Geliştiricinin, UID 0 olarak herhangi bir uygulama yüklememesi konusunda sözleşmeye bağlı olduğundan emin olun.
  • Geliştiricinin ağı üzerinden yüklenecek tüm uygulamaların bildiriminde belirtilen izinleri değerlendirin.
  • Uygulamaya, cihaza uygulama sunmadan önce geliştiricinin Google Güncelleme API'sı ile otomatik güncelleyici ve yükleyici uygulamalarının tüm indirme URL'lerini tarama yükümlülüğünden emin olun.

Uygulama imzalama

Uygulama imzaları cihaz güvenliğinde önemli bir rol oynar ve izin kontrolleri ve yazılım güncellemeleri için kullanılır. Uygulamaları imzalamak için kullanılacak bir anahtar seçerken, bir uygulamanın yalnızca tek bir cihazda mı yoksa birden fazla cihazda ortak mı olacağını göz önünde bulundurmak önemlidir.

  • Uygulamaların, AOSP geliştirici anahtarı gibi genel olarak bilinen bir anahtarla imzalanmadığından emin olun.
  • Uygulamaları imzalamak için kullanılan anahtarların, sınırlı, denetlenebilir erişim sağlayan bir donanım güvenlik modülü (HSM) dahil olmak üzere hassas anahtarları işlemek için endüstri standardı uygulamalarla tutarlı bir şekilde yönetildiğinden emin olun.
  • Uygulamaların platform anahtarıyla imzalanmadığından emin olun. Bunu yapmak, bir uygulamaya çok güçlü olan ve yalnızca işletim sisteminin bileşenleri tarafından kullanılması amaçlanan platform imza izinlerine erişim sağlar. Sistem uygulamaları ayrıcalıklı izinleri kullanmalıdır.
  • Aynı paket adına sahip uygulamaların farklı anahtarlarla imzalanmadığından emin olun. Bu genellikle farklı cihazlar için bir uygulama oluştururken, özellikle de platform anahtarını kullanırken oluşur. Uygulama cihazdan bağımsızsa, aynı anahtarı cihazlar arasında kullanın. Uygulama cihaza özelse, cihaz ve anahtar başına benzersiz paket adları oluşturun.

Uygulamaları ve işlemleri ayırma

Android korumalı alan modeli , doğru kullanıldığında uygulamalar ve işlemler hakkında ekstra güvenlik sağlar.

Kök süreçlerini ayırma

Kök süreçleri ayrıcalık yükseltme saldırılarının en sık hedefidir; Kök süreçlerinin sayısını azaltmak ayrıcalık yükselmesi riskini azaltır.

  • Cihazların gerekli minimum kodu root olarak çalıştırdığından emin olun. Mümkünse, kök işlemi yerine normal bir Android işlemi kullanın. Bir işlemin bir aygıtta root olarak çalışması gerekiyorsa, işlemi genel olarak incelenebilmesi için AOSP özellik isteğinde belgeleyin.
  • Mümkünse, kök kod güvenilmeyen verilerden izole edilmeli ve süreçler arası iletişim (IPC) aracılığıyla erişilmelidir. Örneğin, kök işlevselliğini Binder üzerinden erişilebilen küçük bir Hizmete azaltın ve Hizmeti, ağ trafiğini işlemek için düşük veya hiç yetkisi olmayan bir uygulamaya imza izni ile gösterin.
  • Kök süreçleri bir ağ soketinde dinlememelidir.
  • Kök süreçleri, Java VM gibi genel amaçlı bir çalışma zamanı içermemelidir).

Sistem uygulamalarını ayırma

Genel olarak, önceden yüklenmiş uygulamalar paylaşılan sistem benzersiz tanımlayıcısı (UID) ile çalışmamalıdır. Bir uygulamanın sistemin paylaşılan UID'sini veya başka bir ayrıcalıklı hizmeti (ör. Telefon) kullanması gerekiyorsa uygulama, kullanıcılar tarafından yüklenen üçüncü taraf uygulamalar tarafından erişilebilecek hiçbir hizmeti, yayın alıcısını veya içerik sağlayıcısını dışa aktarmamalıdır. .

  • Cihazların sistem olarak gerekli minimum kodu çalıştırdığından emin olun. Mümkünse, Android UID'sini yeniden kullanmak yerine kendi UID'si olan bir Android işlemi kullanın.
  • Mümkün olduğunda, sistem kodu güvenilmeyen verilerden izole edilmeli ve IPC'yi yalnızca diğer güvenilir işlemlere göstermelidir.
  • Sistem işlemleri bir ağ soketini dinlememelidir. Bu bir CTS gereksinimidir.

Yalıtım prosesleri

Android Uygulama Korumalı Alanı, uygulamalara kök süreçleri ve hata ayıklayıcılar dahil olmak üzere sistemdeki diğer işlemlerden yalıtım beklentisi sağlar. Hata ayıklama, uygulama ve kullanıcı tarafından özel olarak etkinleştirilmedikçe, hiçbir uygulama bu beklentiyi ihlal etmemelidir.

  • Belgelenmiş bir Android hata ayıklama yöntemi kullanılmadıkça, kök işlemlerin tek tek uygulama veri klasörlerindeki verilere erişmediğinden emin olun.
  • Belgelenmiş bir Android hata ayıklama yöntemi kullanılmadıkça kök işlemlerinin uygulamaların belleğine erişmediğinden emin olun.
  • Cihazların, diğer uygulamaların veya işlemlerin verilerine veya belleğine erişen hiçbir uygulama içermediğinden emin olun.