Melhorias na segurança

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

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 14:

  • O limpador de endereços 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 para o HWASan. Saiba como ele ajuda a evitar que bugs cheguem às versões do Android, HWAddressSanitizer
  • No Android 14, começando por apps que compartilham dados de local com terceiros, a caixa de diálogo de permissão de execução do sistema agora inclui uma seção clicável que destaca as práticas de compartilhamento de dados do app. Isso inclui o motivo pelo qual esse app pode compartilhar dados com terceiros.
  • O Android 12 apresentou uma opção para desativar o suporte a 2G no nível do modem, que protege os usuários do risco de segurança inerente do modelo de segurança obsoleto do 2G. O Android 14 ativa esse recurso de segurança no Android Enterprise, introduzindo suporte para que administradores de TI restrinjam a capacidade de um dispositivo gerenciado de fazer downgrade para a conectividade 2G.
  • Adição de suporte para rejeitar conexões de celular com criptografia nula, garantindo que o tráfego de voz e SMS com comutação de circuitos seja sempre criptografado e protegido contra interceptação passiva over-the-air. Saiba mais sobre o programa do Android para aumentar a segurança da conectividade celular.
  • Adição de suporte a vários IMEIs
  • Desde o Android 14, o AES-HCTR2 é o modo de preferência da criptografia de nomes de arquivos para dispositivos com instruções de criptografia acelerada.
  • Conectividade celular
  • Adicionamos documentação para o Centro de segurança do Android.
  • Se o app for direcionado ao Android 14 e usar o carregamento de código dinâmico (DCL, na sigla em inglês), todos os arquivos carregados dinamicamente vão precisar ser marcados como somente leitura. Caso contrário, o sistema vai gerar uma exceção. Recomendamos que os apps evitem carregar código dinamicamente sempre que possível, porque isso aumenta muito o risco de comprometimento do app por injeção ou adulteração de código.

Confira as notas da versão completas do AOSP e a lista de recursos e mudanças para desenvolvedores do Android.

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

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 12:

  • O Android 12 apresenta a API BiometricManager.Strings, que fornece strings localizadas para apps que usam BiometricPrompt para autenticação. Essas strings são projetadas para serem compatíveis com o dispositivo e fornecer mais especificidade sobre quais tipos de autenticação podem ser usados. O Android 12 também inclui suporte a sensores de impressão digital abaixo da tela.
  • Suporte adicionado para sensores de impressão digital abaixo da tela
  • Introdução da Linguagem de definição de interface do Android (AIDL) de impressão digital
  • Suporte para a nova Face AIDL
  • Introdução do Rust como uma linguagem para desenvolvimento de plataformas
  • Adição da opção para que os usuários concedam acesso apenas à localização aproximada
  • Adição de indicadores de privacidade na barra de status quando um app está usando a câmera ou o microfone
  • Private Compute Core (PCC) do Android
  • Adição de uma opção para desativar o suporte a 2G

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:

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

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:

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

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:

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> para ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION, o sistema vai adicionar automaticamente um elemento <uses-permission> para ACCESS_BACKGROUND_LOCATION durante a instalação.
  • Se o app solicitar ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION, o sistema vai adicionar ACCESS_BACKGROUND_LOCATION automaticamente à 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 a targetSdkVersion ou compileSdkVersion do app como 29 ou 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:

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.

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 SecurityException ocorrerá.
  • Se o app for destinado ao Android 9 (API de nível 28) ou versões anteriores, o método retornará null ou dados de marcadores caso o app tenha a permissão READ_PHONE_STATE. Caso contrário, uma SecurityException vai 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:

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.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. 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

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 5.0:

  • Criptografado por padrão. Em dispositivos que vêm com o L out-of-the-box, a criptografia de disco completo é ativada por padrão para melhorar a proteção de dados em dispositivos perdidos ou roubados. Os dispositivos que forem atualizados para L poderão ser criptografados em Configurações > Segurança .
  • Melhoria na criptografia de disco completo. A senha do usuário é protegida contra ataques de força bruta usando scrypt e, quando disponível, a chave é vinculada ao keystore de hardware para evitar ataques fora do dispositivo. Como sempre, o segredo de bloqueio de tela do Android e a chave de criptografia do dispositivo não são enviados para fora do dispositivo nem expostos a nenhum aplicativo.
  • Sandbox do Android reforçado com o SELinux . O Android agora exige o SELinux no modo de restrição para todos os domínios. O SELinux é um sistema de controle de acesso obrigatório (MAC) no kernel do Linux usado para aumentar o modelo de segurança de controle de acesso discricionário (DAC) existente. Essa nova camada oferece proteção extra contra possíveis vulnerabilidades de segurança.
  • Smart Lock. 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 estiverem próximos de outro dispositivo confiável (por NFC, Bluetooth) ou sendo usados por alguém com uma face confiável.
  • Modos de vários usuários, perfil restrito e visitante para smartphones e tablets. O Android agora oferece suporte a vários usuários em smartphones e inclui um modo visitante que pode ser usado para fornecer acesso temporário fácil ao dispositivo sem conceder acesso aos dados e aos apps.
  • Atualizações na WebView sem OTA. Agora, a WebView pode ser atualizada independentemente do framework e sem um OTA do sistema. Isso permite uma resposta mais rápida a possíveis problemas de segurança na WebView.
  • Criptografia atualizada para HTTPS e TLS/SSL. Os protocolos TLSv1.2 e TLSv1.1 foram ativados, o Forward Secrecy é a opção preferencial, o AES-GCM foi ativado e os pacotes de criptografia fracos (MD5, 3DES e pacotes de criptografia de exportação) foram desativados. Consulte https://developer.android.com/reference/javax/net/ssl/SSLSocket.html para mais detalhes.
  • O suporte para o linker não-PIE foi removido. O Android agora exige que todos os executáveis vinculados dinamicamente ofereçam suporte a PIE (executáveis independentes de posição). Isso melhora a implementação da ordem aleatória do layout do espaço de endereço do Android (ASLR).
  • Melhorias no 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 oferece proteção contra vulnerabilidades de corrupção de memória que envolvem essas funções.
  • Correções de segurança. O Android 5.0 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 4 e versões anteriores

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.4:

  • Sandbox do Android reforçado com o SELinux. O Android agora usa o SELinux no modo de restrição. O SELinux é um sistema de controle de acesso obrigatório (MAC) no kernel do Linux usado para aumentar o modelo de segurança baseado em controle de acesso discricionário (DAC). Isso oferece proteção extra contra possíveis vulnerabilidades de segurança.
  • VPN por usuário. Em dispositivos multiusuários, as VPNs agora são aplicadas por usuário. Isso permite que um usuário roteie todo o tráfego de rede por uma VPN sem afetar outros usuários no dispositivo.
  • Suporte ao provedor ECDSA no AndroidKeyStore. O Android agora tem um provedor de keystore que permite o uso de algoritmos ECDSA e DSA.
  • Avisos de monitoramento de dispositivos. O Android mostra um aviso aos usuários se algum certificado tiver sido adicionado à loja de certificados do dispositivo que permita o monitoramento do tráfego de rede criptografado.
  • FORTIFY_SOURCE. O Android agora oferece suporte ao nível 2 do FORTIFY_SOURCE, e todo o código é compilado com essas proteções. O 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 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.

Every Android release includes dozens of security enhancements to protect users. The following are some of the security enhancements available in Android 4.3:

  • Android sandbox reinforced with SELinux. This release strengthens the Android sandbox using the SELinux mandatory access control system (MAC) in the Linux kernel. SELinux reinforcement is invisible to users and developers, and adds robustness to the existing Android security model while maintaining compatibility with existing apps. To ensure continued compatibility this release allows the use of SELinux in a permissive mode. This mode logs any policy violations, but will not break apps or affect system behavior.
  • No setuid or setgid programs. Added support for filesystem capabilities to Android system files and removed all setuid or setgid programs. This reduces root attack surface and the likelihood of potential security vulnerabilities.
  • ADB authentication. Starting in Android 4.2.2, connections to ADB are authenticated with an RSA keypair. This prevents unauthorized use of ADB where the attacker has physical access to a device.
  • Restrict Setuid from Android Apps. The /system partition is now mounted nosuid for zygote-spawned processes, preventing Android apps from executing setuid programs. This reduces root attack surface and the likelihood of potential security vulnerabilities.
  • Capability bounding. Android zygote and ADB now use prctl(PR_CAPBSET_DROP) to drop unnecessary capabilities prior to executing apps. This prevents Android apps and apps launched from the shell from acquiring privileged capabilities.
  • AndroidKeyStore Provider. Android now has a keystore provider that allows apps to create exclusive use keys. This provides apps with an API to create or store private keys that cannot be used by other apps.
  • KeyChain isBoundKeyAlgorithm. Keychain API now provides a method (isBoundKeyType) that allows apps to confirm that system-wide keys are bound to a hardware root of trust for the device. This provides a place to create or store private keys that can't be exported off the device, even in the event of a root compromise.
  • NO_NEW_PRIVS. Android zygote now uses prctl(PR_SET_NO_NEW_PRIVS) to block addition of new privileges prior to execution app code. This prevents Android apps from performing operations that can elevate privileges through execve. (This requires Linux kernel version 3.5 or greater).
  • FORTIFY_SOURCE enhancements. Enabled FORTIFY_SOURCE on Android x86 and MIPS and fortified strchr(), strrchr(), strlen(), and umask() calls. This can detect potential memory corruption vulnerabilities or unterminated string constants.
  • Relocation protections. Enabled read only relocations (relro) for statically linked executables and removed all text relocations in Android code. This provides defense in depth against potential memory corruption vulnerabilities.
  • Improved EntropyMixer. EntropyMixer now writes entropy at shutdown or reboot, in addition to periodic mixing. This allows retention of all entropy generated while devices are powered on, and is especially useful for devices that are rebooted immediately after provisioning.
  • Security fixes. Android 4.3 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 no Android 4.2:

  • Verificação de apps:os usuários podem ativar a verificação de apps e fazer com que os apps sejam filtrados por um verificador antes da instalação. A verificação de apps pode alertar o usuário se ele tentar instalar um app que possa ser perigoso. Se um app for especialmente nocivo, ele poderá bloquear a instalação.
  • Mais controle de SMS premium:o Android vai enviar uma notificação se um app tentar enviar um SMS para um código curto que usa serviços premium que podem gerar cobranças adicionais. O usuário pode escolher se quer permitir que o app envie a mensagem ou a bloqueie.
  • VPN sempre ativa:a VPN pode ser configurada para que os apps não tenham acesso à rede até que uma conexão VPN seja estabelecida. Isso impede que os apps enviem dados por outras redes.
  • Fixação de certificados:as bibliotecas principais do Android agora oferecem suporte à fixação de certificados. Os domínios fixados recebem uma falha na validação do certificado se ele não encadear um conjunto de certificados esperados. Isso protege contra possíveis comprometimentos de autoridades de certificação.
  • Exibição aprimorada de permissões do Android:as permissões são organizadas em grupos que são compreendidos com mais facilidade pelos usuários. Durante a análise das permissões, o usuário pode clicar na permissão para conferir informações mais detalhadas sobre ela.
  • Aumento da proteção do installd:o daemon installd não é executado como usuário raiz, reduzindo a possível superfície de ataque para escalonamento de privilégios de raiz.
  • Aumento da proteção do script init:os scripts init agora aplicam a semântica O_NOFOLLOW para evitar ataques relacionados a links simbólicos.
  • FORTIFY_SOURCE:o Android agora implementa FORTIFY_SOURCE. Ele é usado por bibliotecas e apps do sistema para evitar a corrupção de memória.
  • Configuração padrão do ContentProvider:os apps destinados ao nível 17 da API têm export definido como false por padrão para cada Content Provider, reduzindo a superfície de ataque padrão dos apps.
  • Criptografia:modificação das implementações padrão de SecureRandom e Cipher.RSA para usar o OpenSSL. Adição de suporte a SSL Socket para TLSv1.1 e TLSv1.2 usando OpenSSL 1.0.1
  • Correções de segurança:as bibliotecas de código aberto atualizadas com correções de segurança incluem WebKit, libpng, OpenSSL e LibXML. O Android 4.2 também inclui correções de vulnerabilidades específicas do Android. Foram fornecidas informações sobre essas vulnerabilidades 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 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)