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:

  • AddressSanitizer assistida por hardware (HWASan), lançada no Android 10, é uma ferramenta de detecção de erros de memória AddressSanitizer: O Android 14 traz melhorias significativas para o HWASan. Saiba como ela ajuda a prevenir que bugs cheguem às versões do Android, HWAddressSanitizer (link em inglês)
  • No Android 14, a partir de 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, incluindo informações como por que um app pode decidir 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
  • No Android 14 e mais recentes, o AES-HCTR2 é o modo preferido de criptografia de nomes de arquivo para dispositivos com instruções de criptografia acelerada.
  • Conectividade celular
  • Documentação adicionada à Central 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 devem ser marcados como somente leitura. Caso contrário, o sistema gera 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 do Android Developer.

Android 13

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

  • O Android 13 agora é compatível com a apresentação de vários documentos. Essa nova interface de sessão de apresentação permite que o aplicativo realize uma apresentação de vários documentos, algo que não é possível com as API existente. Para mais informações, consulte Credencial de identidade.
  • No Android 13, as intents oriundos de aplicativos externos são entregues o componente exportado apenas se as intents corresponderem os elementos de filtro de intent declarados.
  • A API Open Mobile (OMAPI, link em inglês) é uma API padrão usada para se comunicar com o Elemento de segurança de um dispositivo. Antes do Android 13, apenas apps e módulos de framework tinham acesso a essa interface. Ao fazer a conversão para uma interface estável do fornecedor, os módulos da HAL também podem se comunicar com os elementos de segurança pelo serviço OMAPI. Para mais informações, consulte Interface estável do fornecedor OMAPI.
  • No Android 13 QPR, os UIDs compartilhados foram descontinuados. Os usuários do Android 13 ou versões mais recentes precisam incluir a linha `android:sharedUserMaxSdkVersion="32"` no manifesto. Essa entrada impede que novos usuários não recebam um UID compartilhado. Para mais informações sobre UIDs, consulte Assinatura de apps.
  • O Android 13 adicionou suporte a primitivas criptográficas simétricas do Keystore, como Padrão de criptografia avançada (AES), HMAC (código de autenticação de mensagem de hash com chave), e algoritmos criptográficos assimétricos (incluindo Elliptic Curve, RSA2048, RSA4096, e curva 25519)
  • O Android 13 (nível 33 da API) e versões mais recentes oferecem suporte a uma permissão de execução para enviar notificações de um app que não são isentas. Isso permite que os usuários controlem quais notificações de permissão eles veem.
  • Adicionamos uma solicitação por uso para apps que solicitam acesso a todos os registros do dispositivo, permitindo que os usuários permitam ou neguem o acesso.
  • introduziu o Framework de virtualização do Android (AVF, na sigla em inglês), que reúne diferentes hipervisores em um framework com APIs padronizadas. Ele oferece ambientes de execução seguros e privados para cargas de trabalho isoladas por hipervisor.
  • Introdução do esquema de assinatura de APK v3.1 Todas as novas rotações de chaves que usam apksigner usam o esquema de assinatura v3.1 por padrão. para a rotação desejada no Android 13 e versões mais recentes.

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

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 introduz a API BiometricManager.Strings, que fornece strings localizadas para aplicativos que usam BiometricPrompt para autenticação. Essas strings têm o objetivo de reconhecer dispositivos e especificar 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 com impressão digital (AIDL)
  • Suporte para a nova AIDL da Face
  • Introdução do Rust como linguagem para desenvolvimento de plataformas
  • A opção de os usuários concederem acesso apenas aos seus local adicionado
  • Indicadores de privacidade adicionados à barra de status quando um app está usando a câmera ou o microfone
  • A configuração particular do Android Compute Core (PCC)
  • Adicionada 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 uma lista de alguns dos principais aprimoramentos de segurança disponíveis no no Android 11, consulte a Versão do Android Observações.

Android 10

Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. O Android 10 inclui vários aprimoramentos de segurança e privacidade. Consulte as notas de versão do Android 10 para obter uma lista completa de alterações no Android 10.

Segurança

LimitesSanitizador

O Android 10 implanta BoundsSanitizer (BoundSan) em Bluetooth e codecs. BoundSan usa o desinfetante de limites do UBSan. Essa mitigação é habilitada em nível por módulo. Ajuda a manter componentes críticos do Android seguros e não deve ser desativado. BoundSan está habilitado 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 para binários do sistema AArch64 são marcadas como somente execução (não legível) como uma mitigação de proteção contra ataques de reutilização de código just-in-time. O código que mistura dados e código e o código que inspeciona propositalmente essas seções (sem primeiro remapear os segmentos de memória como legíveis) não funcionam mais. Os aplicativos com um SDK de destino do Android 10 (nível de API 29 ou superior) serão afetados se o aplicativo tentar ler seções de código de bibliotecas de sistema habilitadas para memória somente de execução (XOM) na memória sem primeiro marcar a seção como legível.

Acesso estendido

Os agentes de confiança, o mecanismo subjacente usado por mecanismos de autenticação terciários, como o Smart Lock, só podem 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 seus dispositivos simplesmente olhando para a frente do dispositivo. O Android 10 adiciona suporte para uma nova pilha de autenticação facial que pode processar quadros de câmera com segurança, preservando a segurança e a privacidade durante a autenticação facial em hardware compatível. O Android 10 também oferece uma maneira fácil de implementações compatíveis com segurança permitirem a integração de aplicativos para transações como serviços bancários on-line ou outros serviços.

Sanitização de estouro de número inteiro

O Android 10 permite a Sanitização de Overflow Inteiro (IntSan) em codecs de software. Certifique-se de que o desempenho de reprodução seja aceitável para quaisquer codecs que não sejam suportados no hardware do dispositivo. O IntSan está habilitado 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. Alguns módulos incluem:

OEMCrypto

O Android 10 usa a API OEMCrypto versão 15.

Scudo

Scudo é um alocador de memória dinâmico em modo de usuário projetado para ser mais resiliente contra vulnerabilidades relacionadas ao heap. Ele fornece as primitivas de alocação e desalocação C padrão, bem como as primitivas C++.

ShadowCallStack

ShadowCallStack (SCS) é um modo de instrumentação LLVM que protege contra sobregravações de endereço de retorno (como estouros de buffer de pilha), salvando o endereço de retorno de uma função em uma instância ShadowCallStack alocada separadamente no prólogo de função de funções não-folha e carregando o endereço de retorno da instância ShadowCallStack em o epílogo da função.

WPA3 e Wi-Fi aprimorado aberto

O Android 10 adiciona suporte para os padrões de segurança Wi-Fi Protected Access 3 (WPA3) e Wi-Fi Enhanced Open para fornecer melhor privacidade e robustez contra ataques conhecidos.

Privacidade

Acesso ao aplicativo quando direcionado ao Android 9 ou inferior

Se seu aplicativo for executado no Android 10 ou superior, mas for direcionado ao Android 9 (API de nível 28) ou inferior, a plataforma aplicará o seguinte comportamento:

  • Se seu aplicativo declarar um elemento <uses-permission> para ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION , o sistema adicionará automaticamente um elemento <uses-permission> para ACCESS_BACKGROUND_LOCATION durante a instalação.
  • Se seu aplicativo solicitar ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION , o sistema adicionará automaticamente ACCESS_BACKGROUND_LOCATION à solicitação.

Restrições de atividades 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 interrupções para o usuário e mantém o usuário com mais controle sobre o que é mostrado na tela. Contanto que seu aplicativo inicie atividades como resultado direto da interação do usuário, ele provavelmente não será 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 urgentes em seu aplicativo.

Metadados da câmera

O Android 10 altera a amplitude das informações que o método getCameraCharacteristics() retorna por padrão. Em particular, seu aplicativo deve ter a permissão CAMERA para acessar metadados potencialmente específicos do dispositivo incluídos no valor de retorno desse método.
Para saber mais sobre essas alterações, consulte a seção sobre campos de câmera que exigem permissão .

Dados da área de transferência

A menos que seu aplicativo seja o editor de método de entrada (IME) padrão ou seja o aplicativo que está em foco no momento, ele não poderá acessar os dados da área de transferência no Android 10 ou superior.

Localização do dispositivo

Para oferecer suporte ao controle adicional que os usuários têm sobre o acesso de um aplicativo à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 afeta apenas o acesso de um aplicativo à localização quando ele é executado em segundo plano. Considera-se que um aplicativo acessa a localização em segundo plano, a menos que uma das seguintes condições seja atendida:

  • Uma atividade pertencente ao aplicativo está visível.
  • O aplicativo está executando um serviço em primeiro plano que declarou umtipo de serviço em primeiro plano location .
    Para declarar o tipo de serviço em primeiro plano para um serviço no seu aplicativo, defina targetSdkVersion ou compileSdkVersion do seu aplicativo como 29 ou superior. 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 aplicativos destinados ao Android 10 e versões posteriores recebem acesso com escopo ao armazenamento externo ou ao armazenamento com escopo . Esses aplicativos podem ver os seguintes tipos de arquivos em um dispositivo de armazenamento externo sem precisar solicitar permissões de usuário relacionadas ao armazenamento:

Para saber mais sobre armazenamento com escopo definido e como compartilhar, acessar e modificar arquivos salvos em dispositivos de armazenamento externos, consulte os guias sobre como gerenciar arquivos em armazenamento externo e acessar e modificar arquivos de mídia .

Randomização de endereço MAC

Em dispositivos com Android 10 ou superior, o sistema transmite endereços MAC aleatórios por padrão.
Se seu aplicativo lidar com um caso de uso corporativo , a plataforma fornecerá APIs para diversas operações relacionadas a endereços MAC:

  • Obter endereço MAC aleatório : os aplicativos do proprietário do dispositivo e os aplicativos do proprietário do perfil podem recuperar o endereço MAC aleatório atribuído a uma rede específica chamando getRandomizedMacAddress() .
  • Obtenha o endereço MAC real de fábrica: os aplicativos do proprietário do dispositivo podem recuperar o endereço MAC de hardware real de um dispositivo chamando getWifiMacAddress() . Este método é útil para rastrear frotas de dispositivos.

Identificadores de dispositivos não reconfiguráveis

A partir do Android 10, os aplicativos devem 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 seu aplicativo não tiver permissão e você tentar solicitar informações sobre identificadores não redefiníveis de qualquer maneira, a resposta da plataforma variará de acordo com a versão do SDK de destino:

  • Se o seu aplicativo for direcionado ao Android 10 ou superior, ocorrerá uma SecurityException .
  • Se o seu aplicativo for destinado ao Android 9 (API de nível 28) ou inferior, o método retornará dados null ou de espaço reservado se o aplicativo tiver a permissão READ_PHONE_STATE . Caso contrário, ocorrerá uma SecurityException .

Reconhecimento de atividade física

O Android 10 introduz a permissão de tempo de execução android.permission.ACTIVITY_RECOGNITION para aplicativos que precisam detectar a contagem de passos do usuário ou classificar a atividade física do usuário, como caminhar, andar de bicicleta ou se mover em um veículo. Isso foi projetado para dar aos usuários visibilidade de como os dados do sensor do dispositivo são usados ​​nas configurações.
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 seu aplicativo.
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 seu app for direcionado ao Android 9 (API de nível 28) ou inferior, o sistema concederá automaticamente a permissão android.permission.ACTIVITY_RECOGNITION ao seu 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 system-auto conceder a permissão android.permission.ACTIVITY_RECOGNITION , seu aplicativo manterá a permissão após você atualizá-lo para o Android 10. No entanto, o usuário poderá revogar essa permissão a qualquer momento nas configurações do sistema.

/proc/net restrições do sistema de arquivos

Em dispositivos com Android 10 ou superior, os aplicativos não podem acessar /proc/net , que inclui informações sobre o estado da rede de um dispositivo. Os aplicativos que precisam de acesso a essas informações, como VPNs, devem usar a classe NetworkStatsManager ou ConnectivityManager .

Grupos de permissões removidos da IU

A partir do Android 10, os aplicativos não podem consultar como as permissões são agrupadas na IU.

Remoção de afinidade de contatos

A partir do Android 10, a plataforma não rastreia informações de afinidade de contatos. Como resultado, se o seu aplicativo 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 um aviso que descreve 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 aplicativos que precisam acessar o conteúdo da tela do dispositivo devem usar a API MediaProjection , que exibe um prompt solicitando o consentimento do usuário.

Número de série do dispositivo USB

Se o seu aplicativo for destinado ao Android 10 ou superior, ele não poderá ler o número de série até que o usuário conceda permissão ao aplicativo para acessar o 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 aplicativos direcionados ao Android 10 ou superior não podem ativar ou desativar o Wi-Fi. O método WifiManager.setWifiEnabled() sempre retorna false .
Se você precisar solicitar aos usuários que ativem e desativem o Wi-Fi, use um painel de configurações .

Restrições de acesso direto às redes Wi-Fi configuradas

Para proteger a privacidade do usuário, a configuração manual da lista de redes Wi-Fi é restrita a aplicativos do sistema e controladores de política de dispositivos (DPCs) . Um determinado DPC pode ser o proprietário do dispositivo ou o proprietário do perfil.
Se seu app for direcionado ao Android 10 ou superior e não for um app de sistema ou DPC, os métodos a seguir não retornarão 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. Inicialização verificada do Android (AVB, na sigla em inglês) adicionada. Verificada A base de código de inicialização com suporte à proteção contra reversão para uso em carregadores de inicialização foi adicionada 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 dispositivos resistentes a adulterações. para verificar a credencial da tela de bloqueio.
  • KeyStore. Chave obrigatória atestado para todos os dispositivos que vêm com o Android 8.0 ou versões mais recentes. ID adicionado suporte a atestados para melhorar o registro sem toque.
  • 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çada, emulação de PAN, somente leitura após a inicialização e KASLR.
  • Aumento da proteção do espaço do usuário. A CFI foi implementada 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 podem descartá-las.
  • Atualização do SO de streaming. Atualizações ativadas em dispositivos com pouco espaço em disco.
  • Instalar apps desconhecidos. Os usuários devem conceder permissão para instalar apps de uma fonte que não seja uma app store primária.
  • Privacidade. O ID do Android (SSAID, na sigla em inglês) tem um valor diferente para cada app e cada usuário no dispositivo. Para apps de navegador da Web, o ID do cliente 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 pelo API Build.SERIAL protegida por uma permissão controlada pelo usuário. Endereço MAC aprimorado randomização em alguns chipsets.

No Android 7

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 7,0:

  • Criptografia baseada em arquivos. A criptografia 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 pessoais e de trabalho) em um dispositivo.
  • Inicialização direta. Ativada por criptografia baseada em arquivos, Direct A inicialização permite que certos aplicativos, como despertador e recursos de acessibilidade, são executados quando o dispositivo está ligado, mas não desbloqueado.
  • Inicialização verificada. A inicialização verificada agora é aplicada de forma rigorosa para evitar que dispositivos comprometidos sejam inicializados. Ela é compatível com a correção de erros para melhorar a confiabilidade contra corrupção de dados não maliciosos.
  • SELinux (em inglês). A configuração de SELinux atualizada e a maior cobertura do Seccomp protege ainda mais a área restrita do aplicativo e reduz a superfície de ataque.
  • Ordem de carregamento aleatória da biblioteca e ASLR melhorado (em inglês). A randomização maior torna alguns ataques de reutilização de código menos eficazes.
  • Aumento da proteção do kernel. Adicionada proteção de memória adicional para kernels mais novos marcando partes da memória do kernel como somente leitura, restringindo o acesso do kernel aos endereços do espaço do usuário e reduzindo ainda mais o superfície
  • Esquema de assinatura de APK v2 Introdução de uma assinatura de arquivo inteiro esquema que melhora a velocidade de verificação e fortalece as garantias de integridade.
  • Repositório de CA confiável. Para facilitar o controle de acesso ao tráfego de rede segura para os apps, as autoridades de certificação instaladas pelo usuário e as instaladas com Device Admin APIs não são mais confiáveis por padrão para apps que usam a API de nível 24 ou mais recente. Além disso, todos os novos dispositivos Android precisam sair de fábrica com a mesma loja de ACs confiáveis.
  • Configuração de segurança de rede. Configurar a segurança de rede e o TLS por meio de um arquivo de configuração declarativo.

Android 6

Cada versão do Android inclui dezenas de melhorias de segurança para proteger usuários. Confira algumas das principais melhorias de segurança disponíveis no Android 6,0:

  • Permissões de tempo de execução. Os apps solicitam permissões em tempo de execução em vez de serem concedidas no momento da instalação. Os usuários podem ativar e desativar as permissões para M e pré-M apps.
  • Inicialização verificada. Um conjunto de verificações criptográficas do software do sistema é realizado antes da execução para garantir que o smartphone esteja saudável desde o carregador de inicialização até o sistema operacional.
  • Segurança isolada por hardware. Nova abstração de hardware camada (HAL) usada pela API de impressão digital, tela de bloqueio Criptografia do dispositivo e certificados do cliente para proteger chaves contra o kernel comprometimento e/ou ataques físicos locais
  • Impressões digitais. Agora é possível desbloquear os dispositivos 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. As mídias removíveis podem ser adotados em um dispositivo e expandir o armazenamento disponível para dados locais do app, fotos, vídeos etc., mas ainda assim estar protegidos por blocos criptografia.
  • Tráfego de texto não criptografado. Os desenvolvedores podem usar um novo StrictMode para garantir que o app não use texto não criptografado.
  • Aumento da proteção do sistema. O aumento da proteção do sistema por meio de políticas aplicadas pelo SELinux. Isso oferece uma melhor capacidade de isolamento entre usuários, filtragem IOCTL, redução da ameaça de serviços expostos, maior restrição de domínios do SELinux e acesso /proc extremamente limitado.
  • Controle de acesso USB: os usuários precisam confirmar para permitir o acesso USB a arquivos, armazenamento ou outras funcionalidades no smartphone. O padrão agora é somente cobrança, com acesso ao armazenamento que exige aprovação explícita do usuário.

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 a proteção de dados ativada, a criptografia total do disco é 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 é protegido contra ataques de força bruta usando scrypt e, em que disponível, ela é 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 a modelo de segurança de controle de acesso discricionário (DAC, na sigla em inglês). 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 para vários usuários em telefones e inclui um modo visitante que pode ser usado para fornecer acesso temporário fácil ao seu dispositivo sem conceder acesso aos seus dados e apps.
  • Atualizações do 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 em WebView.
  • Atualização da criptografia para HTTPS e TLS/SSL. TLSv1.2 e TLSv1.1 agora está ativado, Forward Secrecy agora é preferencial, AES-GCM está ativado, e pacotes de criptografia fracos (MD5, 3DES e pacotes de criptografia de exportação) agora estão 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 protege 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. 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 4 e anterior

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 no Android 4.4:

  • Sandbox do Android reforçado com o SELinux. O Android agora usa o SELinux no modo executável. O SELinux é obrigatório de controle de acesso (MAC) no kernel do Linux usado para aumentar a modelo de segurança com base no controle de acesso discricionário (DAC). Isso aumenta a proteção contra possíveis vulnerabilidades.
  • VPN por usuário. Em dispositivos multiusuários, as VPNs agora são aplicadas por usuário. Isso permite que um usuário encaminhe todo o tráfego de rede por uma VPN sem afetar os outros usuários do 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 a FORTIFY_SOURCE de 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. 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.

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 no Android 4.3:

  • Sandbox do Android reforçado com o SELinux. Esta versão fortalece o sandbox do Android usando o SELinux sistema de controle de acesso obrigatório (MAC, na sigla em inglês) no kernel do Linux. SELinux o reforço é invisível para usuários e desenvolvedores e aumenta a robustez com o modelo de segurança atual do Android, mantendo a compatibilidade com aplicativos existentes. 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 setuid ou setgid. Suporte adicionado para recursos do sistema de arquivos aos arquivos de sistema do Android e removeu todos os programas setuid ou setgid. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança.
  • Autenticação do ADB. No Android 4.2.2 e versões mais recentes, 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 /system agora é montada com o flag nosuid para processos gerados por zigotos, impedindo que apps Android executem programas setuid. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança.
  • Limite de recursos. O zigoto do Android e o adb agora usam prctl(PR_CAPBSET_DROP) para soltar recursos desnecessários antes de executar os aplicativos. 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 para criar chaves de uso exclusivo. Isso fornece aos apps com uma API para criar ou armazenar chaves privadas que não podem ser usadas e 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 dispositivo, mesmo em caso de comprometimento de raiz.
  • NO_NEW_PRIVS. O zygote do 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 app. Isso impede que apps Android executem operações que podem elevar privilégios através do execve. Isso requer a versão 3.5 do kernel do Linux ou mais recente.
  • Melhorias no FORTIFY_SOURCE. FORTIFY_SOURCE ativado no Android x86 e MIPS e fortificadas strchr(), strrchr(), strlen() e umask(). Isso pode detectar possíveis vulnerabilidades de corrupção de memória ou constantes de string.
  • Proteções de realocação. Relocalizações somente leitura (relro) foram ativadas para executáveis vinculados de forma estática, e todas as relocalizações de texto no código do Android foram removidas. Isso fornece uma defesa em profundidade contra possíveis vulnerabilidades de corrupção de memória.
  • Melhoramos o EntropyMixer. O EntropyMixer agora grava entropia no desligamento ou reinicialização, além de misturas periódicas. Isso permite a retenção de todos gerada quando 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 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.

O Android oferece um modelo de segurança em várias camadas descrito na documentação do Visão geral da segurança. 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 o recurso Verificar apps e tenham aplicativos filtrados por um verificador de aplicativos antes da instalação. A verificação de apps pode alertar o usuário se ele tentar instalar um aplicativo que talvez esteja prejudiciais; Se um app for especialmente ruim, ele pode 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 para enviar ou bloquear a mensagem.
  • 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 validação de certificado falha se o certificado não estiver encadeado a 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 revisão do permissões, o usuário pode clicar na permissão para ver instruções informações sobre a permissão.
  • Hardening de instalação:o daemon installd não é executado como usuário raiz, reduzindo a possível superfície de ataque para o escalonamento de privilégios 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:apps que segmentam a API nível 17 têm export definido como false por padrão para cada Conteúdo 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 o seguinte: 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 do Android também podem incluir essas correções.

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 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 do heap.
  • Calloc do OpenBSD para evitar estouros 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
  • Linux mmap_min_addr para mitigar a escalada de privilégio de referência de ponteiro nulo (ainda melhorada no Android 4.1)
Android 4.0
Address Space Layout Randomization (ASLR) para randomizar locais-chave na memória
Android 4.1
  • Suporte a PIE (Position Independent Executable)
  • Relocalizações somente leitura / vinculação imediata (-Wl,-z,relro -Wl,-z,now)
  • dmesg_restrict ativado (evitar o vazamento de endereços do kernel)
  • kptr_restrict ativado (evita o vazamento de endereços do kernel)