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
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:
- Tempo de execução do Android
- Conscriptografar
- Resolvedor DNS
- DocumentosUI
- Serviços Ext
- meios de comunicação
- MóduloMetadados
- Rede
- Controlador de permissão
- Dados de fuso horário
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>
paraACCESS_FINE_LOCATION
ouACCESS_COARSE_LOCATION
, o sistema adicionará automaticamente um elemento<uses-permission>
paraACCESS_BACKGROUND_LOCATION
durante a instalação. - Se seu aplicativo solicitar
ACCESS_FINE_LOCATION
ouACCESS_COARSE_LOCATION
, o sistema adicionará automaticamenteACCESS_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, definatargetSdkVersion
oucompileSdkVersion
do seu aplicativo como29
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:
- Arquivos no diretório específico do aplicativo, acessados usando
getExternalFilesDir()
. - Fotos, vídeos e clipes de áudio que o aplicativo criou no armazenamento de mídia .
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.
-
Build
-
TelephonyManager
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ãoREAD_PHONE_STATE
. Caso contrário, ocorrerá umaSecurityException
.
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:
- O método
getConfiguredNetworks()
sempre retorna uma lista vazia. - Cada método de operação de rede que retorna um valor inteiro
addNetwork()
eupdateNetwork()
— sempre retorna -1. - Cada operação de rede que retorna um valor booleano
removeNetwork()
,reassociate()
,enableNetwork()
,disableNetwork()
,reconnect()
edisconnect()
— sempre retornafalse
.
Android 9
Cada versão do Android inclui dezenas de 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 9, consulte as Notas de versão do Android .
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 APIBuild.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()
eFD_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.
O Android fornece um modelo de segurança de várias camadas descrito na Visão geral de segurança do Android . Cada atualizaçã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 introduzidos no Android 4.2:
- Verificação do aplicativo - os usuários podem optar por ativar "Verificar aplicativos" e fazer com que os aplicativos sejam examinados por um verificador de aplicativos antes da instalação. A verificação do aplicativo pode alertar o usuário se ele tentar instalar um aplicativo que pode ser prejudicial; se um aplicativo for especialmente ruim, pode bloquear a instalação.
- Mais controle de SMS premium - o Android fornecerá uma notificação se um aplicativo tentar enviar SMS para um código curto que usa serviços premium que podem causar cobranças adicionais. O usuário pode optar por permitir que o aplicativo envie a mensagem ou bloqueá-la.
- Always-on VPN - A VPN pode ser configurada para que os aplicativos não tenham acesso à rede até que uma conexão VPN seja estabelecida. Isso impede que os aplicativos 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 receberão uma falha de validação de certificado se o certificado não for encadeado a um conjunto de certificados esperados. Isso protege contra possível comprometimento das Autoridades de Certificação.
- Exibição aprimorada de permissões do Android - As permissões foram organizadas em grupos que são mais facilmente compreendidos pelos usuários. Durante a revisão das permissões, o usuário pode clicar na permissão para ver informações mais detalhadas sobre a permissão.
- installd hardening - O daemon
installd
não é executado como usuário root, reduzindo a potencial superfície de ataque para escalonamento de privilégios de root. - Init script hardening - scripts init agora aplicam a semântica
O_NOFOLLOW
para evitar ataques relacionados a links simbólicos. - FORTIFY_SOURCE - Android agora implementa
FORTIFY_SOURCE
. Isso é usado por bibliotecas e aplicativos do sistema para evitar corrupção de memória. - Configuração padrão do ContentProvider - os aplicativos direcionados à API de nível 17 terão "exportar" definido como "falso" por padrão para cada provedor de conteúdo , reduzindo a superfície de ataque padrão para aplicativos.
- Criptografia - Modificadas as implementações padrão de SecureRandom e Cipher.RSA para usar OpenSSL. Adicionado suporte SSL Socket para TLSv1.1 e TLSv1.2 usando OpenSSL 1.0.1
- Correções de segurança - 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 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.
O Android fornece um modelo de segurança de várias camadas descrito na Visão geral de segurança do Android . Cada atualização do Android inclui dezenas de aprimoramentos de segurança para proteger os usuários. Veja a seguir alguns dos aprimoramentos de segurança introduzidos nas versões do Android 1.5 a 4.1:
- Android 1.5
- ProPolice para evitar estouros de buffer de pilha (-fstack-protector)
- safe_iop para reduzir estouros de inteiros
- Extensões para dlmalloc do OpenBSD para evitar vulnerabilidades double free() e para evitar ataques de consolidação de blocos. Os ataques de consolidação de pedaços são uma maneira comum de explorar a corrupção de heap.
- Calloc OpenBSD para evitar estouros de inteiros durante a alocação de memória
- Android 2.3
- Proteções de vulnerabilidade de string de formato (-Wformat-security -Werror=format-security)
- No eXecute (NX) baseado em hardware para evitar a execução de código na pilha e no heap
- Linux mmap_min_addr para mitigar o escalonamento de privilégios de desreferência de ponteiro nulo (mais aprimorado no Android 4.1)
- Android 4.0
- Randomização de layout de espaço de endereço (ASLR) para randomizar locais de chave na memória
- Android 4.1
- Suporte PIE (Executável Independente de Posição)
- Realocações somente leitura/vinculação imediata (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict habilitado (evitar vazamento de endereços do kernel)
- kptr_restrict habilitado (evitar vazamento de endereços do kernel)