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
每个 Android 版本中都包含数十种安全增强功能,以保护用户。以下是 Android 14 中提供的一些主要安全增强功能:
- Android 10 中引入的硬件辅助 AddressSanitizer (HWASan) 是一款类似于 AddressSanitizer 的内存错误检测工具。Android 14 对 HWASan 进行了重大改进。如需了解它如何帮助防止 bug 进入 Android 版本,请访问 HWAddressSanitizer
- 在 Android 14 中,从与第三方共享位置数据的应用开始,系统运行时权限对话框现在包含一个可点击的部分,用于突出显示应用的数据分享做法,包括诸如以下信息:应用为什么可能会决定与第三方分享数据。
- Android 12 引入了在调制解调器级别停用 2G 支持的选项,以保护用户免受 2G 的过时安全模型固有的安全风险的影响。认识到停用 2G 对企业客户的重要性后,Android 14 在 Android Enterprise 中启用了此安全功能,以便 IT 管理员能够限制受管设备降级到 2G 连接。
- 开始支持拒绝未加密的移动网络连接,确保电路交换语音和短信流量始终会加密,并可防范被动无线拦截。详细了解 Android 的移动网络连接强化计划。
- 新增了对多个 IMEI 的支持
- 从 Android 14 开始,AES-HCTR2 是采用加速加密指令的设备的首选文件名加密模式。
- 移动网络连接
- 在 Android 安全中心添加了相关文档
- 如果您的应用以 Android 14 为目标平台并使用动态代码加载 (DCL) 功能,则必须将所有动态加载的文件标记为只读。否则,系统会抛出异常。我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。
Android 13
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 13 中提供的一些主要安全增强功能:
- Android 13 添加了对多文档呈现的支持。 通过这个新的 Presentation Session 接口,应用可以执行多文档呈现,而现有 API 无法做到这一点。如需了解详情,请参阅身份凭据
- 在 Android 13 中,当且仅当源自外部应用的 intent 与其声明的 intent 过滤器元素匹配时,这些 intent 才会传送到导出的组件。
- Open Mobile API (OMAPI) 是一种标准 API,用于与设备的安全元件进行通信。在 Android 13 之前,只有应用和框架模块可以访问此接口。通过将其转换为供应商稳定版接口,HAL 模块还能够通过 OMAPI 服务与安全元件进行通信。 如需了解详情,请参阅 OMAPI 供应商稳定版接口。
- 从 Android 13-QPR 开始,共享 UID 被废弃。 使用 Android 13 或更高版本的用户应在其清单中添加 `android:sharedUserMaxSdkVersion="32"` 行。此条目可防止新用户获取共享 UID。如需详细了解 UID,请参阅应用签名。
- Android 13 添加了对密钥库对称加密基元的支持,例如支持 AES(高级加密标准)、HMAC(密钥哈希消息认证码)以及非对称加密算法(包括椭圆曲线加密、RSA2048、RSA4096 和曲线 25519 加密)
- Android 13(API 级别 33)及更高版本支持用于从应用发送非豁免通知的运行时权限。这可让用户控制他们会看到哪些权限通知。
- 针对请求访问所有设备日志的应用,添加了在每次使用时显示提示的功能,以便用户允许或拒绝授予访问权限。
- 推出了 Android 虚拟化框架 (AVF),它使用标准化 API 将不同的 Hypervisor 整合到一个框架下。 它提供安全、私密的执行环境,以便执行通过 Hypervisor 隔离的工作负载。
- 引入了 APK 签名方案 v3.1 所有使用 apksigner 的新密钥轮替都将默认使用 v3.1 签名方案,以便将 Android 13 及更高版本作为轮替目标。
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 foram criadas para serem compatíveis com dispositivos 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 abaixo da tela
- Adição de suporte para sensores de impressão digital abaixo da tela
- Introdução à Linguagem de definição de interface do Android de impressão digital (AIDL)
- Suporte para a nova AIDL de rosto
- Introdução do Rust como uma linguagem para desenvolvimento de plataformas
- A opção de conceder acesso apenas à localização aproximada foi adicionada
- Adição de indicadores de privacidade na barra de status quando um app está usando a câmera ou o microfone
- O 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:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
Memória somente de execução
Por padrão, as seções de código executável dos binários do sistema AArch64 são marcadas como somente execução (ilegíveis) para reduzir ainda mais os ataques de reutilização de just-in-time. O código que combina dados e código e o código que inspeciona intencionalmente essas seções (sem primeiro remapear os segmentos de memória como legíveis) não funcionam mais. Os apps que têm um SDK de destino do Android 10 (nível 29 da API ou mais recente) serão afetados se o app tentar ler seções de código de bibliotecas do sistema habilitadas para memória somente de execução (XOM, na sigla em inglês) na memória sem primeiro marcar a seção como legível.
Acesso estendido
O mecanismo de "Agentes de confiança" (usado por mecanismos de autenticação terciários, como o Smart Lock) só pode estender o desbloqueio no Android 10. Os agentes de confiança não podem mais desbloquear um dispositivo bloqueado e só podem manter um dispositivo desbloqueado por, no máximo, quatro horas.
Autenticação facial
A autenticação facial permite que os usuários desbloqueiem os dispositivos simplesmente olhando para a frente deles. O Android 10 oferece suporte a uma nova pilha de autenticação facial que pode processar de forma segura os frames da câmera, preservando a segurança e privacidade durante a autenticação facial no hardware com suporte. O Android 10 também fornece uma maneira fácil para que implementações seguras permitam a integração de apps para transações, como para internet banking ou outros serviços.
Limpeza de estouro de números inteiros
O Android 10 ativa a Limpeza de estouro de números inteiros (IntSan) em codecs de software. O desempenho da reprodução precisa ser aceitável para qualquer codec que não tenha suporte do hardware do dispositivo. O IntSan está ativado nos seguintes codecs:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
Componentes modulares do sistema
O Android 10 modulariza alguns componentes do sistema Android e permite que eles sejam atualizados fora do ciclo normal de lançamento do Android. Estes são alguns dos módulos:
- Android Runtime
- Conscrypt
- Resolvedor DNS
- DocumentsUI
- ExtServices
- Media
- ModuleMetadata
- Networking
- PermissionController
- Dados de fuso horário
OEMCrypto
O Android 10 usa a versão 15 da API OEMCrypto.
Scudo
O Scudo é um alocador de memória dinâmico no modo de usuário projetado para ser mais resiliente contra vulnerabilidades relacionadas a heap. Ele fornece as primitivas padrão de alocação e desalocação de C, bem como as primitivas de C++.
ShadowCallStack
ShadowCallStack
(SCS) é um modo de instrumentação
LLVM que protege contra substituições de endereço de retorno, como
overflows de buffer de pilha, salvando o endereço de retorno de uma função em uma instância
ShadowCallStack alocada separadamente no prólogo da função de
funções não-folha e carregando o endereço de retorno da
instância ShadowCallStack no epílogo da função.
WPA3 e Wi-Fi Enhanced Open
O Android 10 adiciona suporte aos padrões de segurança Wi-Fi Protected Access 3 (WPA3) e Wi-Fi Enhanced Open para oferecer melhor privacidade e robustez contra ataques conhecidos.
Privacidade
Acesso ao app ao segmentar o Android 9 ou versões anteriores
Se o app for executado no Android 10 ou versões mais recentes, mas for direcionado ao Android 9 (API de nível 28) ou versões anteriores, o comportamento a seguir será aplicado:
- Se o app declarar um elemento
<uses-permission>paraACCESS_FINE_LOCATIONouACCESS_COARSE_LOCATION, o sistema vai adicionar automaticamente um elemento<uses-permission>paraACCESS_BACKGROUND_LOCATIONdurante a instalação. - Se o app solicitar
ACCESS_FINE_LOCATIONouACCESS_COARSE_LOCATION, o sistema vai adicionarACCESS_BACKGROUND_LOCATIONautomaticamente à solicitação.
Restrições de atividade em segundo plano
A partir do Android 10, o sistema impõe restrições
ao início de atividades em segundo plano. Essa mudança de comportamento ajuda
a minimizar as interrupções para o usuário e dá a ele mais controle sobre o que é
exibido na tela. Desde que seu app inicie atividades como resultado direto
da interação do usuário, é provável que ele não seja afetado por essas restrições.
Para saber mais sobre a alternativa recomendada para iniciar atividades em
segundo plano, consulte o guia sobre como alertar
os usuários sobre eventos que dependem de horários no seu app.
Metadados da câmera
O Android 10 altera a amplitude das informações que o método getCameraCharacteristics()
retorna por padrão. Especificamente, o app precisa ter permissão da CAMERA
para acessar metadados possivelmente específicos do dispositivo que estão
incluídos no valor de retorno desse método.
Para saber mais sobre essas mudanças, consulte a seção sobre os campos
da câmera que exigem permissão.
Dados da área de transferência
A menos que seu app seja o Editor de método de entrada (IME, na sigla em inglês) padrão ou que ele seja o app em foco no momento, ele não poderá acessar dados da área de transferência no Android 10 ou versões mais recentes.
Localização do dispositivo
Para oferecer compatibilidade com o maior controle que os usuários têm sobre o acesso de um app às
informações de localização, o Android 10 introduz a permissão
ACCESS_BACKGROUND_LOCATION.
Ao contrário das permissões ACCESS_FINE_LOCATION
e ACCESS_COARSE_LOCATION, a permissão ACCESS_BACKGROUND_LOCATION só afeta
o acesso de um app à localização quando ele é executado em segundo plano. A menos que uma das seguintes
condições seja atendida, considera-se que o app está acessando a localização em segundo plano:
- Uma atividade pertencente ao app está visível.
- O app está executando um serviço em primeiro plano que declarou um tipo de serviço
em primeiro plano de
location.
Para declarar o tipo de serviço em primeiro plano para um serviço no app, defina atargetSdkVersionoucompileSdkVersiondo app como29ou mais recente. Saiba mais sobre como os serviços em primeiro plano podem continuar ações iniciadas pelo usuário que exigem acesso à localização.
Armazenamento externo
Por padrão, os apps direcionados ao Android 10 e versões mais recentes têm acesso com escopo ao armazenamento externo ou armazenamento com escopo. Esses apps podem ver os seguintes tipos de arquivo em um dispositivo de armazenamento externo sem precisar solicitar permissões de usuário relacionadas ao armazenamento:
- Arquivos no diretório específico do app, acessados usando
getExternalFilesDir(). - Fotos, vídeos e clipes de áudio que o app criou no armazenamento de mídia.
Para saber mais sobre o armazenamento com escopo e como compartilhar, acessar e modificar arquivos salvos em dispositivos de armazenamento externo, consulte os guias sobre como gerenciar arquivos no armazenamento externo e acessar e modificar arquivos de mídia.
Randomização de endereço MAC
Em dispositivos com o Android 10 ou versões mais recentes, o sistema transmite endereços MAC
aleatórios por padrão.
Se o app processa um caso de uso corporativo, a
plataforma oferece APIs para várias operações relacionadas aos endereços MAC:
- Conseguir um endereço MAC aleatório: os apps do proprietário do dispositivo e
do proprietário do perfil podem recuperar o endereço MAC aleatório atribuído a uma
rede específica chamando
getRandomizedMacAddress(). - Conseguir o endereço MAC real de fábrica:os apps do proprietário do dispositivo podem
recuperar o endereço MAC real do hardware de um dispositivo chamando
getWifiMacAddress(). Esse método é útil para rastrear grupos de dispositivos.
Identificadores de dispositivo não reconfiguráveis
A partir do Android 10, os apps precisam ter a
permissão privilegiada READ_PRIVILEGED_PHONE_STATE para acessar
os identificadores não reconfiguráveis do dispositivo, que incluem o IMEI e
o número de série.
BuildTelephonyManager
Se o app não tiver permissão e ainda assim você tentar solicitar informações sobre identificadores não reconfiguráveis, a resposta da plataforma mudará de acordo com a versão do SDK à qual ele está destinado:
- Se o app for direcionado ao Android 10 ou mais recente, uma
SecurityExceptionocorrerá. - Se o app for destinado ao Android 9 (API de nível 28) ou versões anteriores, o método retornará
nullou dados de marcadores caso o app tenha a permissãoREAD_PHONE_STATE. Caso contrário, umaSecurityExceptionvai ocorrer.
Reconhecimento de atividade física
O Android 10 apresenta a permissão de ambiente de execução android.permission.ACTIVITY_RECOGNITION
para apps que precisam detectar a contagem de passos do usuário ou
classificar as atividades físicas dele, como caminhadas, passeios de bicicleta ou em um
veículo. Isso foi projetado para permitir que os usuários vejam nas configurações. como os dados do sensor do dispositivo são usados
Algumas bibliotecas do Google Play Services, como a API Activity
Recognition e a API Google
Fit, não fornecem resultados, a menos que o usuário conceda essa
permissão ao app.
Os únicos sensores
integrados no dispositivo que exigem que você declare essa permissão são os sensores do contador
de passos e do detector
de passos.
Se o app for destinado ao Android 9 (nível 28 da API) ou versões anteriores, o sistema
concederá automaticamente a permissão android.permission.ACTIVITY_RECOGNITION
ao app, conforme necessário, se ele atender a cada uma das seguintes
condições:
- O arquivo de manifesto inclui a
permissão
com.google.android.gms.permission.ACTIVITY_RECOGNITION. - O arquivo de manifesto não inclui a
permissão
android.permission.ACTIVITY_RECOGNITION.
Se o sistema conceder automaticamente a
permissão android.permission.ACTIVITY_RECOGNITION, o app
vai manter a permissão depois que você atualizar o app para o Android 10. No entanto,
o usuário pode revogar essa permissão a qualquer momento nas configurações do sistema.
Restrições do sistema de arquivos /proc/net
Em dispositivos com o Android 10 ou versões mais recentes, os apps não podem acessar
/proc/net, que inclui informações sobre o estado da rede
de um dispositivo. Os apps que precisam de acesso a essas informações, como as VPNs, precisam usar a classe
NetworkStatsManager
ou
ConnectivityManager.
Grupos de permissões removidos da IU
A partir do Android 10, os apps não podem pesquisar como as permissões são agrupadas na interface.
Remoção da afinidade de contatos
A partir do Android 10, a plataforma não monitora as informações de afinidade
de contatos. Como resultado, se o app realizar uma pesquisa nos contatos do usuário,
os resultados não serão ordenados por frequência de interação.
O guia sobre ContactsProvider contém uma notificação descrevendo
os campos
e métodos específicos que estão obsoletos em todos os dispositivos a partir do Android 10.
Acesso restrito ao conteúdo da tela
Para proteger o conteúdo da tela dos usuários, o Android 10 impede o acesso silencioso ao
conteúdo da tela do dispositivo alterando o escopo das permissões
READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT e
CAPTURE_SECURE_VIDEO_OUTPUT. A partir do Android 10, essas
permissões são apenas para acesso por assinatura.
Os apps que precisam acessar o conteúdo da tela do dispositivo precisam usar a
API
MediaProjection, que exibe um aviso solicitando o consentimento do usuário.
Número de série do dispositivo USB
Se o app for destinado ao Android 10 ou versões mais recentes, ele só poderá ler o número de série
depois de receber autorização do usuário para ter acesso ao dispositivo
ou acessório USB.
Para saber mais sobre como trabalhar com dispositivos USB, consulte o guia sobre como configurar
hosts USB.
Wi-Fi
Os apps direcionados ao Android 10 ou versões mais recentes não podem ativar ou desativar o Wi-Fi. O método
WifiManager.setWifiEnabled()
sempre retorna false.
Se você precisar solicitar que os usuários ativem e desativem o Wi-Fi, use um painel
de configurações.
Restrições ao acesso direto a redes Wi-Fi configuradas
Para proteger a privacidade do usuário, a configuração manual da lista de redes Wi-Fi
está restrita aos apps do sistema e a controladores de política
de dispositivo (DPCs, na sigla em inglês). Um determinado DPC pode ser o proprietário do dispositivo ou do
perfil.
Se o app for destinado ao Android 10 ou versões mais recentes e não for um app do sistema ou um
DPC, os métodos a seguir não vão retornar dados úteis:
- O método
getConfiguredNetworks()sempre retorna uma lista vazia. - Todo método de operação de rede que retorna um valor inteiro (
addNetwork()eupdateNetwork()) sempre retorna -1. - Cada operação de rede que retorna um valor booleano (
removeNetwork(),reassociate(),enableNetwork(),disableNetwork(),reconnect()edisconnect()) sempre retornafalse.
Android 9
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Para conferir uma lista de algumas das principais melhorias de segurança disponíveis no Android 9, consulte as Notas da versão do Android.
Android 8
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira algumas das principais melhorias de segurança disponíveis no Android 8.0:
- Criptografia. Foi adicionado suporte para a exclusão de chaves no perfil de trabalho.
- Inicialização verificada. Adicionamos a inicialização verificada do Android (AVB). O código-base da inicialização verificada oferece suporte à proteção de reversão para uso em carregador de inicialização adicionado ao AOSP. Recomendar suporte ao carregador de inicialização para proteção contra reversão para o HLOS. Recomendar que os gerenciadores de inicialização só possam ser desbloqueados com a interação física do usuário com o dispositivo.
- Tela de bloqueio. Foi adicionado suporte ao uso de hardware resistente a adulterações para verificar a credencial da tela de bloqueio.
- KeyStore. Foi necessário o atestado de chave para todos os dispositivos enviados com o Android 8.0 e versões mais recentes. Foi adicionado suporte ao atestado de ID para melhorar o registro sem toque.
- Como colocar no sandbox. Mais sandbox rígido para muitos componentes usando a interface padrão do Project Treble entre o framework e os componentes específicos do dispositivo. A filtragem seccomp foi aplicada a todos os apps não confiáveis para reduzir a superfície de ataque do kernel. A WebView agora é executada em um processo isolado com acesso muito limitado ao restante do sistema.
- Aumento da proteção do kernel. Implementação de usercopy reforçado, emulação de PAN, somente leitura após a inicialização e KASLR.
- Aumento da proteção do espaço do usuário. Implementação da CFI para a pilha de mídia. As sobreposições de apps não podem mais cobrir janelas críticas do sistema, e os usuários têm uma maneira de dispensá-las.
- Atualização do sistema operacional de streaming. Atualizações foram ativadas em dispositivos com pouco espaço em disco.
- Instalar apps desconhecidos. Os usuários precisam conceder permissão para instalar apps de uma fonte que não seja uma app store própria.
- Privacidade. O ID do Android (SSAID) tem um valor diferente para
cada app e usuário no dispositivo. Para apps de navegador da Web, o ID do cliente do Widevine
retorna um valor diferente para cada nome de pacote de app e origem da Web.
O
net.hostnameagora está vazio, e o cliente DHCP não envia mais um nome de host.android.os.Build.SERIALfoi substituído pela APIBuild.SERIAL, que é protegida por uma permissão controlada pelo usuário. Melhoria na randomização de endereços MAC em alguns chipsets.
Android 7
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 7.0 中提供的一些主要安全增强功能:
- 文件级加密:在文件级进行加密,而不是将整个存储区域作为单个单元进行加密。这种加密方式可以更好地隔离和保护设备上的不同用户和资料(例如个人资料和工作资料)。
- 直接启动:通过文件级加密实现,允许特定应用(例如,闹钟和无障碍功能)在设备已开机但未解锁的情况下运行。
- 验证启动:现在,验证启动会被严格强制执行,从而使遭到入侵的设备无法启动;验证启动支持纠错功能,有助于更可靠地防范非恶意数据损坏。
- SELinux。更新后的 SELinux 配置和更高的 Seccomp 覆盖率有助于进一步锁定应用沙盒并减小受攻击面。
- 库加载顺序随机化和改进的 ASLR。 增大随机性降低了某些代码重用攻击的有效性。
- 内核加固:通过将内核内存的各个分区标记为只读,限制内核对用户空间地址的访问,并进一步减小现有的受攻击面,为更高版本的内核添加额外的内存保护。
- APK 签名方案 v2:引入了一种全文件签名方案,该方案有助于加快验证速度并增强完整性保证。
- 可信 CA 存储区。为了使应用更容易控制对其安全网络流量的访问,对于 API 级别为 24 及以上的应用,由用户安装的证书颁发机构以及通过 Device Admin API 安装的证书颁发机构在默认情况下不再受信任。此外,所有新的 Android 设备必须搭载相同的可信 CA 存储区。
- 网络安全配置。通过声明式配置文件来配置网络安全设置和传输层安全协议 (TLS)。
Android 6
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 6.0:
- Permissões de tempo de execução. Os apps solicitam permissões no momento da execução em vez de serem concedidas no momento da instalação. Os usuários podem ativar e desativar as permissões para apps do M e anteriores.
- 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 camada de abstração de hardware (HAL, na sigla em inglês) usada pela API de impressão digital, tela de bloqueio, criptografia de dispositivo e certificados do cliente para proteger chaves contra comprometimento do kernel 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 de cartão SD. A mídia removível pode ser adotada por um dispositivo e expandir o armazenamento disponível para dados locais do app, fotos, vídeos etc., mas ainda ser protegida por criptografia em nível de bloco.
- 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 um melhor isolamento entre usuários, filtragem IOCTL, redução da ameaça de serviços expostos, maior restrição de domínios 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 a aprovação explícita do usuário.
Android 5
5.0
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 5.0 中提供的一些主要安全增强功能:
- 默认加密。在以开箱即用的方式搭载 L 的设备上,会默认启用全盘加密功能,以便更好地保护丢失设备或被盗设备上的数据。对于更新到 L 的设备,可以在设置 > 安全性部分进行加密。
- 经过改进的全盘加密功能。使用
scrypt保护用户密码免遭暴力破解攻击;在可能的情况下,该密钥会绑定到硬件密钥库,以防范来自设备外的攻击。 和以往一样,Android 屏幕锁定密钥和设备加密密钥不会被发送到设备以外,也不会提供给任何应用。 - 通过 SELinux 得到增强的 Android 沙盒。对于所有域,Android 现在都要求 SELinux 处于强制模式。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强现有的自主访问控制 (DAC) 安全模型。这个新的安全层为防范潜在的安全漏洞提供了额外的保护屏障。
- Smart Lock。Android 现在包含一些 Trustlet,它们可以提供更灵活的设备解锁方式。 例如,Trustlet 可让设备在靠近其他可信设备时自动解锁(通过 NFC、蓝牙),或让设备在用户拥有可信面孔时自动解锁。
- 面向手机和平板电脑的多用户功能、受限个人资料和访客模式。Android 现在为手机提供了多用户功能,并包含一个访客模式。利用访客模式,您可以让访客轻松地临时使用您的设备,而不向他们授予对您的数据和应用的访问权限。
- 不使用 OTA 的 WebView 更新方式。现在可以独立于框架对 WebView 进行更新,而且无需采用系统 OTA 方式。 这有助于更快速地应对 WebView 中的潜在安全问题。
- 经过更新的 HTTPS 和 TLS/SSL 加密功能。现在启用了 TLSv1.2 和 TLSv1.1,首选是正向加密,启用了 AES-GCM,停用了弱加密套件(MD5、3DES 和导出密码套件)。如需了解详情,请访问 https://developer.android.com/reference/javax/net/ssl/SSLSocket.html。
- 移除了非 PIE 链接器支持。Android 现在要求所有动态链接的可执行文件都要支持 PIE(位置无关可执行文件)。这有助于增强 Android 的地址空间布局随机化 (ASLR) 实现。
- FORTIFY_SOURCE 改进。以下 libc 函数现在实现了 FORTIFY_SOURCE 保护功能:
stpcpy()、stpncpy()、read()、recvfrom()、FD_CLR()、FD_SET()和FD_ISSET()。这有助于防范涉及这些函数的内存损坏漏洞。 - 安全修复程序。Android 5.0 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,部分搭载更低版本 Android 系统的设备可能也会包含这些修复程序。
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.
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.3 中提供的一些安全增强功能:
- 通过 SELinux 得到增强的 Android 沙盒。此版本利用 Linux 内核中的 SELinux 强制访问权限控制系统 (MAC) 增强了 Android 沙盒。SELinux 强化功能(用户和开发者看不到它)可提高现有 Android 安全模型的可靠性,同时与现有应用保持兼容。为了确保持续兼容,此版本允许以宽容模式使用 SELinux。此模式会记录所有违反政策的行为,但不会中断应用,也不会影响系统行为。
- 没有
setuid或setgid程序。针对 Android 系统文件添加了对文件系统功能的支持,并移除了所有setuid或setgid程序。这可以减小 Root 攻击面,并降低出现潜在安全漏洞的可能性。 - ADB 身份验证。从 Android 4.2.2 起,开始使用 RSA 密钥对为 ADB 连接进行身份验证。这可以防止攻击者在实际接触到设备的情况下未经授权使用 ADB。
- 限制 Android 应用执行 SetUID 程序。
/system分区现在针对 Zygote 衍生的进程装载了 nosuid,以防止 Android 应用执行setuid程序。这可以减小 root 攻击面,并降低出现潜在安全漏洞的可能性。 - 功能绑定。在执行应用之前,Android Zygote 和 ADB 现在会先使用
prctl(PR_CAPBSET_DROP)舍弃不必要的功能。这可以防止 Android 应用和从 shell 启动的应用获取特权功能。 - AndroidKeyStore 提供程序。Android 现在有一个允许应用创建专用密钥的密钥库提供程序。该程序可以为应用提供一个用于创建或存储私钥的 API,其他应用将无法使用这些私钥。
- KeyChain
isBoundKeyAlgorithm。Keychain API 现在提供了一种方法 (isBoundKeyType),可让应用确认系统级密钥是否已绑定到设备的硬件信任根。该方法提供了一个用于创建或存储私钥的位置,即使发生 root 权限被窃取的情况,这些私钥也无法从设备中导出。 NO_NEW_PRIVS。Android Zygote 现在会在执行应用代码之前使用prctl(PR_SET_NO_NEW_PRIVS)禁止添加新权限。这可以防止 Android 应用执行可通过 execve 提升权限的操作。(此功能需要使用 3.5 或更高版本的 Linux 内核)。FORTIFY_SOURCE增强。在 Android x86 和 MIPS 上启用了FORTIFY_SOURCE,并增强了strchr()、strrchr()、strlen()和umask()调用。这可以检测潜在的内存损坏漏洞或没有结束符的字符串常量。- 重定位保护。针对静态关联的可执行文件启用了只读重定位 (relro) 技术,并移除了 Android 代码中的所有文本重定位技术。这可以纵深防御潜在的内存损坏漏洞。
- 经过改进的 EntropyMixer。除了定期执行混合操作之外,EntropyMixer 现在还会在关机或重新启动时写入熵。这样一来,便可以保留设备开机时生成的所有熵,而这对于配置之后立即重新启动的设备来说尤其有用。
- 安全修复程序。Android 4.3 中还包含针对 Android 特有漏洞的修复。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复。
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
installdnã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_NOFOLLOWpara evitar ataques relacionados a links simbólicos. FORTIFY_SOURCE:o Android agora implementaFORTIFY_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
exportdefinido comofalsepor 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.
O Android oferece um modelo de segurança em várias camadas, descrito na Visão geral da segurança do Android. Cada atualização do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira a seguir algumas das melhorias de segurança introduzidas nas versões 1.5 a 4.1 do Android:
- Android 1.5
- ProPolice para evitar estouro de buffer de pilha (-fstack-protector)
- safe_iop para reduzir os overflows de números inteiros
- Extensões para o dlmalloc do OpenBSD para evitar vulnerabilidades de free() duplo e evitar ataques de consolidação de blocos. Os ataques de consolidação de blocos são uma maneira comum de explorar a corrupção de heap.
- calloc do OpenBSD para evitar overflows de números inteiros durante a alocação de memória
- Android 2.3
- Proteções contra vulnerabilidades de string de formato (-Wformat-security -Werror=format-security)
- Never eXecute (NX) baseado em hardware para impedir a execução de código na pilha e no heap
- mmap_min_addr do Linux para mitigar a escalada de privilégio de referência de ponteiro nulo (melhorada no Android 4.1)
- Android 4.0
- Address Space Layout Randomization (ASLR) para gerar locais de chave aleatórios na memória
- Android 4.1
- Suporte a PIE (executável independente de posição)
- Relocalizações somente leitura / vinculação imediata (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict ativado (evita o vazamento de endereços do kernel)
- kptr_restrict ativado (evita o vazamento de endereços do kernel)