O Android está sempre melhorando as ofertas e as capacidades de segurança. Confira as listas de melhorias por versão no painel de navegação à esquerda.
Android 14
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 14:
- Hardware-assisted AddressSanitizer (HWASan), introduced in Android 10, is a memory error detection tool similar to AddressSanitizer. Android 14 brings significant improvements to HWASan. Learn how it helps prevent bugs from making it into Android releases, HWAddressSanitizer
- In Android 14, starting with apps that share location data with third-parties, the system runtime permission dialog now includes a clickable section that highlights the app's data-sharing practices, including information such as why an app may decide to share data with third parties.
- Android 12 introduced an option to disable 2G support at the modem level, which protects users from the inherent security risk from 2G's obsolete security model. Recognizing how critical disabling 2G could be for enterprise customers, Android 14 enables this security feature in Android Enterprise, introducing support for IT admins to restrict the ability of a managed device to downgrade to 2G connectivity.
- Added support to reject null-ciphered cellular connections, ensuring that circuit-switched voice and SMS traffic is always encrypted and protected from passive over-the-air interception. Learn more about Android's program to harden cellular connectivity.
- Added support for multiple IMEIs
- Since Android 14, AES-HCTR2 is the preferred mode of filenames encryption for devices with accelerated cryptography instructions.
- Cellular connectivity
- Documentation added for Android Safety Center
- If your app targets Android 14 and uses Dynamic Code Loading (DCL), all dynamically-loaded files must be marked as read-only. Otherwise, the system throws an exception. We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.
Check out our full AOSP release notes and the Android Developer features and changes list.
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
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Para conferir uma lista de algumas das principais melhorias de segurança disponíveis no Android 11, consulte as Notas da versão do Android.
Android 10
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. O Android 10 inclui várias melhorias de segurança e privacidade. Consulte as Notas da versão do Android 10 para conferir uma lista completa de mudanças no Android 10.
Segurança
BoundsSanitizer
O Android 10 implanta o BoundsSanitizer (BoundSan) no Bluetooth e nos codecs. O BoundSan usa o limpador de limites do UBSan. Essa atenuação é ativada por módulo. Ela ajuda a proteger os componentes críticos do Android e não pode ser desativada. O BoundSan está ativado nos seguintes codecs:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
Memória somente de execução
Por padrão, as seções de código executável dos binários do sistema AArch64 são marcadas como somente execução (ilegíveis) para reduzir ainda mais os ataques de reutilização de just-in-time. O código que combina dados e código e o código que inspeciona intencionalmente essas seções (sem primeiro remapear os segmentos de memória como legíveis) não funcionam mais. Os apps que têm um SDK de destino do Android 10 (nível 29 da API ou mais recente) serão afetados se o app tentar ler seções de código de bibliotecas do sistema habilitadas para memória somente de execução (XOM, na sigla em inglês) na memória sem primeiro marcar a seção como legível.
Acesso estendido
O mecanismo de "Agentes de confiança" (usado por mecanismos de autenticação terciários, como o Smart Lock) só pode estender o desbloqueio no Android 10. Os agentes de confiança não podem mais desbloquear um dispositivo bloqueado e só podem manter um dispositivo desbloqueado por, no máximo, quatro horas.
Autenticação facial
A autenticação facial permite que os usuários desbloqueiem os dispositivos simplesmente olhando para a frente deles. O Android 10 oferece suporte a uma nova pilha de autenticação facial que pode processar de forma segura os frames da câmera, preservando a segurança e privacidade durante a autenticação facial no hardware com suporte. O Android 10 também fornece uma maneira fácil para que implementações seguras permitam a integração de apps para transações, como para internet banking ou outros serviços.
Limpeza de estouro de números inteiros
O Android 10 ativa a Limpeza de estouro de números inteiros (IntSan) em codecs de software. O desempenho da reprodução precisa ser aceitável para qualquer codec que não tenha suporte do hardware do dispositivo. O IntSan está ativado nos seguintes codecs:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
Componentes modulares do sistema
O Android 10 modulariza alguns componentes do sistema Android e permite que eles sejam atualizados fora do ciclo normal de lançamento do Android. Estes são alguns dos módulos:
- Android Runtime
- Conscrypt
- Resolvedor DNS
- DocumentsUI
- ExtServices
- Media
- ModuleMetadata
- Networking
- PermissionController
- Dados de fuso horário
OEMCrypto
O Android 10 usa a versão 15 da API OEMCrypto.
Scudo
O Scudo é um alocador de memória dinâmico no modo de usuário projetado para ser mais resiliente contra vulnerabilidades relacionadas a heap. Ele fornece as primitivas padrão de alocação e desalocação de C, bem como as primitivas de C++.
ShadowCallStack
ShadowCallStack
(SCS) é um modo de instrumentação
LLVM que protege contra substituições de endereço de retorno, como
overflows de buffer de pilha, salvando o endereço de retorno de uma função em uma instância
ShadowCallStack alocada separadamente no prólogo da função de
funções não-folha e carregando o endereço de retorno da
instância ShadowCallStack no epílogo da função.
WPA3 e Wi-Fi Enhanced Open
O Android 10 adiciona suporte aos padrões de segurança Wi-Fi Protected Access 3 (WPA3) e Wi-Fi Enhanced Open para oferecer melhor privacidade e robustez contra ataques conhecidos.
Privacidade
Acesso ao app ao segmentar o Android 9 ou versões anteriores
Se o app for executado no Android 10 ou versões mais recentes, mas for direcionado ao Android 9 (API de nível 28) ou versões anteriores, o comportamento a seguir será aplicado:
- Se o app declarar um elemento
<uses-permission>paraACCESS_FINE_LOCATIONouACCESS_COARSE_LOCATION, o sistema vai adicionar automaticamente um elemento<uses-permission>paraACCESS_BACKGROUND_LOCATIONdurante a instalação. - Se o app solicitar
ACCESS_FINE_LOCATIONouACCESS_COARSE_LOCATION, o sistema vai adicionarACCESS_BACKGROUND_LOCATIONautomaticamente à solicitação.
Restrições de atividade em segundo plano
A partir do Android 10, o sistema impõe restrições
ao início de atividades em segundo plano. Essa mudança de comportamento ajuda
a minimizar as interrupções para o usuário e dá a ele mais controle sobre o que é
exibido na tela. Desde que seu app inicie atividades como resultado direto
da interação do usuário, é provável que ele não seja afetado por essas restrições.
Para saber mais sobre a alternativa recomendada para iniciar atividades em
segundo plano, consulte o guia sobre como alertar
os usuários sobre eventos que dependem de horários no seu app.
Metadados da câmera
O Android 10 altera a amplitude das informações que o método getCameraCharacteristics()
retorna por padrão. Especificamente, o app precisa ter permissão da CAMERA
para acessar metadados possivelmente específicos do dispositivo que estão
incluídos no valor de retorno desse método.
Para saber mais sobre essas mudanças, consulte a seção sobre os campos
da câmera que exigem permissão.
Dados da área de transferência
A menos que seu app seja o Editor de método de entrada (IME, na sigla em inglês) padrão ou que ele seja o app em foco no momento, ele não poderá acessar dados da área de transferência no Android 10 ou versões mais recentes.
Localização do dispositivo
Para oferecer compatibilidade com o maior controle que os usuários têm sobre o acesso de um app às
informações de localização, o Android 10 introduz a permissão
ACCESS_BACKGROUND_LOCATION.
Ao contrário das permissões ACCESS_FINE_LOCATION
e ACCESS_COARSE_LOCATION, a permissão ACCESS_BACKGROUND_LOCATION só afeta
o acesso de um app à localização quando ele é executado em segundo plano. A menos que uma das seguintes
condições seja atendida, considera-se que o app está acessando a localização em segundo plano:
- Uma atividade pertencente ao app está visível.
- O app está executando um serviço em primeiro plano que declarou um tipo de serviço
em primeiro plano de
location.
Para declarar o tipo de serviço em primeiro plano para um serviço no app, defina atargetSdkVersionoucompileSdkVersiondo app como29ou mais recente. Saiba mais sobre como os serviços em primeiro plano podem continuar ações iniciadas pelo usuário que exigem acesso à localização.
Armazenamento externo
Por padrão, os apps direcionados ao Android 10 e versões mais recentes têm acesso com escopo ao armazenamento externo ou armazenamento com escopo. Esses apps podem ver os seguintes tipos de arquivo em um dispositivo de armazenamento externo sem precisar solicitar permissões de usuário relacionadas ao armazenamento:
- Arquivos no diretório específico do app, acessados usando
getExternalFilesDir(). - Fotos, vídeos e clipes de áudio que o app criou no armazenamento de mídia.
Para saber mais sobre o armazenamento com escopo e como compartilhar, acessar e modificar arquivos salvos em dispositivos de armazenamento externo, consulte os guias sobre como gerenciar arquivos no armazenamento externo e acessar e modificar arquivos de mídia.
Randomização de endereço MAC
Em dispositivos com o Android 10 ou versões mais recentes, o sistema transmite endereços MAC
aleatórios por padrão.
Se o app processa um caso de uso corporativo, a
plataforma oferece APIs para várias operações relacionadas aos endereços MAC:
- Conseguir um endereço MAC aleatório: os apps do proprietário do dispositivo e
do proprietário do perfil podem recuperar o endereço MAC aleatório atribuído a uma
rede específica chamando
getRandomizedMacAddress(). - Conseguir o endereço MAC real de fábrica:os apps do proprietário do dispositivo podem
recuperar o endereço MAC real do hardware de um dispositivo chamando
getWifiMacAddress(). Esse método é útil para rastrear grupos de dispositivos.
Identificadores de dispositivo não reconfiguráveis
A partir do Android 10, os apps precisam ter a
permissão privilegiada READ_PRIVILEGED_PHONE_STATE para acessar
os identificadores não reconfiguráveis do dispositivo, que incluem o IMEI e
o número de série.
BuildTelephonyManager
Se o app não tiver permissão e ainda assim você tentar solicitar informações sobre identificadores não reconfiguráveis, a resposta da plataforma mudará de acordo com a versão do SDK à qual ele está destinado:
- Se o app for direcionado ao Android 10 ou mais recente, uma
SecurityExceptionocorrerá. - Se o app for destinado ao Android 9 (API de nível 28) ou versões anteriores, o método retornará
nullou dados de marcadores caso o app tenha a permissãoREAD_PHONE_STATE. Caso contrário, umaSecurityExceptionvai ocorrer.
Reconhecimento de atividade física
O Android 10 apresenta a permissão de ambiente de execução android.permission.ACTIVITY_RECOGNITION
para apps que precisam detectar a contagem de passos do usuário ou
classificar as atividades físicas dele, como caminhadas, passeios de bicicleta ou em um
veículo. Isso foi projetado para permitir que os usuários vejam nas configurações. como os dados do sensor do dispositivo são usados
Algumas bibliotecas do Google Play Services, como a API Activity
Recognition e a API Google
Fit, não fornecem resultados, a menos que o usuário conceda essa
permissão ao app.
Os únicos sensores
integrados no dispositivo que exigem que você declare essa permissão são os sensores do contador
de passos e do detector
de passos.
Se o app for destinado ao Android 9 (nível 28 da API) ou versões anteriores, o sistema
concederá automaticamente a permissão android.permission.ACTIVITY_RECOGNITION
ao app, conforme necessário, se ele atender a cada uma das seguintes
condições:
- O arquivo de manifesto inclui a
permissão
com.google.android.gms.permission.ACTIVITY_RECOGNITION. - O arquivo de manifesto não inclui a
permissão
android.permission.ACTIVITY_RECOGNITION.
Se o sistema conceder automaticamente a
permissão android.permission.ACTIVITY_RECOGNITION, o app
vai manter a permissão depois que você atualizar o app para o Android 10. No entanto,
o usuário pode revogar essa permissão a qualquer momento nas configurações do sistema.
Restrições do sistema de arquivos /proc/net
Em dispositivos com o Android 10 ou versões mais recentes, os apps não podem acessar
/proc/net, que inclui informações sobre o estado da rede
de um dispositivo. Os apps que precisam de acesso a essas informações, como as VPNs, precisam usar a classe
NetworkStatsManager
ou
ConnectivityManager.
Grupos de permissões removidos da IU
A partir do Android 10, os apps não podem pesquisar como as permissões são agrupadas na interface.
Remoção da afinidade de contatos
A partir do Android 10, a plataforma não monitora as informações de afinidade
de contatos. Como resultado, se o app realizar uma pesquisa nos contatos do usuário,
os resultados não serão ordenados por frequência de interação.
O guia sobre ContactsProvider contém uma notificação descrevendo
os campos
e métodos específicos que estão obsoletos em todos os dispositivos a partir do Android 10.
Acesso restrito ao conteúdo da tela
Para proteger o conteúdo da tela dos usuários, o Android 10 impede o acesso silencioso ao
conteúdo da tela do dispositivo alterando o escopo das permissões
READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT e
CAPTURE_SECURE_VIDEO_OUTPUT. A partir do Android 10, essas
permissões são apenas para acesso por assinatura.
Os apps que precisam acessar o conteúdo da tela do dispositivo precisam usar a
API
MediaProjection, que exibe um aviso solicitando o consentimento do usuário.
Número de série do dispositivo USB
Se o app for destinado ao Android 10 ou versões mais recentes, ele só poderá ler o número de série
depois de receber autorização do usuário para ter acesso ao dispositivo
ou acessório USB.
Para saber mais sobre como trabalhar com dispositivos USB, consulte o guia sobre como configurar
hosts USB.
Wi-Fi
Os apps direcionados ao Android 10 ou versões mais recentes não podem ativar ou desativar o Wi-Fi. O método
WifiManager.setWifiEnabled()
sempre retorna false.
Se você precisar solicitar que os usuários ativem e desativem o Wi-Fi, use um painel
de configurações.
Restrições ao acesso direto a redes Wi-Fi configuradas
Para proteger a privacidade do usuário, a configuração manual da lista de redes Wi-Fi
está restrita aos apps do sistema e a controladores de política
de dispositivo (DPCs, na sigla em inglês). Um determinado DPC pode ser o proprietário do dispositivo ou do
perfil.
Se o app for destinado ao Android 10 ou versões mais recentes e não for um app do sistema ou um
DPC, os métodos a seguir não vão retornar dados úteis:
- O método
getConfiguredNetworks()sempre retorna uma lista vazia. - Todo método de operação de rede que retorna um valor inteiro (
addNetwork()eupdateNetwork()) sempre retorna -1. - Cada operação de rede que retorna um valor booleano (
removeNetwork(),reassociate(),enableNetwork(),disableNetwork(),reconnect()edisconnect()) sempre retornafalse.
Android 9
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Para conferir uma lista de algumas das principais melhorias de segurança disponíveis no Android 9, consulte as Notas da versão do Android.
Android 8
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira algumas das principais melhorias de segurança disponíveis no Android 8.0:
- Criptografia. Foi adicionado suporte para a exclusão de chaves no perfil de trabalho.
- Inicialização verificada. Adicionamos a inicialização verificada do Android (AVB). O código-base da inicialização verificada oferece suporte à proteção de reversão para uso em carregador de inicialização adicionado ao AOSP. Recomendar suporte ao carregador de inicialização para proteção contra reversão para o HLOS. Recomendar que os gerenciadores de inicialização só possam ser desbloqueados com a interação física do usuário com o dispositivo.
- Tela de bloqueio. Foi adicionado suporte ao uso de hardware resistente a adulterações para verificar a credencial da tela de bloqueio.
- KeyStore. Foi necessário o atestado de chave para todos os dispositivos enviados com o Android 8.0 e versões mais recentes. Foi adicionado suporte ao atestado de ID para melhorar o registro sem toque.
- Como colocar no sandbox. Mais sandbox rígido para muitos componentes usando a interface padrão do Project Treble entre o framework e os componentes específicos do dispositivo. A filtragem seccomp foi aplicada a todos os apps não confiáveis para reduzir a superfície de ataque do kernel. A WebView agora é executada em um processo isolado com acesso muito limitado ao restante do sistema.
- Aumento da proteção do kernel. Implementação de usercopy reforçado, emulação de PAN, somente leitura após a inicialização e KASLR.
- Aumento da proteção do espaço do usuário. Implementação da CFI para a pilha de mídia. As sobreposições de apps não podem mais cobrir janelas críticas do sistema, e os usuários têm uma maneira de dispensá-las.
- Atualização do sistema operacional de streaming. Atualizações foram ativadas em dispositivos com pouco espaço em disco.
- Instalar apps desconhecidos. Os usuários precisam conceder permissão para instalar apps de uma fonte que não seja uma app store própria.
- Privacidade. O ID do Android (SSAID) tem um valor diferente para
cada app e usuário no dispositivo. Para apps de navegador da Web, o ID do cliente do Widevine
retorna um valor diferente para cada nome de pacote de app e origem da Web.
O
net.hostnameagora está vazio, e o cliente DHCP não envia mais um nome de host.android.os.Build.SERIALfoi substituído pela APIBuild.SERIAL, que é protegida por uma permissão controlada pelo usuário. Melhoria na randomização de endereços MAC em alguns chipsets.
Android 7
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 7.0:
- File-based encryption. Encrypting at the file level, instead of encrypting the entire storage area as a single unit, better isolates and protects individual users and profiles (such as personal and work) on a device.
- Direct Boot. Enabled by file-based encryption, Direct Boot allows certain apps such as alarm clock and accessibility features to run when device is powered on but not unlocked.
- Verified Boot. Verified Boot is now strictly enforced to prevent compromised devices from booting; it supports error correction to improve reliability against non-malicious data corruption.
- SELinux. Updated SELinux configuration and increased seccomp coverage further locks down the Application Sandbox and reduces attack surface.
- Library load-order randomization and improved ASLR. Increased randomness makes some code-reuse attacks less reliable.
- Kernel hardening. Added additional memory protection for newer kernels by marking portions of kernel memory as read-only, restricting kernel access to userspace addresses and further reducing the existing attack surface.
- APK signature scheme v2. Introduced a whole-file signature scheme that improves verification speed and strengthens integrity guarantees.
- Trusted CA store. To make it easier for apps to control access to their secure network traffic, user-installed certificate authorities and those installed through Device Admin APIs are no longer trusted by default for apps targeting API Level 24+. Additionally, all new Android devices must ship with the same trusted CA store.
- Network Security Config. Configure network security and TLS through a declarative configuration file.
Android 6
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 6.0:
- Runtime Permissions. Apps request permissions at runtime instead of being granted at App install time. Users can toggle permissions on and off for both M and pre-M apps.
- Verified Boot. A set of cryptographic checks of system software are conducted prior to execution to ensure the phone is healthy from the bootloader all the way up to the operating system.
- Hardware-Isolated Security. New Hardware Abstraction Layer (HAL) used by Fingerprint API, Lockscreen, Device Encryption, and Client Certificates to protect keys against kernel compromise and/or local physical attacks
- Fingerprints. Devices can now be unlocked with just a touch. Developers can also take advantage of new APIs to use fingerprints to lock and unlock encryption keys.
- SD Card Adoption. Removable media can be adopted to a device and expand available storage for app local data, photos, videos, etc., but still be protected by block-level encryption.
- Clear Text Traffic. Developers can use a new StrictMode to make sure their app doesn't use cleartext.
- System Hardening. Hardening of the system via policies enforced by SELinux. This offers better isolation between users, IOCTL filtering, reduce threat of exposed services, further tightening of SELinux domains, and extremely limited /proc access.
- USB Access Control: Users must confirm to allow USB access to files, storage, or other functionality on the phone. Default is now charge only with access to storage requiring explicit approval from the user.
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
scryptand, 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 e versões anteriores
Every Android release includes dozens of security enhancements to protect users. The following are some of the security enhancements available in Android 4.4:
- Android sandbox reinforced with SELinux. Android now uses SELinux in enforcing mode. SELinux is a mandatory access control (MAC) system in the Linux kernel used to augment the existing discretionary access control (DAC) based security model. This provides additional protection against potential security vulnerabilities.
- Per User VPN. On multi-user devices, VPNs are now applied per user. This can allow a user to route all network traffic through a VPN without affecting other users on the device.
- ECDSA Provider support in AndroidKeyStore. Android now has a keystore provider that allows use of ECDSA and DSA algorithms.
- Device Monitoring Warnings. Android provides users with a warning if any certificate has been added to the device certificate store that could allow monitoring of encrypted network traffic.
- FORTIFY_SOURCE. Android now supports FORTIFY_SOURCE level 2, and all code is compiled with these protections. FORTIFY_SOURCE has been enhanced to work with clang.
- Certificate Pinning. Android 4.4 detects and prevents the use of fraudulent Google certificates used in secure SSL/TLS communications.
- Security Fixes. Android 4.4 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.
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira a seguir algumas das melhorias de segurança disponíveis no Android 4.3:
- Sandbox do Android reforçado com o SELinux. Esta versão fortalece o sandbox do Android usando o sistema de controle de acesso obrigatório (MAC) do SELinux no kernel do Linux. O reforço do SELinux é invisível para usuários e desenvolvedores e aumenta a robustez do modelo de segurança do Android, mantendo a compatibilidade com os apps atuais. Para garantir a compatibilidade contínua, essa versão permite o uso do SELinux em um modo permissivo. Esse modo registra todas as violações de políticas, mas não quebra apps nem afeta o comportamento do sistema.
- Nenhum programa
setuidousetgid. Foi adicionado suporte a recursos do sistema de arquivos aos arquivos do sistema Android e todos os programassetuidousetgidforam removidos. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança. - Autenticação do ADB. A partir do Android 4.2.2, as conexões com o ADB são autenticadas com um par de chaves RSA. Isso impede o uso não autorizado do ADB quando o invasor tem acesso físico a um dispositivo.
- Restringir o Setuid de apps Android.
A partição
/systemagora é montada com o flag nosuid para processos gerados por zigotos, impedindo que apps Android executem programassetuid. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança. - Limite de capacidade.
O zygote do Android e o ADB agora usam
prctl(PR_CAPBSET_DROP)para descartar recursos desnecessários antes de executar apps. Isso impede que apps Android e apps iniciados pelo shell adquiram recursos privilegiados. - Provedor AndroidKeyStore. O Android agora tem um provedor de keystore que permite que os apps criem chaves de uso exclusivo. Isso fornece aos apps uma API para criar ou armazenar chaves privadas que não podem ser usadas por outros apps.
- KeyChain
isBoundKeyAlgorithm. A API Keychain agora oferece um método (isBoundKeyType) que permite que os apps confirmem que as chaves do sistema estão vinculadas a uma raiz de hardware confiável para o dispositivo. Isso fornece um local para criar ou armazenar chaves privadas que não podem ser exportadas do dispositivo, mesmo em caso de comprometimento da raiz. NO_NEW_PRIVS. O zygote do Android agora usaprctl(PR_SET_NO_NEW_PRIVS)para bloquear a adição de novos privilégios antes da execução do código do app. Isso impede que os apps Android realizem operações que podem elevar privilégios pelo execve. Isso requer a versão 3.5 ou mais recente do kernel do Linux.- Melhorias no
FORTIFY_SOURCE.FORTIFY_SOURCEfoi ativado no Android x86 e MIPS e foram fortalecidas as chamadasstrchr(),strrchr(),strlen()eumask(). Isso pode detectar possíveis vulnerabilidades de corrupção de memória ou constantes de string não terminadas. - Proteções de realocação. Relocações somente leitura (relro) foram ativadas para executáveis vinculados de forma estática e todas as relocalizações de texto foram removidas do código do Android. Isso fornece uma defesa em profundidade contra possíveis vulnerabilidades de corrupção de memória.
- Melhorias no EntropyMixer. O EntropyMixer agora grava entropia no desligamento ou reinicialização, além de misturas periódicas. Isso permite a retenção de toda a entropia gerada enquanto os dispositivos estão ligados, e é especialmente útil para dispositivos reiniciados imediatamente após o provisionamento.
- Correções de segurança. O Android 4.3 também inclui correções de vulnerabilidades específicas do Android. Foram fornecidas informações sobre essas vulnerabilidades aos membros do Open Handset Alliance, e as correções estão disponíveis no Android Open Source Project. Para melhorar a segurança, alguns dispositivos com versões anteriores do Android também podem incluir essas correções.
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
installddaemon does not run as the root user, reducing potential attack surface for root privilege escalation. - init script hardening: init scripts now apply
O_NOFOLLOWsemantics 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
exportset tofalseby 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.
O Android oferece um modelo de segurança em várias camadas, descrito na Visão geral da segurança do Android. Cada atualização do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira a seguir algumas das melhorias de segurança introduzidas nas versões 1.5 a 4.1 do Android:
- Android 1.5
- ProPolice para evitar estouro de buffer de pilha (-fstack-protector)
- safe_iop para reduzir os overflows de números inteiros
- Extensões para o dlmalloc do OpenBSD para evitar vulnerabilidades de free() duplo e evitar ataques de consolidação de blocos. Os ataques de consolidação de blocos são uma maneira comum de explorar a corrupção de heap.
- calloc do OpenBSD para evitar overflows de números inteiros durante a alocação de memória
- Android 2.3
- Proteções contra vulnerabilidades de string de formato (-Wformat-security -Werror=format-security)
- Never eXecute (NX) baseado em hardware para impedir a execução de código na pilha e no heap
- mmap_min_addr do Linux para mitigar a escalada de privilégio de referência de ponteiro nulo (melhorada no Android 4.1)
- Android 4.0
- Address Space Layout Randomization (ASLR) para gerar locais de chave aleatórios na memória
- Android 4.1
- Suporte a PIE (executável independente de posição)
- Relocalizações somente leitura / vinculação imediata (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict ativado (evita o vazamento de endereços do kernel)
- kptr_restrict ativado (evita o vazamento de endereços do kernel)