Sistem Güvenliği En İyi Uygulamaları

Bu bölüm, çekirdek Android işletim sisteminin ve cihazlarının güvenliğini sağlamaya yönelik öneriler içerir.

Biyometrik kimlik doğrulama

Kullanıcı kimlik doğrulaması için biyometrik verileri dikkatlice edinin, saklayın ve işleyin. Malısın:

  • Başka herhangi bir kimlik doğrulama biçimini (biyometri dahil) kullanmadan önce birincil kimlik doğrulama yöntemini zorunlu kılın.
  • Kimlik doğrulamaya bağlı anahtarlar içeren işlemler (örneğin ödemeler) için yüz tanıma gibi pasif biyometrik yöntemleri kullanırken amacı belirtmek için açık bir onay isteyin.
  • Her 72 saatte bir birincil kimlik doğrulama yöntemini zorunlu kılın.
  • Tüm biyometrik veriler ve işlemler için tamamen güvenli bir işlem hattı kullanın.
  • Biyometrik verileri (ham sensör ölçümleri ve türetilmiş özellikler dahil) asla cihazın dışına göndermeyin. Mümkünse bu verileri Güvenilir Yürütme Ortamı (TEE) veya Güvenli Öğe gibi güvenli, yalıtılmış bir ortamda saklayın.

Biyometri özelliğine sahip cihazlar, uygulama geliştiricilerinin uygulamalarında biyometri tabanlı kimlik doğrulamasından yararlanabilmeleri için ortak ve tutarlı bir arayüz sunan BiometricPrompt API'yi desteklemelidir. Yalnızca güçlü biyometri BiometricPrompt ile entegre olabilir ve entegrasyonlar Android Uyumluluk Tanımlama Belgesi (CDD) yönergelerine uygun olmalıdır.

Daha fazla biyometrik yönerge için Biyometrik HAL uygulama yönergelerine bakın.

SELinux

SELinux, Android'in güvenlik modelinin çoğunun tanımını ve uygulanmasını sağlar. SELinux'un doğru şekilde kullanılması Android cihazların güvenliği açısından kritik öneme sahiptir ve güvenlik açıklarının etkisinin azaltılmasına yardımcı olabilir. Bu nedenle tüm Android cihazların sağlam bir SELinux politikası uygulaması gerekir.

  • En az ayrıcalık ilkesini uygulayın.
  • CAP_DAC_OVERRIDE , CAP_SYS_ADMIN ve CAP_NET_ADMIN izinlerini vermekten kaçının.
  • Sistem verilerini SD karta kaydetmeyin.
  • Sürücü erişimi için gpu_device , audio_device vb. gibi sağlanan türleri kullanın.
  • İşlemler, dosyalar ve SELinux türleri için anlamlı adlar kullanın.
    • Varsayılan etiketlerin kullanılmadığından ve bunlara erişim izni verilmediğinden emin olun.
  • Cihaza özel politika, bir cihazda çalışan genel politikanın %5-10'unu oluşturmalıdır. %20+ aralığındaki özelleştirmeler neredeyse kesinlikle aşırı ayrıcalıklı alanlar ve ölü politika içeriyor. Gereksiz derecede büyük politika, belleği boşa harcar, daha büyük bir önyükleme görüntüsü gerektirerek disk alanını boşa harcar ve çalışma zamanı politikası arama sürelerini olumsuz etkiler.

SELinux ilkesinin dinamik yüklenmesi

SELinux politikasını Android cihazlara dinamik olarak yüklemeyin. Bunu yapmak aşağıdaki gibi sorunlara yol açabilir:

  • Kritik güvenlik yamalarının kabulünün önlenmesi.
  • Politikaların yeniden yüklenmesi yoluyla bir cihazı rootlama yeteneği ortaya çıkıyor.
  • Politika güncelleyiciye yönelik ortadaki adam saldırılarına yönelik bir vektör açığa çıkıyor.
  • Politika güncellemelerindeki hatalar nedeniyle cihazların tuğlalaşmasına neden oluyor.

Arka kapılar

Android uygulamalarında, normal güvenlik mekanizmalarını aşan herhangi bir arka kapı veya sisteme veya verilere erişme yolları bulunmamalıdır. Buna, geliştiricinin bildiği sırlarla kapılanan tanılama, hata ayıklama, geliştirme veya garanti onarımı özel erişimi dahildir. Arka kapıları önlemek için:

  • Sektörde tanınan bir uygulama güvenlik açığı tarama aracını kullanarak tüm üçüncü taraf uygulamalarını tarayın.
  • Üçüncü taraf kitaplıklar dahil, hassas erişime sahip tüm kodların kod incelemelerini gerçekleştirin.
  • Tarama için uygulamaları Google Play'e yükleyerek Google Play Koruma'yı kullanın. Tarama için uygulamaları Google Play'e yayınlamadan yükleyebilirsiniz.
  • Sürüm yapılarına tanılama veya onarım odaklı araçları önceden yüklemeyin. Bu araçları yalnızca belirli sorunları çözmek için isteğe bağlı olarak yükleyin. Ayrıca, bu araçlar hesaba özel herhangi bir veri üzerinde çalışmamalı veya bunları yüklememelidir.

Geliştirme araçları

Hata ayıklama, test etme ve teşhis araçları gibi geliştirme araçları, nasıl çalıştıklarını ve topladıkları verileri açığa çıkararak çoğu zaman cihazınızda istenmeyen güvenlik açıkları oluşturabilir. Geliştirme araçlarının üretim yapılarına girmediğinden emin olmak için:

  • Sistem görüntüsünü kullanmadan önce şirket içi hata ayıklama ve test aracı karmalarının bir kara listesini oluşturun ve bu APK'lar için yapıları tarayın.
  • Sektörde tanınan bir uygulama güvenlik açığı tarama aracını kullanarak tüm birinci taraf uygulamaları tarayın.
  • Özellikle uygulama üçüncü bir tarafça geliştirilmişse, herhangi bir büyük güncellemeden önce tüm kritik cihaz içi tanılama uygulamalarını değerlendirmek için bir üçüncü taraf uygulama güvenliği test firmasıyla anlaşın.
  • Bir destek oturumu sırasında aracı yalnızca kullanıcının sözlü olarak veya sohbet üzerinden etkinleştirebildiğinden emin olun. Onay yapıtlarını saklayın ve gerekli tanılama bilgilerini topladıktan sonra aracı devre dışı bırakın.
  • Bu aracın kullanım kaydını, kullanıcının operatör hesabında erişebileceği bir günlükte saklayın.
  • Araç tarafından toplanan tüm kişisel bilgilerin (PII) veya cihaz telemetri verilerinin, ülkeyle ilgili anonimleştirme, saklama ve silme uygulamalarına tabi olduğundan emin olun. Yalnızca destek çağrısıyla ilgili veriler toplanmalıdır. Bu veriler her aramadan sonra silinmelidir.
  • Tuş vuruşlarını kaydetme, mikrofon kullanımı veya kamera kullanımı gibi casus yazılım için kullanılabilecek tekniklerin, kullanıcının açık izni olmadan kullanılmadığından emin olun. Bu potansiyel olarak gizliliği ihlal eden yöntemleri kullanan uygulamalar, kullanıcının rıza göstermesi gereken bir gizlilik politikasıyla birlikte çok açık bir şekilde açıklanmalıdır. Bunun gibi uygulamalar kullanıcının açık izni olmadan etkinleştirilmemelidir.

Açıklama ve rızayı uygularken başvurulacak bazı ek öneriler şunlardır:

Uygulama içi açıklama

  • Uygulamanın normal kullanımını doğrudan uygulama içinde görüntüleyin. Kullanıcının bir menüye veya ayarlara gitmesine gerek yoktur.
  • Toplanan veri türünü tanımlayın ve verilerin nasıl kullanılacağını açıklayın.
  • İdeal olarak bu bilgiyi bir gizlilik politikasına veya hizmet şartlarına dahil etmeyin. Kişisel veya hassas veri toplamayla ilgisi olmayan diğer açıklamalara bunu dahil etmeyin.
  • Rıza olumlu olmalıdır. Dokunarak uzaklaşmak veya geri veya ana sayfa düğmesine basmak da dahil olmak üzere, açıklamanın dışına çıkmayı izin olarak değerlendirmeyin.
  • Onay iletişim kutusunu açık ve net bir şekilde sunun.
  • Kabul etmek için, kabul etmek için dokunmak veya bir komutu söylemek gibi olumlu kullanıcı eylemini zorunlu kılın.
  • Olumlu onay almadan kişisel veya hassas verileri toplamayın.
  • Otomatik olarak kapatılan veya süresi dolan mesajları kullanmayın.

AOSP'de yerleşik işlevsellik

AOSP'ye ek işlevler eklemek çoğu zaman beklenmeyen davranışlara ve sonuçlara yol açabilir; Dikkatle ilerle.

  • Kullanıcının farklı varsayılan uygulamaları (örneğin, arama motoru, web tarayıcısı, başlatıcı) kullanmak isteyip istemediğinin sorulduğundan ve cihazdan gönderilen verileri ifşa ettiğinden emin olun.
  • AOSP APK'larının AOSP sertifikasıyla imzalandığından emin olun.
  • AOSP APK'larına kod eklenip eklenmediğini belirlemek için regresyon testleri çalıştırın ve bir değişiklik günlüğü tutun.

Güvenlik güncellemeleri

Android cihazlar, lansmandan itibaren en az iki yıl boyunca sürekli güvenlik desteği almalıdır. Buna, bilinen güvenlik açıklarını gideren düzenli güncellemelerin alınması da dahildir.

  • Android cihazınızdaki tüm bileşenler için uygun destek anlaşmalarını uygulamaya koymak amacıyla SoC satıcılarınız gibi donanım iş ortaklarıyla birlikte çalışın.
  • Kullanıcıların Android cihazlarında güncellemeleri kabul etme ve yükleme olasılığını artırmak için güvenlik güncellemelerinin minimum kullanıcı etkileşimiyle yüklenebildiğinden emin olun. Sorunsuz Sistem Güncellemelerinin veya eşdeğer bir güvenlik özelliğinin uygulanması şiddetle tavsiye edilir.
  • Android Güvenlik Bülteni'nde açıklanan Android Güvenlik Yaması Düzeyinin (SPL) kümülatif gerekliliğini anladığınızdan emin olun. Örneğin, 01.02.2018 güvenlik yaması düzeyini kullanan cihazların, söz konusu güvenlik yaması düzeyiyle ilişkili tüm sorunların yanı sıra önceki tüm güvenlik bültenlerinde bildirilen tüm sorunlara yönelik düzeltmeleri de içermesi gerekir.

Dinamik çekirdek güncellemeleri

Kritik sistem bileşenlerini dinamik olarak değiştirmeyin. Dinamik çekirdek güncellemelerinin acil durum tehditlerine karşı korumaya yardımcı olduğunu öne süren bazı araştırmalar olsa da, değerlendirilen maliyet şu anda faydalardan daha ağır basmaktadır. Bunun yerine, güvenlik açığı korumalarını hızlı bir şekilde dağıtmak için güçlü bir OTA güncelleme yöntemi oluşturun.

Anahtar yönetimi

İmzalama anahtarlarının güvenliğini sağlamak için iyi anahtar yönetimi politikalarını ve uygulamalarını sürdürün.

  • İmzalama anahtarlarını harici taraflarla paylaşmayın.
  • İmza anahtarının güvenliği ihlal edilirse yeni bir anahtar oluşturun ve bundan sonra tüm uygulamaları çift imzalayın.
  • Tüm anahtarları, erişim için birden fazla faktör gerektiren yüksek güvenlikli modül donanımında veya hizmetlerinde saklayın.

Sistem görüntüsü imzalama

Sistem görüntüsünün imzası, cihaz bütünlüğünü belirlemek açısından kritik öneme sahiptir.

  • Herkese açık olarak bilinen bir anahtarla cihazları imzalamayın.
  • Cihaz imzalama anahtarlarını, sınırlı, denetlenebilir erişim sağlayan bir donanım güvenlik modülü (HSM) de dahil olmak üzere, hassas anahtarların işlenmesine yönelik endüstri standardı uygulamalarla tutarlı bir şekilde yönetin.

Kilidi açılabilir önyükleyiciler

Çoğu Android cihazı, kilit açmayı destekleyerek cihaz sahibinin sistem bölümünü değiştirmesine veya özel bir işletim sistemi kurmasına olanak tanır. Yaygın kullanım örnekleri arasında üçüncü taraf bir sistem görüntüsünün yüklenmesi ve cihazda sistem düzeyinde geliştirme yapılması yer alır. Örneğin, bir Google Nexus veya Pixel'deki sistem görüntüsünün kilidini açmak için kullanıcı, şu mesajı görüntüleyen fastboot oem unlock çalıştırabilir:

En iyi uygulama olarak, kilidi açılabilir Android cihazlarının, kilidi açılmadan önce tüm kullanıcı verilerini güvenli bir şekilde silmesi gerekir. Kilit açma sırasında tüm verilerin düzgün bir şekilde silinmemesi, fiziksel olarak yakındaki bir saldırganın gizli Android kullanıcı verilerine yetkisiz erişim elde etmesine olanak tanıyabilir. Kullanıcı verilerinin ifşa edilmesini önlemek için kilit açmayı destekleyen bir cihazın bunu doğru şekilde uygulaması gerekir.

  • Kullanıcı kilit açma komutunu onayladıktan sonra cihazın hemen veri silme işlemini başlatması gerekir. unlocked işareti, güvenli silme işlemi tamamlanana kadar ayarlanmamalıdır.
  • Güvenli silme işlemi tamamlanamıyorsa cihazın kilitli durumda kalması gerekir.
  • Temel blok cihazı tarafından destekleniyorsa ioctl(BLKSECDISCARD) veya eşdeğeri kullanılmalıdır. Gömülü MultiMediaCard (eMMC) aygıtları için bu, Güvenli Silme veya Güvenli Kırpma komutunun kullanılması anlamına gelir. eMMC 4.5 ve üzeri için bu, normal bir Silme veya Kırpma işleminin ardından Temizleme işleminin kullanılması anlamına gelir.
  • BLKSECDISCARD temel blok cihazı tarafından desteklenmiyorsa bunun yerine ioctl(BLKDISCARD) kullanılmalıdır. eMMC cihazlarında bu normal bir Trim işlemidir.
  • BLKDISCARD desteklenmiyorsa blok cihazların üzerine tamamen sıfır yazılması kabul edilebilir.
  • Kullanıcının, bir bölümü flashlamadan önce kullanıcı verilerinin silinmesini talep etme seçeneğine sahip olması gerekir. Örneğin Nexus cihazları, kullanıcı verilerini silmek için fastboot oem lock komutunu kullanır.
  • Bir cihaz, eFuses veya benzeri bir mekanizma aracılığıyla, bir cihazın kilidinin açılıp açılmadığını ve/veya yeniden kilitlenip kilitlenmediğini kaydedebilir. Ancak, önyükleyiciyi fabrika ayarlarına sıfırlayarak yeniden kilitlemenin cihazın tam işlevselliğini geri yüklemesini önemle tavsiye ederiz.

Bu gereksinimler, kilit açma işleminin tamamlanmasının ardından tüm verilerin yok edilmesini sağlar. Bu korumaların uygulanmaması, orta düzeyde bir güvenlik açığı olarak kabul edilir.

Kilidi açılmış bir cihazın fastboot oem lock komutu kullanılarak daha sonra yeniden kilitlenmesi mümkündür. Önyükleyicinin kilitlenmesi, orijinal cihaz üreticisinin işletim sistemi ile mevcut olan yeni özel işletim sistemi ile aynı kullanıcı verileri korumasını sağlar (örneğin, cihazın kilidi tekrar açılırsa kullanıcı verileri silinecektir).

Cihaz sızma testi

Cihazlar gönderilmeden önce yetkili bir pentester tarafından incelenmelidir. Sızma testi, cihazın burada sağlanan güvenlik kılavuzunun yanı sıra dahili OEM güvenlik kılavuzuna da uyduğunu belirlemelidir.

Güvenlik Testi

AOSP tarafından sağlanan Güvenlik Testi araçlarını kullanın. Özellikle

  • Geliştirme sırasında bellek güvenliği araçlarını kullanın: Desteklendiği durumlarda MTE'yi (ARMv9 ve üzeri) ve desteklenmediği durumlarda HWASan'ı kullanın. Bu araçlar etkinken mümkün olduğunca çok test çalıştırın.
  • Bellek güvenliği sorunlarının olasılıksal tespiti için üretimde GWP-ASan ve KFENCE kullanın.