Android, güvenlik özelliklerini ve sunduğu hizmetleri sürekli olarak iyileştirir. Soldaki gezinme menüsünde, sürüme göre geliştirme listelerini görebilirsiniz.
Android 14
Her Android sürümü, kullanıcıları korumak için onlarca güvenlik iyileştirmesi içerir. Android 14'te sunulan önemli güvenlik geliştirmelerinden bazıları şunlardır:
- Android 10'da kullanıma sunulan donanım destekli AddressSanitizer (HWASan), AddressSanitizer'a benzer bir bellek hatası algılama aracıdır. Android 14, HWASan'da önemli iyileştirmeler sunar. HWAddressSanitizer'ın, hataların Android sürümlerine girmesini nasıl önlediğini öğrenin
- Android 14'te, konum verilerini üçüncü taraflarla paylaşan uygulamalardan başlayarak sistem çalışma zamanında istenen izin iletişim kutusunda artık uygulamanın veri paylaşım uygulamalarını vurgulayan bir tıklanabilir bölüm yer alıyor. Bu bölümde, uygulamanın neden üçüncü taraflarla veri paylaşmaya karar verebileceği gibi bilgiler de yer alıyor.
- Android 12, 2G desteğini modem düzeyinde devre dışı bırakma seçeneği sunarak kullanıcıları 2G'nin eski güvenlik modelinden kaynaklanan güvenlik riskine karşı korur. 2G'nin devre dışı bırakılmasının kurumsal müşteriler için ne kadar önemli olabileceğinin farkında olan Android 14, Android Enterprise'da bu güvenlik özelliğini etkinleştirerek BT yöneticilerinin yönetilen bir cihazın 2G bağlantısına geçme özelliğini kısıtlamasına olanak tanır.
- Boş şifrelenmiş hücresel bağlantıları reddetme desteği eklendi. Bu sayede, devre anahtarlı ses ve SMS trafiği her zaman şifrelenir ve pasif kablosuz dinlemeye karşı korunur. Android'in hücresel bağlantıyı güçlendirme programı hakkında daha fazla bilgi edinin.
- Birden fazla IMEI desteği eklendi
- Android 14'ten beri, hızlandırılmış kriptografi talimatları olan cihazlarda dosya adı şifreleme için tercih edilen mod AES-HCTR2'dir.
- Hücresel bağlantı
- Android Güvenlik Merkezi için dokümanlar eklendi
- Uygulamanız Android 14'ü hedefliyorsa ve Dinamik Kod Yükleme (DCL) kullanıyorsa dinamik olarak yüklenen tüm dosyalar salt okunur olarak işaretlenmelidir. Aksi takdirde sistem istisna atar. Uygulamaların mümkün olduğunda kodları dinamik olarak yüklemekten kaçınmasını öneririz. Aksi takdirde, kod ekleme veya kodla oynama yoluyla uygulamanın güvenliğinin ihlal edilmesi riski büyük ölçüde artar.
AOSP sürüm notlarımızın tamamını ve Android Developers özellik ve değişiklikler listesini inceleyin.
Android 13
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 13:
- Android 13 adds multi-document presentation support. This new Presentation Session interface enables an app to do a multi-document presentation, something which isn't possible with the existing API. For further information, refer to Identity Credential
- In Android 13, intents originating from external apps are delivered to an exported component if and only if the intents match their declared intent-filter elements.
- Open Mobile API (OMAPI) is a standard API used to communicate with a device's Secure Element. Before Android 13, only apps and framework modules had access to this interface. By converting it to a vendor stable interface, HAL modules are also capable of communicating with the secure elements through the OMAPI service. For more information, see OMAPI Vendor Stable Interface.
- As of Android 13-QPR, shared UIDs are deprecated. Users of Android 13 or higher should put the line `android:sharedUserMaxSdkVersion="32"` in their manifest. This entry prevents new users from getting a shared UID. For further information on UIDs, see App signing.
- Android 13 added support Keystore symmetric cryptographic primitives such as AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code), and asymmetric cryptographic algorithms (including Elliptic Curve, RSA2048, RSA4096, and Curve 25519)
- Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt notifications from an app. This gives users control over which permission notifications they see.
- Added per-use prompt for apps requesting access to all device logs, giving users the ability to allow or deny access.
- introduced the Android Virtualization Framework (AVF), which brings together different hypervisors under one framework with standardized APIs. It provides secure and private execution environments for executing workloads isolated by hypervisor.
- Introduced APK signature scheme v3.1 All new key rotations that use apksigner use the v3.1 signature scheme by default to target rotation for Android 13 and higher.
Check out our full AOSP release notes and the Android Developer features and changes list.
Android 12
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 12:
- Android 12 introduces the BiometricManager.Strings API, which provides localized strings for apps that use BiometricPrompt for authentication. These strings are intended to be device-aware and provide more specificity about which authentication types might be used. Android 12 also includes support for under-display fingerprint sensors
- Support added for under-display fingerprint sensors
- Introduction of the Fingerprint Android Interface Definition Language (AIDL)
- Support for new Face AIDL
- Introduction of Rust as a language for platform development
- The option for users to grant access only to their approximate location added
- Added Privacy indicators on the status bar when an app is using the camera or microphone
- Android's Private Compute Core (PCC)
- Added an option to disable 2G support
Android 11
Her Android sürümü, kullanıcıları korumak için onlarca güvenlik geliştirmesi içerir. Android 11'de sunulan önemli güvenlik geliştirmelerinden bazılarının listesi için Android Sürüm Notları'na bakın.
Android 10
Her Android sürümü, kullanıcıları korumak için onlarca güvenlik geliştirmesi içerir. Android 10, çeşitli güvenlik ve gizlilik geliştirmeleri içerir. Android 10'daki değişikliklerin tam listesi için Android 10 sürüm notlarına bakın.
Güvenlik
BoundsSanitizer
Android 10, Bluetooth ve codec'lerde BoundsSanitizer (BoundSan)'ı dağıtır. BoundSan, UBSan'ın sınır temizleyicisini kullanır. Bu azaltma, modül başına düzeyde etkinleştirilir. Android'in kritik bileşenlerinin güvende kalmasına yardımcı olur ve devre dışı bırakılmamalıdır. BoundSan aşağıdaki codec'lerde etkindir:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
Yalnızca yürütme belleği
AArch64 sistem ikili dosyalarının yürütülebilir kod bölümleri, tam zamanında kod yeniden kullanma saldırılarına karşı bir güçlendirme azaltma olarak varsayılan olarak yalnızca çalıştırılabilir (okunamaz) olarak işaretlenir. Verileri ve kodu birlikte karıştıran kodlar ve bu bölümleri kasıtlı olarak inceleyen kodlar (öncelikle bellek segmentlerini okunabilir olarak yeniden eşlemeden) artık çalışmıyor. Hedef SDK'sı Android 10 (API düzeyi 29 veya üstü) olan uygulamalar, önce bölümü okunabilir olarak işaretlemeden salt yürütme belleği (XOM) etkin sistem kitaplıklarının kod bölümlerini bellekte okumaya çalışırsa etkilenir.
Genişletilmiş erişim
Smart Lock gibi üçüncü taraf kimlik doğrulama mekanizmaları tarafından kullanılan temel mekanizma olan güven aracıları, yalnızca Android 10'da kilit açmayı uzatabilir. Güven aracıları artık kilitlenen bir cihazın kilidini açamaz ve bir cihazın kilidini en fazla dört saat açık tutabilir.
Yüzle kimlik doğrulama
Yüz doğrulaması, kullanıcıların cihazlarının kilidini yalnızca cihazlarının ön tarafına bakarak açmasına olanak tanır. Android 10, desteklenen donanımlarda yüz kimlik doğrulaması sırasında güvenlik ve gizliliği koruyarak kamera karelerini güvenli bir şekilde işleyebilen yeni bir yüz kimlik doğrulama paketi desteği ekler. Android 10, güvenlikle uyumlu uygulamaların internet bankacılığı veya diğer hizmetler gibi işlemler için uygulama entegrasyonunu etkinleştirmesini sağlayan kolay bir yol da sunar.
Tam Sayı Taşması Temizleme
Android 10, yazılım codec'lerinde Tam Sayı Aşımı Temizleme (IntSan) özelliğini etkinleştirir. Oynatma performansının, cihazın donanımında desteklenmeyen tüm codec'ler için kabul edilebilir olduğundan emin olun. IntSan aşağıdaki codec'lerde etkindir:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
Modüler sistem bileşenleri
Android 10, bazı Android sistem bileşenlerini modüler hale getirir ve bu bileşenlerin normal Android sürüm döngüsü dışında güncellenmesini sağlar. Bazı modüller şunlardır:
- Android Runtime
- Conscrypt
- DNS Çözümleyici
- DocumentsUI
- ExtServices
- Medya
- ModuleMetadata
- Ağ Oluşturma
- PermissionController
- Saat dilimi verileri
OEMCrypto
Android 10, OEMCrypto API 15 sürümünü kullanır.
Scudo
Scudo, yığınla ilgili güvenlik açıklarına karşı daha dirençli olacak şekilde tasarlanmış dinamik bir kullanıcı modu bellek ayırıcısıdır. Standart C ayırma ve ayırma işlemlerinin yanı sıra C++ primitifleri de sağlar.
ShadowCallStack
ShadowCallStack
(SCS)
, bir işlevin döndürdüğü adresi, yapraklı olmayan işlevlerin işlev prologunda ayrı olarak ayrılmış bir ShadowCallStack
örneğine kaydederek ve döndürülen adresi işlev epilogundaki ShadowCallStack
örneğinden yükleyerek döndürülen adresin üzerine yazılmasına (ör. yığın arabellek taşmaları) karşı koruma sağlayan bir LLVM enstrümantasyonu modudur.
WPA3 ve Wi-Fi Enhanced Open
Android 10, bilinen saldırılara karşı daha iyi gizlilik ve sağlamlık sağlamak için Kablosuz Korumalı Erişim 3 (WPA3) ve Kablosuz Gelişmiş Açık güvenlik standartları desteği ekler.
Gizlilik
Android 9 veya önceki sürümleri hedeflerken uygulama erişimi
Uygulamanız Android 10 veya sonraki sürümlerde çalışıyorsa ancak Android 9'u (API düzeyi 28) veya daha eski sürümleri hedefliyorsa platform aşağıdaki davranışı uygular:
- Uygulamanız
ACCESS_FINE_LOCATION
veyaACCESS_COARSE_LOCATION
için bir<uses-permission>
öğesi tanımlarsa sistem, yükleme sırasındaACCESS_BACKGROUND_LOCATION
için otomatik olarak bir<uses-permission>
öğesi ekler. - Uygulamanız
ACCESS_FINE_LOCATION
veyaACCESS_COARSE_LOCATION
isterse sistem isteğe otomatik olarakACCESS_BACKGROUND_LOCATION
ekler.
Arka plan etkinliği kısıtlamaları
Android 10'dan itibaren sistem, etkinlikleri arka planda başlatmaya kısıtlamalar uygular. Bu davranış değişikliği, kullanıcının kesinti yaşamasını en aza indirmeye yardımcı olur ve kullanıcının ekranında gösterilenlerle ilgili daha fazla kontrol sahibi olmasını sağlar. Uygulamanız, kullanıcı etkileşiminin doğrudan bir sonucu olarak etkinlikler başlattığı sürece büyük olasılıkla bu kısıtlamalardan etkilenmez.
Etkinlikleri arka plandan başlatmak için önerilen alternatif hakkında daha fazla bilgi edinmek istiyorsanız uygulamanızda kullanıcıları zamana duyarlı etkinlikler hakkında nasıl uyaracağınızla ilgili kılavuzu inceleyin.
Kamera meta verileri
Android 10, getCameraCharacteristics()
yönteminin varsayılan olarak döndürdüğü bilgilerin kapsamını değiştirir. Özellikle, bu yöntemin döndürdüğü değere dahil edilen ve cihaza özgü olabilecek meta verilere erişmek için uygulamanızın CAMERA
iznine sahip olması gerekir.
Bu değişiklikler hakkında daha fazla bilgi edinmek için izin gerektiren kamera alanları ile ilgili bölüme bakın.
Pano verileri
Uygulamanız varsayılan giriş yöntemi düzenleyicisi (IME) veya şu anda odaktaki uygulama değilse Android 10 veya sonraki sürümlerde uygulamanız, pano verilerine erişemez.
Cihaz konumu
Android 10, kullanıcıların bir uygulamanın konum bilgilerine erişimi üzerinde sahip olduğu ek kontrolü desteklemek için ACCESS_BACKGROUND_LOCATION
izinini kullanıma sunmuştur.
ACCESS_FINE_LOCATION
ve ACCESS_COARSE_LOCATION
izinlerinin aksine ACCESS_BACKGROUND_LOCATION
izni, yalnızca uygulamanın arka planda çalışırken konuma erişimini etkiler. Aşağıdaki koşullardan biri karşılanmazsa uygulamanın arka planda konuma eriştiği kabul edilir:
- Uygulamaya ait bir etkinlik görünür.
- Uygulama,
location
ön plan hizmet türü bildiren bir ön plan hizmeti çalıştırıyor.
Uygulamanızdaki bir hizmetin ön plan hizmet türünü beyan etmek için uygulamanızıntargetSdkVersion
veyacompileSdkVersion
değerini29
veya daha yüksek bir değere ayarlayın. Ön plan hizmetlerinin, konuma erişim gerektiren kullanıcı tarafından başlatılan işlemleri devam ettirmesi hakkında daha fazla bilgi edinin.
Harici depolama
Android 10 ve sonraki sürümleri hedefleyen uygulamalara varsayılan olarak harici depolamaya kapsamlı erişim veya kapsamlı depolama izni verilir. Bu tür uygulamalar, depolamayla ilgili kullanıcı izinleri istemek zorunda kalmadan harici depolama cihazındaki aşağıdaki dosya türlerini görebilir:
getExternalFilesDir()
kullanılarak erişilen, uygulamaya özel dizindeki dosyalar.- Uygulamanın medya mağazasından oluşturduğu fotoğraflar, videolar ve ses klipleri.
Kapsamlı depolama alanı ve harici depolama cihazlarına kaydedilen dosyaları paylaşma, bunlara erişme ve dosyaları değiştirme hakkında daha fazla bilgi edinmek için harici depolama alanındaki dosyaları yönetme ve medya dosyalarına erişme ve dosyaları değiştirme ile ilgili kılavuzları inceleyin.
MAC adresinin rastgele seçilmesi
Android 10 veya sonraki sürümleri çalıştıran cihazlarda sistem varsayılan olarak rastgele MAC adresleri iletir.
Uygulamanız kurumsal bir kullanım alanı ile ilgileniyorsa platform, MAC adresleriyle ilgili çeşitli işlemler için API'ler sağlar:
- Rastgele MAC adresi alma: Cihaz sahibi uygulamaları ve profil sahibi uygulamaları,
getRandomizedMacAddress()
çağrısını yaparak belirli bir ağa atanan rastgele MAC adresini alabilir. - Gerçek fabrika MAC adresini alma: Cihaz sahibi uygulamaları,
getWifiMacAddress()
çağrısını yaparak cihazın gerçek donanım MAC adresini alabilir. Bu yöntem, cihaz filolarını izlemek için yararlıdır.
Sıfırlanamayan cihaz tanımlayıcıları
Android 10'dan itibaren uygulamaların, cihazın sıfırlanamayan tanımlayıcılarına (IMEI ve seri numarası dahil) erişebilmesi için READ_PRIVILEGED_PHONE_STATE
ayrıcalıklı iznine sahip olması gerekir.
Build
TelephonyManager
Uygulamanızda bu izin yoksa ve sıfırlanamayan tanımlayıcılarla ilgili bilgi istemeyi denerseniz platformun yanıtı, hedef SDK sürümüne göre değişir:
- Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa
SecurityException
meydana gelir. - Uygulamanız Android 9'u (API düzeyi 28) veya daha eski sürümleri hedefliyorsa yöntem, uygulamada
READ_PHONE_STATE
izni varsanull
veya yer tutucu veri döndürür. Aksi takdirdeSecurityException
oluşur.
Fiziksel aktiviteyi algılama
Android 10, kullanıcının adım sayısını algılaması veya kullanıcının fiziksel aktivitesini (ör. yürüyüş, bisiklete binme veya araçta hareket etme) sınıflandırması gereken uygulamalar için android.permission.ACTIVITY_RECOGNITION
çalışma zamanında izin kullanıma sunar. Bu, kullanıcılara cihaz sensör verilerinin Ayarlar'da nasıl kullanıldığını göstermek için tasarlanmıştır.
Google Play Hizmetleri'ndeki bazı kitaplıklar (ör. Activity Recognition API ve Google Fit API), kullanıcı uygulamanıza bu izni vermediyse sonuç sağlamaz.
Cihazdaki bu izni belirtmenizi gerektiren tek yerleşik sensörler adım sayacı ve adım algılayıcı sensörleridir.
Uygulamanız Android 9'u (API düzeyi 28) veya daha eski sürümleri hedefliyorsa sistem, uygulamanız aşağıdaki koşulların her birini karşılıyorsa gerektiğinde android.permission.ACTIVITY_RECOGNITION
iznini otomatik olarak uygulamanıza verir:
- Manifest dosyasında
com.google.android.gms.permission.ACTIVITY_RECOGNITION
izni yer alıyor. - Manifest dosyası
android.permission.ACTIVITY_RECOGNITION
iznini içermiyor.
Sistem-otomatik, android.permission.ACTIVITY_RECOGNITION
iznini verirse uygulamanız, Android 10'u hedefleyecek şekilde güncellendikten sonra izni korur. Ancak kullanıcı, sistem ayarlarından bu izni istediği zaman iptal edebilir.
/proc/net dosya sistemi kısıtlamaları
Android 10 veya sonraki sürümleri çalıştıran cihazlarda uygulamalar, cihazın ağ durumuyla ilgili bilgileri içeren /proc/net
kaynağına erişemez. VPN'ler gibi bu bilgilere erişmesi gereken uygulamalar NetworkStatsManager
veya ConnectivityManager
sınıfını kullanmalıdır.
İzin grupları kullanıcı arayüzünden kaldırıldı
Android 10'dan itibaren uygulamalar, kullanıcı arayüzünde izinlerin nasıl gruplandırıldığını sorgulayamaz.
Kişi yakınlığı kaldırıldı
Android 10'dan itibaren platform, kişi yakınlık bilgilerini takip etmez. Sonuç olarak, uygulamanız kullanıcının kişilerinde arama yaparsa sonuçlar etkileşim sıklığına göre sıralanmaz.
ContactsProvider
ile ilgili kılavuzda, Android 10'dan itibaren tüm cihazlarda kullanımı sonlandırılmış belirli alanları ve yöntemleri açıklayan bir bildirim yer alır.
Ekran içeriğine erişim kısıtlandı
Android 10, kullanıcıların ekran içeriklerini korumak için READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
ve CAPTURE_SECURE_VIDEO_OUTPUT
izinlerinin kapsamını değiştirerek cihazın ekran içeriklerine sessizce erişilmesini engeller. Android 10'dan itibaren bu izinler yalnızca imza erişimi olarak kullanılmaktadır.
Cihazın ekran içeriklerine erişmesi gereken uygulamalar, kullanıcıdan izin isteğinde bulunan bir istem gösteren API'yi kullanmalıdır.MediaProjection
USB cihazın seri numarası
Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa kullanıcı, uygulamanıza USB cihaza ya da aksesuara erişim izni verene kadar seri numarasını okuyamaz.
USB cihazlarla çalışma hakkında daha fazla bilgi edinmek için USB ana makinelerini yapılandırma ile ilgili kılavuzu inceleyin.
Kablosuz bağlantı
Android 10 veya sonraki sürümleri hedefleyen uygulamalar kablosuz bağlantıyı etkinleştiremez veya devre dışı bırakamaz. WifiManager.setWifiEnabled()
yöntemi her zaman false
değerini döndürür.
Kullanıcıların kablosuz bağlantıyı etkinleştirmesini ve devre dışı bırakmasını istemeniz gerekiyorsa bir ayarlar paneli kullanın.
Yapılandırılmış kablosuz ağlara doğrudan erişim kısıtlamaları
Kullanıcı gizliliğini korumak için kablosuz ağlar listesinin manuel olarak yapılandırılması, sistem uygulamaları ve cihaz politikası denetleyicileri (DPC'ler) ile sınırlıdır. Belirli bir DPC, cihaz sahibi veya profil sahibi olabilir.
Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa ve sistem uygulaması ya da DPC değilse aşağıdaki yöntemler yararlı veriler döndürmez:
getConfiguredNetworks()
yöntemi her zaman boş bir liste döndürür.- Tam sayı değeri döndüren her ağ işlemi yöntemi (
addNetwork()
veupdateNetwork()
) her zaman -1 döndürür. - Boole değeri döndüren her ağ işlemi (
removeNetwork()
,reassociate()
,enableNetwork()
,disableNetwork()
,reconnect()
vedisconnect()
) her zamanfalse
döndürür.
Android 9
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。如需 Android 9 中提供的一些主要安全增强功能的列表,请参阅 Android 版本说明。
Android 8
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 8.0 中提供的一些主要安全增强功能:
- 加密:在工作资料中增加了对撤销密钥 (evict key) 的支持。
- 验证启动:增加了 Android 启动时验证 (AVB)。支持回滚保护(用于引导加载程序)的启动时验证代码库已添加到 AOSP 中。建议提供引导加载程序支持,以便为 HLOS 提供回滚保护。建议将引导加载程序设为只能由用户通过实际操作设备来解锁。
- 锁定屏幕:增加了对使用防篡改硬件验证锁定屏幕凭据的支持。
- KeyStore:搭载 Android 8.0 及更高版本的所有设备都需要进行密钥认证。增加了 ID 认证支持,以改进零触摸注册计划。
- 沙盒:使用 Treble 计划的框架和设备特定组件之间的标准接口更紧密地对许多组件进行沙盒化处理。将 seccomp 过滤应用到了所有不信任的应用,以减少内核的攻击面。WebView 现在运行在一个独立的进程中,对系统其余部分的访问非常有限。
- 内核加固:实现了经过安全强化的 usercopy、PAN 模拟、初始化后变为只读以及 KASLR。
- 用户空间安全强化:为媒体堆栈实现了 CFI。 应用叠加层不能再遮盖系统关键窗口,并且用户可以关闭这些叠加层。
- 操作系统流式更新:在磁盘空间不足的设备上启用了更新。
- 安装未知应用:用户必须授予权限,系统才能从不是第一方应用商店的来源安装应用。
- 隐私权:对于设备上的每个应用和使用设备的每个用户,Android ID (SSAID) 都采用不同的值。对于网络浏览器应用,Widevine 客户端 ID 会针对每个应用软件包名称和网络来源返回不同的值。
net.hostname
现在为空,并且 DHCP 客户端不再发送主机名。android.os.Build.SERIAL
已被替换为Build.SERIAL
API(受到用户控制权限的保护)。改进了某些芯片组中的 MAC 地址随机分配功能。
Android 7
Her Android sürümü, kullanıcıları korumak için onlarca güvenlik geliştirmesi içerir. Android 7.0'daki önemli güvenlik geliştirmelerinden bazıları şunlardır:
- Dosya tabanlı şifreleme. Depolama alanının tamamını tek bir birim olarak şifrelemek yerine dosya düzeyinde şifreleme yapmak, cihazdaki kullanıcıları ve profilleri (ör. kişisel ve iş) daha iyi ayırır ve korur.
- Doğrudan Önyükleme. Dosya tabanlı şifreleme ile etkinleştirilen Doğrudan Başlatma, cihaz açıkken ancak kilidi açılmamışken çalar saat ve erişilebilirlik özellikleri gibi belirli uygulamaların çalışmasına olanak tanır.
- Doğrulanmış Başlatma. Güvenilir Başlatma, güvenliği ihlal edilmiş cihazların başlatılmasını önlemek için artık katı bir şekilde uygulanmaktadır. Kötü amaçlı olmayan veri bozulmalarına karşı güvenilirliği artırmak için hata düzeltmeyi destekler.
- SELinux. Güncellenen SELinux yapılandırması ve artan seccomp kapsamı, uygulama korumalı alanını daha da kilitler ve saldırı yüzeyini azaltır.
- Kitaplık yükleme sırasının rastgele belirlenmesi ve geliştirilmiş ASLR. Artan rastgelelik, bazı kod yeniden kullanma saldırılarının güvenilirliğini azaltır.
- Çekirdek güçlendirme. Çekirdek belleğinin bölümlerini salt okunur olarak işaretleyerek, çekirdeğin kullanıcı alanı adreslerine erişimini kısıtlayarak ve mevcut saldırı yüzeyini daha da azaltarak yeni çekirdekler için ek bellek koruması eklendi.
- APK imza şeması v2. Doğrulama hızını artıran ve bütünlük garantilerini güçlendiren bir dosya tamamı imza şeması kullanıma sunuldu.
- Güvenilir CA mağazası. Uygulamaların güvenli ağ trafiğine erişimini kontrol etmesini kolaylaştırmak için API düzeyi 24 ve sonraki sürümleri hedefleyen uygulamalarda, kullanıcı tarafından yüklenen sertifika yetkililerine ve Cihaz Yöneticisi API'leri aracılığıyla yüklenen sertifika yetkililerine artık varsayılan olarak güvenilmez. Ayrıca, tüm yeni Android cihazlar aynı güvenilir CA mağazasıyla birlikte gönderilmelidir.
- Ağ Güvenliği Yapılandırması'nı seçin. Ağ güvenliğini ve TLS'yi açıklayıcı bir yapılandırma dosyası aracılığıyla yapılandırın.
Android 6
Her Android sürümü, kullanıcıları korumak için onlarca güvenlik geliştirmesi içerir. Android 6.0'taki önemli güvenlik geliştirmelerinden bazıları şunlardır:
- Çalışma Zamanı İzinleri. Uygulamalar, yükleme sırasında izin almak yerine çalışma zamanında izin ister. Kullanıcılar hem M hem de M öncesi uygulamalar için izinleri etkinleştirip devre dışı bırakabilir.
- Doğrulanmış Başlatma. Telefonun bootloader'dan işletim sistemine kadar sağlıklı olduğundan emin olmak için yürütme işleminden önce sistem yazılımında bir dizi kriptografik kontrol gerçekleştirilir.
- Donanımdan İzole Güvenlik. Anahtarları çekirdek güvenliği ihlallerine ve/veya yerel fiziksel saldırılara karşı korumak için Parmak İzi API'si, Kilit Ekranı, Cihaz Şifreleme ve İstemci Sertifikaları tarafından kullanılan yeni Donanım Soyutlama Katmanı (HAL)
- Parmak izleri. Artık cihazların kilidi tek bir dokunuşla açılabilir. Geliştiriciler, şifreleme anahtarlarını kilitlemek ve kilidini açmak için parmak izlerini kullanmak amacıyla yeni API'lerden de yararlanabilir.
- SD Kart Kullanımı. Çıkarılabilir medya, bir cihaza eklenebilir ve uygulama yerel verileri, fotoğraflar, videolar vb. için kullanılabilir depolama alanını genişletebilir ancak yine de blok düzeyinde şifreleme ile korunabilir.
- Net Metin Trafiği. Geliştiriciler, uygulamalarının açık metin kullanmadığından emin olmak için yeni bir StrictMode kullanabilir.
- Sistem Güçlendirme. SELinux tarafından zorunlu kılınan politikalar aracılığıyla sistemin güçlendirilmesi. Bu, kullanıcılar arasında daha iyi izolasyon, IOCTL filtreleme, açık hizmet tehdidini azaltma, SELinux alanlarının daha da sıkılaştırılması ve son derece sınırlı /proc erişimi sunar.
- USB Erişim Denetimi: Kullanıcıların, USB'nin telefondaki dosyalara, depolama alanına veya diğer işlevlere erişmesine izin verdiğini onaylamaları gerekir. Varsayılan ayar artık yalnızca ödeme olarak belirlendi. Depolama alanına erişim için kullanıcının açık onay vermesi gerekir.
Android 5
5,0
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 5.0:
- Encrypted by default. On devices that ship with L out-of-the-box, full disk encryption is enabled by default to improve protection of data on lost or stolen devices. Devices that update to L can be encrypted in Settings > Security .
- Improved full disk encryption. The user password is
protected against brute-force attacks using
scrypt
and, where available, the key is bound to the hardware keystore to prevent off-device attacks. As always, the Android screen lock secret and the device encryption key are not sent off the device or exposed to any application. - Android sandbox reinforced with SELinux . Android now requires SELinux in enforcing mode for all domains. SELinux is a mandatory access control (MAC) system in the Linux kernel used to augment the existing discretionary access control (DAC) security model. This new layer provides additional protection against potential security vulnerabilities.
- Smart Lock. Android now includes trustlets that provide more flexibility for unlocking devices. For example, trustlets can allow devices to be unlocked automatically when close to another trusted device (through NFC, Bluetooth) or being used by someone with a trusted face.
- Multi user, restricted profile, and guest modes for phones and tablets. Android now provides for multiple users on phones and includes a guest mode that can be used to provide easy temporary access to your device without granting access to your data and apps.
- Updates to WebView without OTA. WebView can now be updated independent of the framework and without a system OTA. This allows for faster response to potential security issues in WebView.
- Updated cryptography for HTTPS and TLS/SSL. TLSv1.2 and TLSv1.1 is now enabled, Forward Secrecy is now preferred, AES-GCM is now enabled, and weak cipher suites (MD5, 3DES, and export cipher suites) are now disabled. See https://developer.android.com/reference/javax/net/ssl/SSLSocket.html for more details.
- non-PIE linker support removed. Android now requires all dynamically linked executables to support PIE (position-independent executables). This enhances Android's address space layout randomization (ASLR) implementation.
- FORTIFY_SOURCE improvements. The following libc
functions now implement FORTIFY_SOURCE protections:
stpcpy()
,stpncpy()
,read()
,recvfrom()
,FD_CLR()
,FD_SET()
, andFD_ISSET()
. This provides protection against memory-corruption vulnerabilities involving those functions. - Security Fixes. Android 5.0 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members, and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.
Android 4 ve önceki sürümler
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.4 中提供的一些安全增强功能:
- 通过 SELinux 得到增强的 Android 沙盒。 Android 现在以强制模式使用 SELinux。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强基于自主访问控制 (DAC) 的现有安全模型。 这为防范潜在的安全漏洞提供了额外的保护屏障。
- 按用户应用 VPN。 在多用户设备上,现在按用户应用 VPN。 这样一来,用户就可以通过一个 VPN 路由所有网络流量,而不会影响使用同一设备的其他用户。
- AndroidKeyStore 中的 ECDSA 提供程序支持。 Android 现在有一个允许使用 ECDSA 和 DSA 算法的密钥库提供程序。
- 设备监测警告。 如果有任何可能允许监测加密网络流量的证书添加到设备证书库中,Android 都会向用户发出警告。
- FORTIFY_SOURCE。 Android 现在支持 FORTIFY_SOURCE 第 2 级,并且所有代码在编译时都会受到这些保护。FORTIFY_SOURCE 已得到增强,能够与 Clang 配合使用。
- 证书锁定。 Android 4.4 能够检测安全的 SSL/TLS 通信中是否使用了欺诈性 Google 证书,并且能够阻止这种行为。
- 安全修复程序。 Android 4.4 中还包含针对 Android 特有漏洞的修复程序。 有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开源项目中提供了相应的修复程序。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复程序。
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.3 中提供的一些安全增强功能:
- 通过 SELinux 得到增强的 Android 沙盒。此版本利用 Linux 内核中的 SELinux 强制访问权限控制系统 (MAC) 增强了 Android 沙盒。SELinux 强化功能(用户和开发者看不到它)可提高现有 Android 安全模型的可靠性,同时与现有应用保持兼容。为了确保持续兼容,此版本允许以宽容模式使用 SELinux。此模式会记录所有违反政策的行为,但不会中断应用,也不会影响系统行为。
- 没有
setuid
或setgid
程序。针对 Android 系统文件添加了对文件系统功能的支持,并移除了所有setuid
或setgid
程序。这可以减小 Root 攻击面,并降低出现潜在安全漏洞的可能性。 - ADB 身份验证。从 Android 4.2.2 起,开始使用 RSA 密钥对为 ADB 连接进行身份验证。这可以防止攻击者在实际接触到设备的情况下未经授权使用 ADB。
- 限制 Android 应用执行 SetUID 程序。
/system
分区现在针对 Zygote 衍生的进程装载了 nosuid,以防止 Android 应用执行setuid
程序。这可以减小 root 攻击面,并降低出现潜在安全漏洞的可能性。 - 功能绑定。在执行应用之前,Android Zygote 和 ADB 现在会先使用
prctl(PR_CAPBSET_DROP)
舍弃不必要的功能。这可以防止 Android 应用和从 shell 启动的应用获取特权功能。 - AndroidKeyStore 提供程序。Android 现在有一个允许应用创建专用密钥的密钥库提供程序。该程序可以为应用提供一个用于创建或存储私钥的 API,其他应用将无法使用这些私钥。
- KeyChain
isBoundKeyAlgorithm
。Keychain API 现在提供了一种方法 (isBoundKeyType
),可让应用确认系统级密钥是否已绑定到设备的硬件信任根。该方法提供了一个用于创建或存储私钥的位置,即使发生 root 权限被窃取的情况,这些私钥也无法从设备中导出。 NO_NEW_PRIVS
。Android Zygote 现在会在执行应用代码之前使用prctl(PR_SET_NO_NEW_PRIVS)
禁止添加新权限。这可以防止 Android 应用执行可通过 execve 提升权限的操作。(此功能需要使用 3.5 或更高版本的 Linux 内核)。FORTIFY_SOURCE
增强。在 Android x86 和 MIPS 上启用了FORTIFY_SOURCE
,并增强了strchr()
、strrchr()
、strlen()
和umask()
调用。这可以检测潜在的内存损坏漏洞或没有结束符的字符串常量。- 重定位保护。针对静态关联的可执行文件启用了只读重定位 (relro) 技术,并移除了 Android 代码中的所有文本重定位技术。这可以纵深防御潜在的内存损坏漏洞。
- 经过改进的 EntropyMixer。除了定期执行混合操作之外,EntropyMixer 现在还会在关机或重新启动时写入熵。这样一来,便可以保留设备开机时生成的所有熵,而这对于配置之后立即重新启动的设备来说尤其有用。
- 安全修复程序。Android 4.3 中还包含针对 Android 特有漏洞的修复。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复。
Android provides a multi-layered security model described in the Android Security Overview. Each update to Android includes dozens of security enhancements to protect users. The following are some of the security enhancements introduced in Android 4.2:
- App verification: Users can choose to enable Verify Apps and have apps screened by an app verifier, prior to installation. App verification can alert the user if they try to install an app that might be harmful; if an app is especially bad, it can block installation.
- More control of premium SMS: Android provides a notification if an app attempts to send SMS to a short code that uses premium services that might cause additional charges. The user can choose whether to allow the app to send the message or block it.
- Always-on VPN: VPN can be configured so that apps won't have access to the network until a VPN connection is established. This prevents apps from sending data across other networks.
- Certificate pinning: The Android core libraries now support certificate pinning. Pinned domains receive a certificate validation failure if the certificate doesn't chain to a set of expected certificates. This protects against possible compromise of certificate authorities.
- Improved display of Android permissions: Permissions are organized into groups that are more easily understood by users. During review of the permissions, the user can click on the permission to see more detailed information about the permission.
- installd hardening: The
installd
daemon does not run as the root user, reducing potential attack surface for root privilege escalation. - init script hardening: init scripts now apply
O_NOFOLLOW
semantics to prevent symlink related attacks. FORTIFY_SOURCE
: Android now implementsFORTIFY_SOURCE
. This is used by system libraries and apps to prevent memory corruption.- ContentProvider default configuration: Apps that target API
level 17 have
export
set tofalse
by default for each Content Provider, reducing default attack surface for apps. - Cryptography: Modified the default implementations of SecureRandom and Cipher.RSA to use OpenSSL. Added SSL Socket support for TLSv1.1 and TLSv1.2 using OpenSSL 1.0.1
- Security fixes: Upgraded open source libraries with security fixes include WebKit, libpng, OpenSSL, and LibXML. Android 4.2 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.
Android, Android Güvenlik'e Genel Bakış bölümünde açıklanan çok katmanlı bir güvenlik modeli sunar. Android'deki her güncelleme, kullanıcıları korumak için onlarca güvenlik iyileştirmesi içerir. Android 1.5 ile 4.1 sürümlerinde kullanıma sunulan güvenlik geliştirmelerinden bazıları şunlardır:
- Android 1.5
- Yığın arabelleğinin taşmasını önlemek için ProPolice (-fstack-protector)
- Tam sayı taşmalarını azaltmak için safe_iop
- Çift free() güvenlik açıklarını ve parça birleştirme saldırılarını önlemek için OpenBSD dlmalloc'a eklenen uzantılar. Öğe birleştirme saldırıları, yığın bozulmasından yararlanmanın yaygın bir yoludur.
- Bellek ayırma sırasında tam sayı taşmalarını önlemek için OpenBSD calloc
- Android 2.3
- Biçim dizesi güvenlik açıklarına karşı korumalar (-Wformat-security -Werror=format-security)
- Yığın ve yığınta kod yürütmeyi önlemek için donanım tabanlı No eXecute (NX)
- Boş işaretçi referans verme ayrıcalık yükseltmesini azaltmak için Linux mmap_min_addr (Android 4.1'de daha da geliştirildi)
- Android 4.0
- Bellekteki anahtar konumları rastgele hale getirmek için adres alanı düzeni rastgeleleştirme (ASLR)
- Android 4.1
- PIE (Konumdan Bağımsız Yürütülebilir) desteği
- Salt okunur taşımalar / anında bağlama (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict etkin (çekirdek adreslerinin sızmasını önler)
- kptr_restrict etkin (çekirdek adreslerinin sızmasını önler)