Melhorias de segurança

O Android melhora continuamente suas capacidades e ofertas de segurança. Veja as listas de melhorias por lançamento na navegação à esquerda.

Andróide 14

Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Aqui estão alguns dos principais aprimoramentos de segurança disponíveis no Android 14:

  • O AddressSanitizer assistido por hardware (HWASan), introduzido no Android 10, é uma ferramenta de detecção de erros de memória semelhante ao AddressSanitizer . O Android 14 traz melhorias significativas ao HWASan. Saiba como isso ajuda a evitar que bugs cheguem às versões do Android, HWAddressSanitizer
  • No Android 14, começando com apps que compartilham dados de localização com terceiros, a caixa de diálogo de permissão de tempo de execução do sistema agora inclui uma seção clicável que destaca as práticas de compartilhamento de dados do app, incluindo informações como por que um app pode decidir compartilhar dados com terceiros .
  • O Android 12 introduziu uma opção para desativar o suporte 2G no nível do modem, o que protege os usuários do risco de segurança inerente ao modelo de segurança obsoleto do 2G. Reconhecendo o quão crítica a desativação do 2G pode ser para clientes corporativos, o Android 14 habilita esse recurso de segurança no Android Enterprise, introduzindo suporte para administradores de TI restringirem a capacidade de um dispositivo gerenciado fazer downgrade para a conectividade 2G .
  • Adicionado suporte para rejeitar conexões celulares com criptografia nula, garantindo que o tráfego de voz e SMS comutado por circuito seja sempre criptografado e protegido contra interceptação passiva pelo ar. Saiba mais sobre o programa do Android para fortalecer a conectividade celular .
  • Adicionado suporte para vários IMEIs
  • Desde o Android 14, o AES-HCTR2 é o modo preferido de criptografia de nomes de arquivos para dispositivos com instruções de criptografia aceleradas.
  • Conectividade celular
  • Documentação adicionada para Android Safety Center
  • Se seu app for direcionado ao Android 14 e usar carregamento dinâmico de código (DCL), todos os arquivos carregados dinamicamente deverão ser marcados como somente leitura. Caso contrário, o sistema lança uma exceção. Recomendamos que os aplicativos evitem carregar código dinamicamente sempre que possível, pois isso aumenta muito o risco de um aplicativo ser comprometido por injeção ou adulteração de código.

Confira nossas notas de versão completas do AOSP e a lista de recursos e alterações do desenvolvedor Android.

Andróide 13

Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Aqui estão alguns dos principais aprimoramentos de segurança disponíveis no Android 13:

  • O Android 13 adiciona suporte para apresentação de vários documentos. Esta nova interface de sessão de apresentação permite que um aplicativo faça uma apresentação de vários documentos, algo que não é possível com a API existente. Para obter mais informações, consulte Credencial de identidade
  • No Android 13, as intenções originadas de aplicativos externos são entregues a um componente exportado se e somente se as intenções corresponderem aos elementos do filtro de intenções declarados.
  • Open Mobile API (OMAPI) é uma API padrão usada para se comunicar com o Elemento Seguro de um dispositivo. Antes do Android 13, apenas aplicativos e módulos de framework tinham acesso a esta interface. Ao convertê-lo em uma interface estável do fornecedor, os módulos HAL também são capazes de se comunicar com os elementos seguros através do serviço OMAPI. Para obter mais informações, consulte Interface estável do fornecedor OMAPI .
  • A partir do Android 13-QPR, os UIDs compartilhados estão obsoletos. Usuários do Android 13 ou superior devem colocar a linha `android:sharedUserMaxSdkVersion="32"` em seu manifesto. Esta entrada impede que novos usuários obtenham um UID compartilhado. Para obter mais informações sobre UIDs, consulte Assinatura de aplicativos .
  • O Android 13 adicionou suporte a primitivas criptográficas simétricas de Keystore, como AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code) e algoritmos criptográficos assimétricos (incluindo Elliptic Curve, RSA2048, RSA4096 e Curve 25519)
  • O Android 13 (API de nível 33) e versões posteriores oferecem suporte a uma permissão de tempo de execução para enviar notificações não isentas de um aplicativo . Isso dá aos usuários controle sobre quais notificações de permissão eles veem.
  • Adicionado prompt por uso para aplicativos que solicitam acesso a todos os registros do dispositivo , dando aos usuários a capacidade de permitir ou negar acesso.
  • introduziu o Android Virtualization Framework (AVF) , que reúne diferentes hipervisores em uma estrutura com APIs padronizadas. Ele fornece ambientes de execução seguros e privados para execução de cargas de trabalho isoladas por hipervisor.
  • Esquema de assinatura APK v3.1 introduzido. Todas as novas rotações de chave que usam o apksigner usarão o esquema de assinatura v3.1 por padrão para direcionar a rotação para Android 13 e superior.

Confira nossas notas de versão completas do AOSP e a lista de recursos e alterações do desenvolvedor Android.

Andróide 12

Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Aqui estão alguns dos principais aprimoramentos de segurança disponíveis no Android 12:

  • O Android 12 apresenta a API BiometricManager.Strings , que fornece strings localizadas para aplicativos que usam BiometricPrompt para autenticação. Essas strings têm como objetivo reconhecer o dispositivo e fornecer mais especificidade sobre quais tipos de autenticação podem ser usados. O Android 12 também inclui suporte para sensores de impressão digital sob display
  • Adicionado suporte para sensores de impressão digital sob display
  • Introdução da linguagem de definição de interface Android de impressão digital (AIDL)
  • Suporte para novo Face AIDL
  • Introdução do Rust como linguagem para desenvolvimento de plataforma
  • Adicionada a opção para os usuários concederem acesso apenas à sua localização aproximada
  • Adicionados indicadores de privacidade na barra de status quando um aplicativo está usando a câmera ou o microfone
  • Núcleo de computação privado (PCC) do Android
  • Adicionada uma opção para desativar o suporte 2G

Android 11

Cada versão do Android inclui dezenas de aprimoramentos de segurança para proteger os usuários. Para obter uma lista de alguns dos principais aprimoramentos de segurança disponíveis no Android 11, consulte as Notas de versão do Android .

Android 10

Every Android release includes dozens of security enhancements to protect users. Android 10 includes several security and privacy enhancements. See the Android 10 release notes for a complete list of changes in Android 10.

Security

BoundsSanitizer

Android 10 deploys BoundsSanitizer (BoundSan) in Bluetooth and codecs. BoundSan uses UBSan's bounds sanitizer. This mitigation is enabled on a per-module level. It helps keep critical components of Android secure and shouldn't be disabled. BoundSan is enabled in the following codecs:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Execute-only memory

By default, executable code sections for AArch64 system binaries are marked execute-only (nonreadable) as a hardening mitigation against just-in-time code reuse attacks. Code that mixes data and code together and code that purposefully inspects these sections (without first remapping the memory segments as readable) no longer functions. Apps with a target SDK of Android 10 (API level 29 or higher) are impacted if the app attempts to read code sections of execute-only memory (XOM) enabled system libraries in memory without first marking the section as readable.

Extended access

Trust agents, the underlying mechanism used by tertiary authentication mechanisms such as Smart Lock, can only extend unlock in Android 10. Trust agents can no longer unlock a locked device and can only keep a device unlocked for a maximum of four hours.

Face authentication

Face authentication allows users to unlock their device simply by looking at the front of their device. Android 10 adds support for a new face authentication stack that can securely process camera frames, preserving security and privacy during face authentication on supported hardware. Android 10 also provides an easy way for security-compliant implementations to enable app integration for transactions such as online banking or other services.

Integer Overflow Sanitization

Android 10 enables Integer Overflow Sanitization (IntSan) in software codecs. Ensure that playback performance is acceptable for any codecs that aren't supported in the device's hardware. IntSan is enabled in the following codecs:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Modular system components

Android 10 modularizes some Android system components and enables them to be updated outside of the normal Android release cycle. Some modules include:

OEMCrypto

Android 10 uses OEMCrypto API version 15.

Scudo

Scudo is a dynamic user-mode memory allocator designed to be more resilient against heap-related vulnerabilities. It provides the standard C allocation and deallocation primitives, as well as the C++ primitives.

ShadowCallStack

ShadowCallStack (SCS) is an LLVM instrumentation mode that protects against return address overwrites (like stack buffer overflows) by saving a function's return address to a separately allocated ShadowCallStack instance in the function prolog of nonleaf functions and loading the return address from the ShadowCallStack instance in the function epilog.

WPA3 and Wi-Fi Enhanced Open

Android 10 adds support for the Wi-Fi Protected Access 3 (WPA3) and Wi-Fi Enhanced Open security standards to provide better privacy and robustness against known attacks.

Privacy

App access when targeting Android 9 or lower

If your app runs on Android 10 or higher but targets Android 9 (API level 28) or lower, the platform applies the following behavior:

  • If your app declares a <uses-permission> element for either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds a <uses-permission> element for ACCESS_BACKGROUND_LOCATION during installation.
  • If your app requests either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds ACCESS_BACKGROUND_LOCATION to the request.

Background activity restrictions

Starting in Android 10, the system places restrictions on starting activities from the background. This behavior change helps minimize interruptions for the user and keeps the user more in control of what's shown on their screen. As long as your app starts activities as a direct result of user interaction, your app most likely isn't affected by these restrictions.
To learn more about the recommended alternative to starting activities from the background, see the guide on how to alert users of time-sensitive events in your app.

Camera metadata

Android 10 changes the breadth of information that the getCameraCharacteristics() method returns by default. In particular, your app must have the CAMERA permission in order to access potentially device-specific metadata that is included in this method's return value.
To learn more about these changes, see the section about camera fields that require permission.

Clipboard data

Unless your app is the default input method editor (IME) or is the app that currently has focus, your app cannot access clipboard data on Android 10 or higher.

Device location

To support the additional control that users have over an app's access to location information, Android 10 introduces the ACCESS_BACKGROUND_LOCATION permission.
Unlike the ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION permissions, the ACCESS_BACKGROUND_LOCATION permission only affects an app's access to location when it runs in the background. An app is considered to be accessing location in the background unless one of the following conditions is satisfied:

  • An activity belonging to the app is visible.
  • The app is running a foreground service that has declared a foreground service type of location.
    To declare the foreground service type for a service in your app, set your app's targetSdkVersion or compileSdkVersion to 29 or higher. Learn more about how foreground services can continue user-initiated actions that require access to location.

External storage

By default, apps targeting Android 10 and higher are given scoped access into external storage, or scoped storage. Such apps can see the following types of files within an external storage device without needing to request any storage-related user permissions:

To learn more about scoped storage, as well as how to share, access, and modify files that are saved on external storage devices, see the guides on how to manage files in external storage and access and modify media files.

MAC address randomization

On devices that run Android 10 or higher, the system transmits randomized MAC addresses by default.
If your app handles an enterprise use case, the platform provides APIs for several operations related to MAC addresses:

  • Obtain randomized MAC address: Device owner apps and profile owner apps can retrieve the randomized MAC address assigned to a specific network by calling getRandomizedMacAddress().
  • Obtain actual, factory MAC address: Device owner apps can retrieve a device's actual hardware MAC address by calling getWifiMacAddress(). This method is useful for tracking fleets of devices.

Non-resettable device identifiers

Starting in Android 10, apps must have the READ_PRIVILEGED_PHONE_STATE privileged permission in order to access the device's non-resettable identifiers, which include both IMEI and serial number.

If your app doesn't have the permission and you try asking for information about non-resettable identifiers anyway, the platform's response varies based on target SDK version:

  • If your app targets Android 10 or higher, a SecurityException occurs.
  • If your app targets Android 9 (API level 28) or lower, the method returns null or placeholder data if the app has the READ_PHONE_STATE permission. Otherwise, a SecurityException occurs.

Physical activity recognition

Android 10 introduces the android.permission.ACTIVITY_RECOGNITION runtime permission for apps that need to detect the user's step count or classify the user's physical activity, such as walking, biking, or moving in a vehicle. This is designed to give users visibility of how device sensor data is used in Settings.
Some libraries within Google Play services, such as the Activity Recognition API and the Google Fit API, don't provide results unless the user has granted your app this permission.
The only built-in sensors on the device that require you to declare this permission are the step counter and step detector sensors.
If your app targets Android 9 (API level 28) or lower, the system auto-grants the android.permission.ACTIVITY_RECOGNITION permission to your app, as needed, if your app satisfies each of the following conditions:

  • The manifest file includes the com.google.android.gms.permission.ACTIVITY_RECOGNITION permission.
  • The manifest file doesn't include the android.permission.ACTIVITY_RECOGNITION permission.

If the system-auto grants the android.permission.ACTIVITY_RECOGNITION permission, your app retains the permission after you update your app to target Android 10. However, the user can revoke this permission at any time in system settings.

/proc/net filesystem restrictions

On devices that run Android 10 or higher, apps cannot access /proc/net, which includes information about a device's network state. Apps that need access to this information, such as VPNs, should use the NetworkStatsManager or ConnectivityManager class.

Permission groups removed from UI

As of Android 10, apps cannot look up how permissions are grouped in the UI.

Removal of contacts affinity

Starting in Android 10, the platform doesn't keep track of contacts affinity information. As a result, if your app conducts a search on the user's contacts, the results aren't ordered by frequency of interaction.
The guide about ContactsProvider contains a notice describing the specific fields and methods that are obsolete on all devices starting in Android 10.

Restricted access to screen contents

To protect users' screen contents, Android 10 prevents silent access to the device's screen contents by changing the scope of the READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT, and CAPTURE_SECURE_VIDEO_OUTPUT permissions. As of Android 10, these permissions are signature-access only.
Apps that need to access the device's screen contents should use the MediaProjection API, which displays a prompt asking the user to provide consent.

USB device serial number

If your app targets Android 10 or higher, your app cannot read the serial number until the user has granted your app permission to access the USB device or accessory.
To learn more about working with USB devices, see the guide on how to configure USB hosts.

Wi-Fi

Apps targeting Android 10 or higher cannot enable or disable Wi-Fi. The WifiManager.setWifiEnabled() method always returns false.
If you need to prompt users to enable and disable Wi-Fi, use a settings panel.

Restrictions on direct access to configured Wi-Fi networks

To protect user privacy, manual configuration of the list of Wi-Fi networks is restricted to system apps and device policy controllers (DPCs). A given DPC can be either the device owner or the profile owner.
If your app targets Android 10 or higher, and it isn't a system app or a DPC, then the following methods don't return useful data:

Android 9

Every Android release includes dozens of security enhancements to protect users. For a list of some of the major security enhancements available in Android 9, see the Android Release Notes.

Android 8

Cada versão do Android inclui dezenas de aprimoramentos de segurança para proteger os usuários. Aqui estão alguns dos principais aprimoramentos de segurança disponíveis no Android 8.0:

  • Criptografia . Adicionado suporte para remover a chave no perfil de trabalho.
  • Inicialização verificada . Adicionada inicialização verificada do Android (AVB). Base de código de inicialização verificada com suporte para proteção de reversão para uso em carregadores de inicialização adicionados ao AOSP. Recomende o suporte do carregador de inicialização para proteção de reversão para o HLOS. Os carregadores de inicialização recomendados só podem ser desbloqueados pelo usuário interagindo fisicamente com o dispositivo.
  • Tela de bloqueio . Adicionado suporte para usar hardware inviolável para verificar a credencial da tela de bloqueio.
  • KeyStore . Atestado de chave obrigatório para todos os dispositivos fornecidos com o Android 8.0+. Adicionado suporte de atestado de ID para melhorar o Registro Zero Touch.
  • Caixa de areia. Muitos componentes em sandbox mais rígidos usando a interface padrão do Project Treble entre a estrutura e os componentes específicos do dispositivo. Filtro seccomp aplicado a todos os aplicativos não confiáveis ​​para reduzir a superfície de ataque do kernel. O WebView agora é executado em um processo isolado com acesso muito limitado ao restante do sistema.
  • Endurecimento do kernel . Implementado usercopy protegido , emulação PAN, somente leitura após init e KASLR.
  • Endurecimento do espaço do usuário . CFI implementado para a pilha de mídia. As sobreposições de aplicativos 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 habilitadas em dispositivos com pouco espaço em disco.
  • Instale aplicativos desconhecidos . Os usuários devem conceder permissão para instalar aplicativos de uma fonte que não seja uma loja de aplicativos própria.
  • Privacidade . O Android ID (SSAID) tem um valor diferente para cada aplicativo e cada usuário no dispositivo. Para aplicativos de navegador da Web, Widevine Client ID retorna um valor diferente para cada nome de pacote de aplicativo e origem da Web. net.hostname agora está vazio e o cliente dhcp não envia mais um nome de host. android.os.Build.SERIAL foi substituído pela API Build.SERIAL que é protegida por uma permissão controlada pelo usuário. Randomização de endereços MAC aprimorada em alguns chipsets.

Android 7

Cada versão do Android inclui dezenas de aprimoramentos de segurança para proteger os usuários. Aqui estão alguns dos principais aprimoramentos de segurança disponíveis no Android 7.0:

  • Criptografia baseada em arquivo . Criptografar no nível do arquivo, em vez de criptografar toda a área de armazenamento como uma única unidade, isola e protege melhor os usuários e perfis individuais (como pessoal e de trabalho) em um dispositivo.
  • Inicialização Direta . Habilitado por criptografia baseada em arquivo, o Direct Boot permite que determinados aplicativos, como despertador e recursos de acessibilidade, sejam executados quando o dispositivo estiver ligado, mas não desbloqueado.
  • Inicialização verificada . A inicialização verificada agora é rigorosamente aplicada para impedir a inicialização de dispositivos comprometidos; ele suporta correção de erros para melhorar a confiabilidade contra corrupção de dados não maliciosos.
  • SELinux . A configuração atualizada do SELinux e o aumento da cobertura do seccomp bloqueiam ainda mais a área restrita do aplicativo e reduzem a superfície de ataque.
  • Randomização por ordem de carregamento da biblioteca e ASLR aprimorado . O aumento da aleatoriedade torna alguns ataques de reutilização de código menos confiáveis.
  • Endurecimento do kernel . Adicionada proteção de memória adicional para kernels mais recentes, marcando partes da memória do kernel como somente leitura, restringindo o acesso do kernel a endereços de espaço do usuário e reduzindo ainda mais a superfície de ataque existente.
  • Esquema de assinatura APK v2 . Introduziu um esquema de assinatura de arquivo inteiro que melhora a velocidade de verificação e fortalece as garantias de integridade.
  • Loja confiável de CA. Para tornar mais fácil para os aplicativos controlarem o acesso ao tráfego de rede seguro, as autoridades de certificação instaladas pelo usuário e aquelas instaladas por meio de APIs de administração de dispositivos não são mais confiáveis ​​por padrão para aplicativos direcionados à API de nível 24 ou superior. Além disso, todos os novos dispositivos Android devem ser enviados com a mesma loja confiável da CA.
  • Configuração de segurança de rede . Configure a segurança de rede e o TLS por meio de um arquivo de configuração declarativo.

Andróide 6

Cada versão do Android inclui dezenas de aprimoramentos de segurança para proteger os usuários. Aqui estão alguns dos principais aprimoramentos de segurança disponíveis no Android 6.0:

  • Permissões de tempo de execução . Os aplicativos solicitam permissões em tempo de execução em vez de serem concedidas no momento da instalação do aplicativo. Os usuários podem ativar e desativar as permissões para aplicativos M e pré-M.
  • Inicialização verificada . Um conjunto de verificações criptográficas do software do sistema é realizado antes da execução para garantir que o telefone esteja íntegro desde o carregador de inicialização até o sistema operacional.
  • Segurança Isolada por Hardware . Nova camada de abstração de hardware (HAL) usada pela API de impressão digital, tela de bloqueio, criptografia de dispositivo e certificados de cliente para proteger as chaves contra comprometimento do kernel e/ou ataques físicos locais
  • Impressões digitais . Os dispositivos agora podem ser desbloqueados com apenas um toque. Os desenvolvedores também podem aproveitar as novas APIs para usar impressões digitais para bloquear e desbloquear chaves de criptografia.
  • Adoção do Cartão SD . A mídia removível pode ser adotada em um dispositivo e expandir o armazenamento disponível para dados locais do aplicativo, fotos, vídeos etc., mas ainda assim protegida por criptografia em nível de bloco.
  • Limpar Tráfego de Texto . Os desenvolvedores podem usar um novo StrictMode para garantir que seu aplicativo não use texto simples.
  • Endurecimento do Sistema . Reforço do sistema por meio de políticas impostas pelo SELinux. Isso oferece melhor isolamento entre usuários, filtragem IOCTL, redução da ameaça de serviços expostos, maior rigidez dos domínios SELinux e acesso /proc extremamente limitado.
  • Controle de acesso USB: Os usuários devem confirmar para permitir o acesso USB a arquivos, armazenamento ou outras funcionalidades no telefone. O padrão agora é cobrado apenas com acesso ao armazenamento que requer aprovação explícita do usuário.

Andróide 5

5,0

Cada versão do Android inclui dezenas de aprimoramentos de segurança para proteger os usuários. Aqui estão alguns dos principais aprimoramentos de segurança disponíveis no Android 5.0:

  • Criptografado por padrão. Em dispositivos que vêm com L pronto para uso, a criptografia completa de disco é habilitada por padrão para melhorar a proteção de dados em dispositivos perdidos ou roubados. Os dispositivos atualizados para L podem ser criptografados em Configurações > Segurança .
  • Criptografia de disco completa aprimorada. A senha do usuário é protegida contra ataques de força bruta usando scrypt e, quando disponível, a chave é vinculada ao armazenamento de chaves de hardware para evitar ataques fora do dispositivo. Como sempre, o segredo do bloqueio de tela do Android e a chave de criptografia do dispositivo não são enviados para fora do dispositivo ou expostos a nenhum aplicativo.
  • Sandbox Android reforçado com SELinux . O Android agora requer o SELinux no modo de imposição para todos os domínios. O SELinux é um sistema de controle de acesso obrigatório (MAC) no kernel Linux usado para aumentar o modelo de segurança de controle de acesso discricionário (DAC) existente. Essa nova camada fornece proteção adicional contra possíveis vulnerabilidades de segurança.
  • Bloqueio Inteligente. O Android agora inclui trustlets que oferecem mais flexibilidade para desbloquear dispositivos. Por exemplo, os trustlets podem permitir que os dispositivos sejam desbloqueados automaticamente quando próximos a outro dispositivo confiável (via NFC, Bluetooth) ou sendo usados ​​por alguém com um rosto confiável.
  • Modos multiusuário, perfil restrito e convidado para telefones e tablets. O Android agora oferece vários usuários em telefones e inclui um modo convidado que pode ser usado para fornecer acesso temporário fácil ao seu dispositivo sem conceder acesso aos seus dados e aplicativos.
  • Atualizações para WebView sem OTA. O WebView agora pode ser atualizado independentemente da estrutura e sem uma OTA do sistema. Isso permitirá uma resposta mais rápida a possíveis problemas de segurança no WebView.
  • Criptografia atualizada para HTTPS e TLS/SSL. O TLSv1.2 e o TLSv1.1 agora estão habilitados, o Forward Secrecy agora é preferido, o AES-GCM agora está habilitado e os conjuntos de codificação fracos (MD5, 3DES e conjuntos de codificação de exportação) agora estão desabilitados. Consulte https://developer.android.com/reference/javax/net/ssl/SSLSocket.html para obter mais detalhes.
  • suporte de vinculador não-PIE removido. O Android agora exige que todos os executáveis ​​vinculados dinamicamente sejam compatíveis com PIE (executáveis ​​independentes de posição). Isso aprimora a implementação de randomização de layout de espaço de endereço (ASLR) do Android.
  • Melhorias em FORTIFY_SOURCE. As seguintes funções libc agora implementam proteções FORTIFY_SOURCE: stpcpy() , stpncpy() , read() , recvfrom() , FD_CLR() , FD_SET() e FD_ISSET() . Isso fornece proteção contra vulnerabilidades de corrupção de memória envolvendo essas funções.
  • Correções de segurança. O Android 5.0 também inclui correções para vulnerabilidades específicas do Android. As informações sobre essas vulnerabilidades foram fornecidas aos membros da 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 4 e inferior

Cada versão do Android inclui dezenas de aprimoramentos de segurança para proteger os usuários. A seguir estão alguns dos aprimoramentos de segurança disponíveis no Android 4.4:

  • Sandbox Android reforçado com SELinux. O Android agora usa o SELinux no modo de imposição. O SELinux é um sistema de controle de acesso obrigatório (MAC) no kernel Linux usado para aumentar o modelo de segurança baseado em controle de acesso discricionário (DAC) existente. Isso fornece proteção adicional contra possíveis vulnerabilidades de segurança.
  • Por usuário VPN. Em dispositivos multiusuário, as VPNs agora são aplicadas por usuário. Isso pode permitir que um usuário roteie todo o tráfego de rede por meio de uma VPN sem afetar outros usuários no dispositivo.
  • Suporte do provedor ECDSA no AndroidKeyStore. O Android agora tem um provedor de armazenamento de chaves que permite o uso de algoritmos ECDSA e DSA.
  • Avisos de monitoramento do dispositivo. O Android fornece aos usuários um aviso se algum certificado tiver sido adicionado ao armazenamento de certificados do dispositivo que possa permitir o monitoramento do tráfego de rede criptografado.
  • FORTIFY_SOURCE. O Android agora é compatível com FORTIFY_SOURCE nível 2 e todo o código é compilado com essas proteções. FORTIFY_SOURCE foi aprimorado para funcionar com clang.
  • Fixação de certificados. O Android 4.4 detecta e impede o uso de certificados fraudulentos do Google usados ​​em comunicações SSL/TLS seguras.
  • Correções de segurança. O Android 4.4 também inclui correções para vulnerabilidades específicas do Android. As informações sobre essas vulnerabilidades foram fornecidas aos membros da 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.

Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. A seguir estão alguns dos aprimoramentos de segurança disponíveis no Android 4.3:

  • Sandbox Android reforçado com SELinux. Esta versão fortalece o sandbox do Android usando o sistema de controle de acesso obrigatório (MAC) SELinux no kernel Linux. O reforço do SELinux é invisível para usuários e desenvolvedores e adiciona robustez ao modelo de segurança existente do Android, mantendo a compatibilidade com os aplicativos existentes. Para garantir compatibilidade contínua, esta versão permite o uso do SELinux em modo permissivo. Este modo registra quaisquer violações de política, mas não interromperá os aplicativos nem afetará o comportamento do sistema.
  • Nenhum programa setuid/setgid. Adicionado suporte para recursos de sistema de arquivos aos arquivos do sistema Android e removido todos os programas setuid/setguid. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança.
  • Autenticação ADB. Desde o Android 4.2.2, as conexões com o ADB são autenticadas com um par de chaves RSA. Isso evita o uso não autorizado do ADB onde o invasor tem acesso físico a um dispositivo.
  • Restrinja Setuid de aplicativos Android. A partição /system agora é montada como nosuid para processos gerados pelo zigoto, evitando que aplicativos Android executem programas setuid. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança.
  • Limite de capacidade. O zigoto Android e o ADB agora usam prctl(PR_CAPBSET_DROP) para descartar recursos desnecessários antes de executar aplicativos. Isso evita que aplicativos Android e aplicativos iniciados a partir do shell adquiram recursos privilegiados.
  • Provedor AndroidKeyStore. O Android agora possui um provedor de armazenamento de chaves que permite que os aplicativos criem chaves de uso exclusivo. Isso fornece aos aplicativos uma API para criar ou armazenar chaves privadas que não podem ser usadas por outros aplicativos.
  • KeyChain isBoundKeyAlgoritmo. A API Keychain agora fornece um método (isBoundKeyType) que permite que os aplicativos confirmem se as chaves de todo o sistema estão vinculadas a uma raiz de confiança de hardware para o dispositivo. Isso fornece um local para criar ou armazenar chaves privadas que não podem ser exportadas do dispositivo, mesmo no caso de comprometimento do root.
  • NO_NEW_PRIVS. O zigoto Android agora usa prctl(PR_SET_NO_NEW_PRIVS) para bloquear a adição de novos privilégios antes da execução do código do aplicativo. Isso evita que aplicativos Android executem operações que podem elevar privilégios via execve. (Isso requer o kernel Linux versão 3.5 ou superior).
  • Melhorias em FORTIFY_SOURCE. FORTIFY_SOURCE ativado no Android x86 e MIPS e chamadas strchr(), strrchr(), strlen() e umask() fortificadas. Isso pode detectar possíveis vulnerabilidades de corrupção de memória ou constantes de string não terminadas.
  • Proteções de realocação. Habilitou realocações somente leitura (relro) para executáveis ​​vinculados estaticamente e removeu todas as realocações de texto no código Android. Isso fornece defesa profunda contra possíveis vulnerabilidades de corrupção de memória.
  • EntropyMixer aprimorado. EntropyMixer agora grava entropia no desligamento/reinicialização, além da mixagem periódica. Isso permite a retenção de toda a entropia gerada enquanto os dispositivos estão ligados e é especialmente útil para dispositivos que são reinicializados imediatamente após o provisionamento.
  • Correções de segurança. O Android 4.3 também inclui correções para vulnerabilidades específicas do Android. Informações sobre essas vulnerabilidades foram fornecidas aos membros da 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:

  • Application verification - Users can choose to enable “Verify Apps" and have applications screened by an application verifier, prior to installation. App verification can alert the user if they try to install an app that might be harmful; if an application is especially bad, it can block installation.
  • More control of premium SMS - Android will provide a notification if an application attempts to send SMS to a short code that uses premium services which might cause additional charges. The user can choose whether to allow the application to send the message or block it.
  • Always-on VPN - VPN can be configured so that applications will not have access to the network until a VPN connection is established. This prevents applications from sending data across other networks.
  • Certificate Pinning - The Android core libraries now support certificate pinning. Pinned domains will receive a certificate validation failure if the certificate does not chain to a set of expected certificates. This protects against possible compromise of Certificate Authorities.
  • Improved display of Android permissions - Permissions have been 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 implements FORTIFY_SOURCE. This is used by system libraries and applications to prevent memory corruption.
  • ContentProvider default configuration - Applications which target API level 17 will have "export" set to "false" by default for each Content Provider, reducing default attack surface for applications.
  • 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 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 versions 1.5 through 4.1:

Android 1.5
  • ProPolice to prevent stack buffer overruns (-fstack-protector)
  • safe_iop to reduce integer overflows
  • Extensions to OpenBSD dlmalloc to prevent double free() vulnerabilities and to prevent chunk consolidation attacks. Chunk consolidation attacks are a common way to exploit heap corruption.
  • OpenBSD calloc to prevent integer overflows during memory allocation
Android 2.3
  • Format string vulnerability protections (-Wformat-security -Werror=format-security)
  • Hardware-based No eXecute (NX) to prevent code execution on the stack and heap
  • Linux mmap_min_addr to mitigate null pointer dereference privilege escalation (further enhanced in Android 4.1)
Android 4.0
Address Space Layout Randomization (ASLR) to randomize key locations in memory
Android 4.1
  • PIE (Position Independent Executable) support
  • Read-only relocations / immediate binding (-Wl,-z,relro -Wl,-z,now)
  • dmesg_restrict enabled (avoid leaking kernel addresses)
  • kptr_restrict enabled (avoid leaking kernel addresses)