O Android está sempre melhorando as ofertas e as capacidades de segurança. Confira as listas de melhorias por versão no painel de navegação à esquerda.
Android 14
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira algumas das principais melhorias de segurança disponíveis no Android 14:
- O limpador de endereços assistido por hardware (HWASan), introduzido no Android 10, é uma ferramenta de detecção de erros de memória semelhante ao AddressSanitizer. O Android 14 traz melhorias significativas para o HWASan. Saiba como ele ajuda a evitar que bugs cheguem às versões do Android, HWAddressSanitizer
- No Android 14, começando por apps que compartilham dados de local com terceiros, a caixa de diálogo de permissão de execução do sistema agora inclui uma seção clicável que destaca as práticas de compartilhamento de dados do app. Isso inclui o motivo pelo qual esse app pode compartilhar dados com terceiros.
- O Android 12 apresentou uma opção para desativar o suporte a 2G no nível do modem, que protege os usuários do risco de segurança inerente do modelo de segurança obsoleto do 2G. O Android 14 ativa esse recurso de segurança no Android Enterprise, introduzindo suporte para que administradores de TI restrinjam a capacidade de um dispositivo gerenciado de fazer downgrade para a conectividade 2G.
- Adição de suporte para rejeitar conexões de celular com criptografia nula, garantindo que o tráfego de voz e SMS com comutação de circuitos seja sempre criptografado e protegido contra interceptação passiva over-the-air. Saiba mais sobre o programa do Android para aumentar a segurança da conectividade celular.
- Adição de suporte a vários IMEIs
- Desde o Android 14, o AES-HCTR2 é o modo de preferência da criptografia de nomes de arquivos para dispositivos com instruções de criptografia acelerada.
- Conectividade celular
- Adicionamos documentação para o Centro de segurança do Android.
- Se o app for direcionado ao Android 14 e usar o carregamento de código dinâmico (DCL, na sigla em inglês), todos os arquivos carregados dinamicamente vão precisar ser marcados como somente leitura. Caso contrário, o sistema vai gerar uma exceção. Recomendamos que os apps evitem carregar código dinamicamente sempre que possível, porque isso aumenta muito o risco de comprometimento do app por injeção ou adulteração de código.
Confira as notas da versão completas do AOSP e a lista de recursos e mudanças para desenvolvedores do Android.
Android 13
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. A nova interface de sessão de apresentação permite que um app faça uma apresentação de vários documentos, algo que não é possível com a API atual. Para mais informações, consulte Credencial de identidade.
- No Android 13, as intents originadas de apps externos vão ser enviadas a um componente exportado apenas se corresponderem aos 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 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 AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code) e algoritmos criptográficos assimétricos (incluindo curva elíptica, 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 não isentas. Isso dá aos usuários controle sobre 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 fornece ambientes de execução seguros e particulares para executar 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 o apksigner usam o esquema de assinatura v3.1 por padrão para a rotação do Android 13 e versões mais recentes.
Confira as notas da versão completas do AOSP e a lista de recursos e mudanças para desenvolvedores do Android.
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
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。Android 10 包含多项安全和隐私增强功能。如需查看 Android 10 中变化的完整列表,请参阅 Android 10 版本说明。
安全性
BoundsSanitizer
Android 10 在蓝牙和编解码器中部署了 BoundsSanitizer (BoundSan)。BoundSan 使用 UBSan 的边界排错程序。该缓解功能在各个模块级别启用,有助于确保 Android 关键组件的安全性,因此不应停用。以下编解码器启用了 BoundSan:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
只执行内存
默认情况下,AArch64 系统二进制文件的可执行代码部分会被标记为只执行(不可读取),作为应对即时代码重用攻击的安全强化缓解方法。将数据和代码混合在一起的代码以及有目的地检查这些部分的代码(无需首先将内存段重新映射为可读)将不再起作用。如果目标 SDK 为 Android 10(API 级别 29 或更高)的应用尝试读取内存中已启用只执行内存 (XOM) 的系统库的代码部分,而未首先将该部分标记为可读,则此类应用将会受到影响。
扩展访问权限
可信代理是 Smart Lock 等三重身份验证机制使用的底层机制,只能在 Android 10 中延长解锁时间。可信代理无法再解锁已锁定的设备,并且最多只能将设备解锁状态维持四个小时。
人脸识别身份验证
借助人脸识别身份验证功能,用户只需将面孔对准设备正面即可将其解锁。Android 10 添加了对一种全新人脸识别身份验证堆栈的支持,该堆栈可安全处理相机帧,从而在支持的硬件上进行人脸识别身份验证时保障安全和隐私。Android 10 还提供了一种快捷的方式来集成符合安全标准的实现方案,让人们能通过集成应用来处理一些事务(如网上银行或其他服务)。
整数溢出排错功能
Android 10 在软件编解码器中启用了整数溢出排错功能 (IntSan)。确保播放性能对于设备硬件中不支持的任何编解码器而言都在接受范围内。 以下编解码器启用了 IntSan:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
模块化系统组件
Android 10 采用模块化方式处理一些 Android 系统组件,使其能够在 Android 的常规发布周期外的时间进行更新。下面列举了几种模块:
- Android 运行时
- Conscrypt
- DNS 解析器
- DocumentsUI
- ExtServices
- 媒体
- ModuleMetadata
- 网络
- PermissionController
- 时区数据
OEMCrypto
Android 10 使用 OEMCrypto API 版本 15。
Scudo
Scudo 是一个动态的用户模式内存分配器,旨在提高遇到堆相关漏洞时的复原能力。它提供了标准 C 分配和取消分配基元,以及 C++ 基元。
ShadowCallStack
ShadowCallStack
(SCS) 是一种 LLVM 插桩模式,可将函数的返回地址保存到非叶函数的函数 prolog 中单独分配的 ShadowCallStack 实例,并从函数 epilog 中的 ShadowCallStack 实例加载返回地址,从而防止返回地址覆盖(比如堆栈缓冲区溢出)。
WPA3 和 Wi-Fi Enhanced Open
Android 10 添加了对 Wi-Fi Protected Access 3 (WPA3) 和 Wi-Fi Enhanced Open 安全标准的支持,可更好地保护隐私,更稳健地防御已知攻击。
隐私设置
以 Android 9 或更低版本为目标平台时的应用访问权限
如果您的应用在 Android 10 或更高版本上运行,但其目标平台是 Android 9(API 级别 28)或更低版本,则 Android 平台具有以下行为:
- 如果您的应用为
ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION声明了<uses-permission>元素,则系统会在安装期间自动为ACCESS_BACKGROUND_LOCATION添加<uses-permission>元素。 - 如果您的应用请求了
ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION,系统会自动将ACCESS_BACKGROUND_LOCATION添加到请求中。
后台 Activity 限制
从 Android 10 开始,系统会增加针对从后台启动 Activity 的限制。此项行为变更有助于最大限度地减少对用户造成的干扰,并且可以让用户更好地控制其屏幕上显示的内容。只要您的应用启动 activity 是因用户互动直接引发的,该应用就极有可能不会受到这些限制的影响。
如需详细了解从后台启动 activity 的建议替代方法,请参阅有关如何在应用中提醒用户注意有时效性的事件的指南。
相机元数据
Android 10 更改了 getCameraCharacteristics() 方法默认返回的信息的广度。具体而言,您的应用必须具有 CAMERA 权限才能访问此方法的返回值中可能包含的设备特定元数据。
如需详细了解这些变更,请参阅关于需要权限的相机字段的部分。
剪贴板数据
对于 Android 10 或更高版本,除非您的应用是默认输入法 (IME) 或是目前聚焦的应用,否则它无法访问剪贴板中的数据。
设备位置
为了让用户更好地控制应用对位置信息的访问权限,Android 10 引入了 ACCESS_BACKGROUND_LOCATION 权限。
不同于 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限,ACCESS_BACKGROUND_LOCATION 权限仅会影响应用在后台运行时对位置信息的访问权限。除非符合以下条件之一,否则应用将被视为在后台访问位置信息:
- 属于该应用的 Activity 可见。
- 该应用运行的某个前台服务已声明前台服务类型为
location。
如需将应用中的某个服务声明为前台服务类型,请将应用的targetSdkVersion或compileSdkVersion设置为29或更高版本。详细了解前台服务如何继续执行用户发起的需要访问位置信息的操作。
外部存储空间
默认情况下,以 Android 10 及更高版本为目标平台的应用在访问外部存储设备中的文件时存在范围限制,即分区存储。此类应用可以查看外部存储设备内以下类型的文件,无需请求任何与存储相关的用户权限:
- 特定于应用的目录中的文件(使用
getExternalFilesDir()访问)。 - 应用创建的照片、视频和音频片段(通过媒体库访问)。
如需详细了解分区存储以及如何共享、访问和修改在外部存储设备上保存的文件,请参阅有关如何管理外部存储设备中的文件以及如何访问和修改媒体文件的指南。
随机分配 MAC 地址
默认情况下,在搭载 Android 10 或更高版本的设备上,系统会传输随机分配的 MAC 地址。
如果您的应用处理企业使用场景,Android 平台会提供 API,用于执行与 MAC 地址相关的几个操作。
- 获取随机分配的 MAC 地址:设备所有者应用和资料所有者应用可以通过调用
getRandomizedMacAddress()检索分配给特定网络的随机分配 MAC 地址。 - 获取实际的出厂 MAC 地址:设备所有者应用可以通过调用
getWifiMacAddress()检索设备的实际硬件 MAC 地址。此方法对于跟踪设备队列非常有用。
不可重置的设备标识符
从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包括 IMEI 和序列号)。
BuildTelephonyManager
如果您的应用没有该权限,但您仍尝试查询不可重置标识符的相关信息,则 Android 平台的响应会因目标 SDK 版本而异:
- 如果应用以 Android 10 或更高版本为目标平台,则会发生
SecurityException。 - 如果应用以 Android 9(API 级别 28)或更低版本为目标平台,则相应方法会返回
null或占位符数据(如果应用具有READ_PHONE_STATE权限)。否则,会发生SecurityException。
身体活动识别
Android 10 针对需要检测用户步数或对用户的身体活动(例如步行、骑车或坐车)进行分类的应用引入了 android.permission.ACTIVITY_RECOGNITION 运行时权限。此项权限旨在让用户了解设备传感器数据在“设置”中的使用方式。
除非用户已向您的应用授予此权限,否则 Google Play 服务中的一些库(例如 Activity Recognition API 和 Google Fit API)不会提供结果。
设备上要求您声明此权限的内置传感器只有计步器和步测器传感器。
如果您的应用以 Android 9(API 级别 28)或更低版本为目标平台,只要您的应用满足以下各项条件,系统会根据需要自动向您的应用授予 android.permission.ACTIVITY_RECOGNITION 权限:
- 清单文件包含
com.google.android.gms.permission.ACTIVITY_RECOGNITION权限。 - 清单文件不包含
android.permission.ACTIVITY_RECOGNITION权限。
如果系统自动授予 android.permission.ACTIVITY_RECOGNITION 权限,当您将应用更新为以 Android 10 为目标平台后,您的应用会保留此权限。但是,用户可以随时在系统设置中撤消此权限。
/proc/net 文件系统限制
在搭载 Android 10 或更高版本的设备上,应用无法访问 /proc/net,包括与设备的网络状态相关的信息。需要访问此信息的应用(如 VPN)应使用 NetworkStatsManager 或 ConnectivityManager 类。
从界面中移除了权限组
从 Android 10 开始,应用无法在界面中查询权限的分组方式。
移除了联系人关系密切程度
从 Android 10 开始,平台不再记录联系人的关系密切程度信息。因此,如果您的应用对用户的联系人进行搜索,系统将不会按互动频率对搜索结果排序。
有关 ContactsProvider 的指南包含一项说明特定字段和方法已废弃的声明(从 Android 10 开始,这些字段和方法在所有设备上已作废)。
限制对屏幕内容的访问
为了保护用户的屏幕内容,Android 10 更改了 READ_FRAME_BUFFER、CAPTURE_VIDEO_OUTPUT 和 CAPTURE_SECURE_VIDEO_OUTPUT 权限的作用域,从而禁止以静默方式访问设备的屏幕内容。从 Android 10 开始,这些权限只能通过签名访问。
需要访问设备屏幕内容的应用应使用 MediaProjection API,此 API 会显示要求用户同意访问的提示。
USB 设备序列号
如果您的应用以 Android 10 或更高版本为目标平台,则该应用只能在用户授予其访问 USB 设备或配件的权限后才能读取序列号。
如需详细了解如何使用 USB 设备,请参阅有关如何配置 USB 主机的指南。
Wi-Fi
以 Android 10 或更高版本为目标平台的应用无法启用或停用 Wi-Fi。WifiManager.setWifiEnabled() 方法始终返回 false。
如果您需要提示用户启用或停用 Wi-Fi,请使用设置面板。
对直接访问已配置的 Wi-Fi 网络实施了限制
为了保护用户隐私,只有系统应用和设备政策控制者 (DPC) 支持手动配置 Wi-Fi 网络列表。给定 DPC 可以是设备所有者,也可以是资料所有者。
如果应用以 Android 10 或更高版本为目标平台,并且应用不是系统应用或 DPC,则下列方法不会返回有用数据:
getConfiguredNetworks()方法始终返回空列表。- 每个返回整数值的网络操作方法(
addNetwork()和updateNetwork())始终返回 -1。 - 每个返回布尔值的网络操作(
removeNetwork()、reassociate()、enableNetwork()、disableNetwork()、reconnect()和disconnect())始终返回false。
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
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. Ativado pela criptografia baseada em arquivos, o Direct Boot permite que determinados apps, como o despertador e os recursos de acessibilidade, sejam executados quando o dispositivo está ligado, mas não desbloqueado.
- Inicialização verificada. A inicialização verificada agora é aplicada estritamente para impedir a inicialização de dispositivos comprometidos. Ela oferece suporte à correção de erros para melhorar a confiabilidade contra corrupção de dados não maliciosa.
- SELinux. A configuração atualizada do SELinux e o aumento da cobertura do seccomp bloqueiam ainda mais o sandbox do aplicativo e reduzem a superfície de ataque.
- Randomização da ordem de carregamento da biblioteca e ASLR aprimorado. A randomização maior torna alguns ataques de reutilização de código menos eficazes.
- Aumento da proteção do kernel. Adicionamos 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 do espaço do usuário e reduzindo ainda mais a superfície de ataque existente.
- Esquema de assinatura de APK v2. Foi introduzido um esquema de assinatura de arquivos inteiros que melhora a velocidade de verificação e reforça as garantias de integridade.
- Armazenamento de CAs confiáveis. Para facilitar o controle de acesso aos apps de tráfego de rede seguro, as autoridades certificadoras instaladas pelo usuário e as instaladas pelas APIs Device Admin não são mais confiáveis por padrão para apps com nível desejado da API 24 ou mais recente. Além disso, todos os novos dispositivos Android precisam ser enviados com a mesma loja de ACs confiáveis.
- Configuração de segurança de rede. Configure a segurança de rede e o TLS usando um arquivo de configuração declarativa.
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
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira algumas das principais melhorias de segurança disponíveis no Android 5.0:
- Criptografado por padrão. Em dispositivos que vêm com o L out-of-the-box, a criptografia de disco completo é ativada por padrão para melhorar a proteção de dados em dispositivos perdidos ou roubados. Os dispositivos que forem atualizados para L poderão ser criptografados em Configurações > Segurança .
- Melhoria na criptografia de disco completo. A senha do usuário é
protegida contra ataques de força bruta usando
scrypte, quando disponível, a chave é vinculada ao keystore de hardware para evitar ataques fora do dispositivo. Como sempre, o segredo de bloqueio de tela do Android e a chave de criptografia do dispositivo não são enviados para fora do dispositivo nem expostos a nenhum aplicativo. - Sandbox do Android reforçado com o SELinux . O Android agora exige o SELinux no modo de restrição para todos os domínios. O SELinux é um sistema de controle de acesso obrigatório (MAC) no kernel do Linux usado para aumentar o modelo de segurança de controle de acesso discricionário (DAC) existente. Essa nova camada oferece proteção extra contra possíveis vulnerabilidades de segurança.
- Smart Lock. O Android agora inclui trustlets que oferecem mais flexibilidade para desbloquear dispositivos. Por exemplo, os trustlets podem permitir que os dispositivos sejam desbloqueados automaticamente quando estiverem próximos de outro dispositivo confiável (por NFC, Bluetooth) ou sendo usados por alguém com uma face confiável.
- Modos de vários usuários, perfil restrito e visitante para smartphones e tablets. O Android agora oferece suporte a vários usuários em smartphones e inclui um modo visitante que pode ser usado para fornecer acesso temporário fácil ao dispositivo sem conceder acesso aos dados e aos apps.
- Atualizações na WebView sem OTA. Agora, a WebView pode ser atualizada independentemente do framework e sem um OTA do sistema. Isso permite uma resposta mais rápida a possíveis problemas de segurança na WebView.
- Criptografia atualizada para HTTPS e TLS/SSL. Os protocolos TLSv1.2 e TLSv1.1 foram ativados, o Forward Secrecy é a opção preferencial, o AES-GCM foi ativado e os pacotes de criptografia fracos (MD5, 3DES e pacotes de criptografia de exportação) foram desativados. Consulte https://developer.android.com/reference/javax/net/ssl/SSLSocket.html para mais detalhes.
- O suporte para o linker não-PIE foi removido. O Android agora exige que todos os executáveis vinculados dinamicamente ofereçam suporte a PIE (executáveis independentes de posição). Isso melhora a implementação da ordem aleatória do layout do espaço de endereço do Android (ASLR).
- Melhorias no FORTIFY_SOURCE. As seguintes funções libc
agora implementam proteções FORTIFY_SOURCE:
stpcpy(),stpncpy(),read(),recvfrom(),FD_CLR(),FD_SET()eFD_ISSET(). Isso oferece proteção contra vulnerabilidades de corrupção de memória que envolvem essas funções. - Correções de segurança. O Android 5.0 também inclui correções para vulnerabilidades específicas do Android. Informações sobre essas vulnerabilidades foram fornecidas aos membros da Open Handset Alliance, e as correções estão disponíveis no Android Open Source Project. Para melhorar a segurança, alguns dispositivos com versões anteriores do Android também podem incluir essas correções.
Android 4 e versões anteriores
Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Confira a seguir algumas das melhorias de segurança disponíveis no Android 4.4:
- Sandbox do Android reforçado com o SELinux. O Android agora usa o SELinux no modo de restrição. O SELinux é um sistema de controle de acesso obrigatório (MAC) no kernel do Linux usado para aumentar o modelo de segurança baseado em controle de acesso discricionário (DAC). Isso oferece proteção extra contra possíveis vulnerabilidades de segurança.
- VPN por usuário. Em dispositivos multiusuários, as VPNs agora são aplicadas por usuário. Isso permite que um usuário roteie todo o tráfego de rede por uma VPN sem afetar outros usuários no dispositivo.
- Suporte ao provedor ECDSA no AndroidKeyStore. O Android agora tem um provedor de keystore que permite o uso de algoritmos ECDSA e DSA.
- Avisos de monitoramento de dispositivos. O Android mostra um aviso aos usuários se algum certificado tiver sido adicionado à loja de certificados do dispositivo que permita o monitoramento do tráfego de rede criptografado.
- FORTIFY_SOURCE. O Android agora oferece suporte ao nível 2 do FORTIFY_SOURCE, e todo o código é compilado com essas proteções. O FORTIFY_SOURCE foi aprimorado para funcionar com clang.
- Fixação de certificados. O Android 4.4 detecta e impede o uso de certificados fraudulentos do Google usados em comunicações SSL/TLS seguras.
- Correções de segurança. O Android 4.4 também inclui correções de vulnerabilidades específicas do Android. Foram fornecidas informações sobre essas vulnerabilidades aos membros do Open Handset Alliance, e as correções estão disponíveis no Android Open Source Project. Para melhorar a segurança, alguns dispositivos com versões anteriores do Android também podem incluir essas correções.
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.3:
- Sandbox do Android reforçado com o SELinux. Esta versão fortalece o sandbox do Android usando o sistema de controle de acesso obrigatório (MAC) do SELinux no kernel do Linux. O reforço do SELinux é invisível para usuários e desenvolvedores e aumenta a robustez do modelo de segurança do Android, mantendo a compatibilidade com os apps atuais. 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
setuidousetgid. Foi adicionado suporte a recursos do sistema de arquivos aos arquivos do sistema Android e todos os programassetuidousetgidforam removidos. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança. - Autenticação do ADB. A partir do Android 4.2.2, 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
/systemagora é montada com o flag nosuid para processos gerados por zigotos, impedindo que apps Android executem programassetuid. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança. - Limite de capacidade.
O zygote do Android e o ADB agora usam
prctl(PR_CAPBSET_DROP)para descartar recursos desnecessários antes de executar apps. 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 que os apps criem chaves de uso exclusivo. Isso fornece aos apps uma API para criar ou armazenar chaves privadas que não podem ser usadas por 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 do dispositivo, mesmo em caso de comprometimento da raiz. NO_NEW_PRIVS. O zygote do Android agora usaprctl(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 os apps Android realizem operações que podem elevar privilégios pelo execve. Isso requer a versão 3.5 ou mais recente do kernel do Linux.- Melhorias no
FORTIFY_SOURCE.FORTIFY_SOURCEfoi ativado no Android x86 e MIPS e foram fortalecidas as chamadasstrchr(),strrchr(),strlen()eumask(). Isso pode detectar possíveis vulnerabilidades de corrupção de memória ou constantes de string não terminadas. - Proteções de realocação. Relocações somente leitura (relro) foram ativadas para executáveis vinculados de forma estática e todas as relocalizações de texto foram removidas do código do Android. Isso fornece uma defesa em profundidade contra possíveis vulnerabilidades de corrupção de memória.
- Melhorias no EntropyMixer. O EntropyMixer agora grava entropia no desligamento ou reinicialização, além de misturas periódicas. Isso permite a retenção de toda a entropia gerada enquanto os dispositivos estão ligados, e é especialmente útil para dispositivos reiniciados 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.
Android 提供了一个多层安全模型,Android 安全性概述中对该模型进行了介绍。每个 Android 更新版本中都包含数十项用于保护用户的安全增强功能。 以下是 Android 4.2 中引入的一些安全增强功能:
- 应用验证:用户可以选择启用“验证应用”,并且可以选择在安装应用之前由应用验证程序对应用进行筛查。如果用户尝试安装的应用可能有害,应用验证功能可以提醒用户;如果应用的危害性非常大,应用验证功能可以阻止安装。
- 加强对付费短信的控制:如果有应用尝试向使用付费服务的短号码发送短信(可能会产生额外的费用),Android 将会通知用户。用户可以选择是允许还是阻止该应用发送短信。
- 始终开启的 VPN:可以配置 VPN,以确保在建立 VPN 连接之前应用无法访问网络。这有助于防止应用跨其他网络发送数据。
- 证书锁定:Android 的核心库现在支持证书锁定。如果证书未关联到一组应关联的证书,锁定的域将会收到证书验证失败消息。这有助于保护证书授权机构免遭可能的入侵。
- 改进后的 Android 权限显示方式:权限划分到了多个对用户来说更清晰明了的组中。在审核权限时,用户可以点击权限来查看关于相应权限的更多详细信息。
- installd 安全强化:
installd守护程序不会以 root 用户身份运行,这样可以缩小 root 提权攻击的潜在攻击面。 - init 脚本安全强化:init 脚本现在会应用
O_NOFOLLOW语义来防范与符号链接相关的攻击。 FORTIFY_SOURCE:Android 现在会实现FORTIFY_SOURCE,以供系统库和应用用于防范内存损坏。- ContentProvider 默认配置:默认情况下,对于每个 content provider,以 API 级别 17 为目标的应用都会将
export设为false,以缩小应用的默认受攻击面。 - 加密:修改了 SecureRandom 和 Cipher.RSA 的默认实现,以便使用 OpenSSL。为使用 OpenSSL 1.0.1 的 TLSv1.1 和 TLSv1.2 添加了安全套接字支持
- 安全漏洞修复程序:升级了开放源代码库,在其中新增了一些安全漏洞修复程序,其中包括 WebKit、libpng、OpenSSL 和 LibXML。Android 4.2 中还包含针对 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 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)