Guia do fabricante para segurança Android de longo prazo

Este guia descreve as práticas recomendadas pelo Google para a aplicação de patches de segurança avaliados pelo Android Compatibility Test Suite (CTS). Destina-se a fabricantes de equipamentos OEM compatíveis com Android (fabricantes) que terão suporte por mais de três anos, como veículos, TVs, decodificadores e eletrodomésticos. Este guia não se destina a usuários finais (por exemplo, proprietários de veículos).

Agradecimentos e isenções de responsabilidade

Este guia não vincula legal ou contratualmente o Google ou outros fabricantes e não pretende ser um conjunto de requisitos. Em vez disso, este guia é um auxílio instrucional que descreve as práticas recomendadas.

Opinião

Este guia não pretende ser abrangente; revisões adicionais estão planejadas. Envie comentários para fabricantes-guide-android@googlegroups.com.

Glossário

Prazo Definição
ACC Compromisso de compatibilidade com Android. Anteriormente conhecido como Acordo Antifragmentação do Android (AFA).
AOSP Projeto de código aberto Android
ASB Boletim de segurança do Android
BSP Pacote de suporte da diretoria
CDD Documento de definição de compatibilidade
CTS Conjunto de testes de compatibilidade
FOTA firmware pelo ar
GPS Sistema de Posicionamento Global
MISRA Associação de confiabilidade de software da indústria automobilística
NIST Instituto Nacional de Padrões e Tecnologia
OBD diagnóstico a bordo ( OBD-II é uma melhoria em relação ao OBD-I em capacidade e padronização )
OEM Fabricante de Equipamento Original
SO sistema operacional
SEI Instituto de Engenharia de Software
SoC sistema em chip
POP início da produção
SPL Nível de patch de segurança
TPMS sistema de monitorização da pressão nos pneus

Sobre o sistema operacional Android

Android é uma pilha completa de software de código aberto baseada em Linux, projetada para uma variedade de dispositivos e formatos. Desde seu primeiro lançamento em 2008, o Android se tornou o sistema operacional (SO) mais popular, alimentando mais de 1,4 bilhão de dispositivos em todo o mundo (2016). Aproximadamente 67% desses dispositivos usam Android 5.0 (Lollipop) ou mais recente em março de 2017 (números mais recentes estão disponíveis no Android Dashboard ). Embora a grande maioria dos dispositivos sejam telefones celulares e tablets, o Android está crescendo em smartwatches, TVs e dispositivos automotivos de infoentretenimento (IVI).

O número de aplicativos Android disponíveis na Google Play Store atingiu mais de 2,2 milhões (2016). O desenvolvimento de aplicativos Android é apoiado pelo programa Android Compatibility, que define um conjunto de requisitos por meio do Documento de Definição de Compatibilidade (CDD) e fornece ferramentas de teste por meio do Compatibility Test Suite (CTS) . Os programas de compatibilidade Android garantem que qualquer aplicativo Android possa ser executado em qualquer dispositivo compatível com Android que suporte os recursos necessários para o aplicativo.

O Google lança regularmente novas versões do sistema operacional, atualizações de segurança do sistema operacional e informações sobre vulnerabilidades descobertas. O Boletim de Segurança do Android deve ser revisado pelos fabricantes quanto à aplicabilidade dessas atualizações aos produtos compatíveis com o sistema operacional Android. Para uma análise da segurança, compatibilidade e sistemas de compilação do Android, consulte o seguinte:

Sobre veículos conectados (produtos canônicos de longa duração)

Os veículos começaram a ser conectados com a introdução do rádio AM na década de 1920. A partir daí, o número de conexões externas físicas e sem fio começou a crescer à medida que reguladores e fabricantes de automóveis recorreram à eletrônica para facilitar diagnósticos e serviços (por exemplo, porta OBD-II), melhorar a segurança (por exemplo, TPMS) e cumprir metas de economia de combustível. . A onda seguinte de conectividade introduziu recursos de conveniência para o motorista, como entrada remota sem chave, sistemas telemáticos e recursos avançados de infoentretenimento, como Bluetooth, Wi-Fi e projeção de smartphone. Hoje, sensores integrados e conectividade (por exemplo, GPS) apoiam sistemas de segurança e condução semiautônoma.

À medida que o número de conexões de veículos aumenta, também aumenta a área da superfície potencial de ataque de veículos. As conexões trazem consigo uma série de preocupações de segurança cibernética semelhante à dos produtos eletrônicos de consumo. No entanto, embora reinicializações, atualizações diárias de patches e comportamentos inexplicáveis ​​sejam a norma para produtos eletrônicos de consumo, eles são inconsistentes para produtos com sistemas críticos de segurança, como veículos.

Os fabricantes devem adotar uma abordagem proativa para garantir a segurança contínua e a postura de proteção de um produto no campo. Em suma, os fabricantes devem estar cientes das vulnerabilidades de segurança conhecidas no produto e adotar uma abordagem baseada no risco para as resolver.

Garanta segurança a longo prazo

Um veículo conectado geralmente possui uma ou mais unidades de controle eletrônico (ECUs) que incluem vários componentes de software, como sistema operacional, bibliotecas, utilitários, etc. Os fabricantes devem rastrear esses componentes e identificar vulnerabilidades conhecidas publicadas com análise proativa, incluindo:

  • Avaliar regularmente o produto em relação ao banco de dados de Vulnerabilidades e Exposições Comuns (CVE).
  • Coleta de inteligência para falhas de segurança relacionadas ao produto.
  • Testes de segurança.
  • Analisando ativamente os boletins de segurança do Android.

Exemplo de atualizações de sistema operacional e patch de segurança (IVIs executando Android):

Figura 1. Exemplo de implementação de atualização de segurança e sistema operacional principal ao longo da vida útil do veículo.

# Etapa Atividades

Ramo de Desenvolvimento O fabricante seleciona uma versão do Android (Android X). Neste exemplo, o "Android X" se torna a base do que será enviado no veículo dois anos antes do início da produção (SOP).
Lançamento Inicial Alguns meses antes do Android X se tornar a primeira versão do sistema operacional fornecida com o produto, as atualizações de segurança são obtidas dos Boletins de Segurança do Android (ASBs) e potencialmente de outras fontes consideradas valiosas pelo fabricante. y2 = o segundo Boletim de Segurança para a versão X do Android, aplicado (backportado) pelo fabricante ao Android X. Esta atualização é fornecida com o produto e o relógio de produção começa a contar no Ano Zero com o Android X.y2.

Neste exemplo, o fabricante tomou a decisão de não enviar o lançamento anual mais recente do Android X+1. Os motivos para enviar a versão mais recente incluem a adição de novos recursos, a solução de novas vulnerabilidades de segurança e/ou o envio de serviços do Google ou de terceiros que exigem a versão mais recente do Android. As razões contra o envio da versão mais recente são a falta de tempo inerente ao processo de desenvolvimento e lançamento do veículo necessário para integrar, testar e validar as alterações, incluindo a conformidade com todos os requisitos regulamentares e de certificação.

Atualização completa do sistema operacional Pós-SOP, o fabricante lança a atualização do sistema operacional Android X+2, que é dois lançamentos do Android após a versão usada para o produto inicial (Android X0). As atualizações de segurança ASB estão disponíveis para o nível API (a partir da data de envio), portanto, a atualização sai como X+2.y0 aproximadamente 1,25 anos após o SOP. Esta atualização do sistema operacional pode ou não ser compatível com produtos em campo. Se for, um plano poderia ser criado para atualizar os veículos implantados.

A menos que outros acordos comerciais estejam em vigor, a decisão de fazer uma atualização completa do sistema operacional fica inteiramente a critério do fabricante.

Atualização de segurança Dois anos após o início da vida útil de produção do veículo, o fabricante corrige o sistema operacional Android X+2. Esta decisão baseia-se na avaliação de risco do fabricante. O fabricante escolhe a terceira atualização de segurança ASB para a versão X+2 como base da atualização. Os produtos que recebem a atualização de segurança agora estão no nível (X+2.y3) OS + patch de segurança do Android.

Embora os fabricantes possam selecionar patches de segurança individuais de qualquer ASB individual, eles devem corrigir todos os problemas necessários no boletim para usar o nível de patch de segurança (SPL) do Android associado ao boletim (por exemplo, 05/02/2017). É responsabilidade do fabricante realizar o backport e a liberação de segurança do produto suportado.

Atualização completa do sistema operacional Repetindo a etapa 3 (atualização completa do sistema operacional), a segunda atualização completa do sistema operacional leva o produto até o Android X+4, três anos após o início da vida útil de produção do veículo. O fabricante agora está equilibrando os requisitos de hardware mais recentes de uma versão recente do Android com o hardware do produto e o usuário se beneficia de um sistema operacional Android atualizado. O fabricante lança uma atualização sem atualizações de segurança, então o produto agora está no nível (X+4.y0) OS + patch de segurança do Android.

Neste exemplo, devido a limitações de hardware, X+4 é a última versão principal do Android que será fornecida para este produto, embora mais de 6 anos de vida útil esperada para o veículo ainda exijam suporte de segurança.

Atualização de segurança Uma repetição da etapa 4 (Atualização de segurança). O fabricante tem a tarefa de obter atualizações de segurança ASB de uma versão muito posterior do Android (X+6) e portar algumas ou todas essas atualizações de volta para o Android X+4. É responsabilidade do fabricante fundir, integrar e realizar as atualizações (ou contratar terceiros). Além disso, o fabricante deve estar ciente de que problemas de segurança em versões do Android que não são mais suportadas não são cobertos pelo ASB.
Atualização de segurança Oito anos após o início do ciclo de vida de produção do veículo, quatro lançamentos do Android desde a última atualização do sistema operacional na Etapa 5 (atualização completa do sistema operacional) e dez anos desde que o Android X foi especificado, a responsabilidade de curadoria e backport de patches de segurança é inteiramente do fabricante para aquelas versões anteriores a três anos do lançamento público no nível da API.

Melhores práticas de segurança

Para dificultar os comprometimentos de segurança, o Google recomenda e emprega o uso de práticas recomendadas comumente aceitas para segurança e engenharia de software, conforme descrito em Implementação de segurança .

Diretrizes de segurança

As práticas recomendadas para segurança incluem:

  • Use as versões mais recentes de bibliotecas externas e componentes de código aberto.
  • Não inclua funcionalidade de depuração intrusiva nas versões de lançamento do sistema operacional.
  • Remova funcionalidades não utilizadas (para reduzir a superfície de ataque desnecessária).
  • Use o princípio do menor privilégio e outras práticas recomendadas de desenvolvimento de aplicativos Android .

Diretrizes de desenvolvimento de software

As práticas recomendadas para o desenvolvimento seguro de software durante o ciclo de vida do sistema incluem:

  • Execute modelagem de ameaças para classificar e identificar ativos, ameaças e possíveis mitigações.
  • Execute a revisão de arquitetura/design para garantir um design seguro e sólido.
  • Execute revisões regulares de código para identificar antipadrões e bugs o mais rápido possível.
  • Projete, implemente e execute testes unitários de alta cobertura de código, incluindo:
    • Teste funcional (incluindo casos de teste negativos)
    • Testes de regressão regulares (para garantir que bugs corrigidos não reapareçam)
    • Teste Fuzz (como parte do conjunto de testes de unidade)
  • Use ferramentas estáticas de análise de código-fonte (scan-build, lint, etc.) para identificar possíveis problemas.
  • Use ferramentas dinâmicas de análise de código-fonte, como AddressSanitizer, UndefinedBehaviorSanitizer e FORTIFY_SOURCE (para componentes nativos) para identificar e mitigar possíveis problemas durante o desenvolvimento do sistema.
  • Tenha uma estratégia de gerenciamento para código-fonte de software e configuração/versão de lançamento.
  • Tenha uma estratégia de gerenciamento de patches para geração e implantação de patches de software.

Política de backport de segurança

Atualmente, o Google fornece suporte ativo para backports de segurança de vulnerabilidades de segurança descobertas e relatadas por três (3) anos a partir do lançamento público no nível da API . O suporte ativo consiste no seguinte:

  1. Receba e investigue relatórios de vulnerabilidade.
  2. Crie, teste e libere atualizações de segurança.
  3. Forneça lançamentos recorrentes de atualizações de segurança e detalhes de boletins de segurança.
  4. Realize a avaliação da gravidade de acordo com as diretrizes estabelecidas.

Após três anos da data de lançamento público do nível da API, o Google recomenda as seguintes diretrizes:

  • Use um terceiro (como fornecedor de SoC ou provedor de Kernel) para suporte backport para atualizações de segurança do sistema operacional com mais de três anos a partir do lançamento da API.
  • Use terceiros para realizar revisões de código usando os ASBs fornecidos publicamente. Embora os ASBs identifiquem vulnerabilidades para a versão atualmente suportada, um fabricante pode usar as informações fornecidas para comparar as atualizações recém-lançadas com versões anteriores. Esses dados podem ser usados ​​para realizar análises de impacto e potencialmente gerar patches semelhantes para versões de sistema operacional anteriores a três anos do lançamento da API.
  • Quando apropriado, carregue atualizações de segurança no Android Open Source Project (AOSP).
  • O fabricante deve coordenar o tratamento de atualizações de segurança para códigos específicos do fornecedor (por exemplo, código proprietário específico do dispositivo).
  • O fabricante deve ingressar no grupo de notificação do NDA Android Security Bulletin Partner Preview (requer a assinatura de acordos legais, como o NDA do desenvolvedor). Os boletins devem incluir:
    • Anúncios
    • Resumo dos problemas por nível de patch, incluindo CVE e gravidade
    • Detalhes de vulnerabilidade quando apropriado

Referências adicionais

Para obter instruções sobre codificação segura e práticas de desenvolvimento de software, consulte o seguinte:

O Google incentiva o uso das seguintes práticas recomendadas.

Geralmente é recomendado que qualquer produto conectado seja lançado com a versão mais recente do sistema operacional, e o fabricante deve tentar usar a versão mais recente do sistema operacional antes de lançar o produto. Embora o bloqueio da versão seja necessário para gerar estabilidade antes do teste e da validação, o fabricante deve equilibrar a estabilidade do produto obtida com versões mais antigas do sistema operacional com versões mais recentes do sistema operacional que tenham menos vulnerabilidades de segurança conhecidas e proteções de segurança aprimoradas.

As diretrizes recomendadas incluem:

  • Devido aos longos prazos de desenvolvimento inerentes ao processo de desenvolvimento do veículo, os fabricantes podem precisar lançar com a versão do sistema operacional n-2 ou anterior.
  • Mantenha a conformidade com a compatibilidade do Android para cada versão lançada do sistema operacional Android com uma campanha over-the-air (OTA).
  • Implemente o produto Android com capacidade de firmware over-the-air (FOTA) para atualizações rápidas e fáceis de usar. O FOTA deve ser feito usando práticas recomendadas de segurança, como assinatura de código e conexão TLS entre o produto e o backoffice de TI.
  • Envie vulnerabilidades de segurança do Android identificadas de forma independente para a equipe de segurança do Android.

Observação: o Google contemplou notificações específicas do tipo de dispositivo ou do setor nos boletins de segurança do Android. No entanto, como o Google não conhece o kernel, os drivers ou os chipsets de um determinado dispositivo (veículo, TV, wearable, telefone etc.), o Google não tem uma maneira determinística de rotular qualquer problema de segurança com um tipo de dispositivo. .

O fabricante deve fazer todos os esforços para usar a versão mais recente do sistema operacional ou atualizações de segurança para a versão em uso durante as melhorias do ciclo do produto. As atualizações podem ser realizadas durante atualizações periódicas recorrentes do produto ou para hotfixes para resolver problemas de qualidade e/ou outros problemas. As práticas recomendadas incluem:

  • Crie um plano para abordar atualizações de driver, kernel e protocolo.
  • Utilize um método apropriado ao setor para fornecer atualizações aos veículos implantados.

Documento de definição de compatibilidade (CDD)

O Documento de Definição de Compatibilidade (CDD) descreve os requisitos para que um dispositivo seja considerado compatível com Android. O CDD é público e está disponível para todos; você pode baixar versões CDD do Android 1.6 até a versão mais recente em source.android.com .

Satisfazer esses requisitos para um produto envolve as seguintes etapas básicas:

  1. Parceiro assina o Compromisso de Compatibilidade do Android (ACC) com o Google. Um Consultor de Soluções Técnicas (TSC) é então designado como guia.
  2. O parceiro conclui a análise do CDD para a versão do sistema operacional Android do produto.
  3. O Parceiro executa e envia os resultados do CTS (descritos abaixo) até que os resultados sejam aceitáveis ​​para compatibilidade com Android.

Conjunto de testes de compatibilidade (CTS)

A ferramenta de teste Compatibility Test Suite (CTS) verifica se a implementação de um produto é compatível com Android e se os patches de segurança mais recentes estão incluídos. O CTS é público, de código aberto e está disponível para todos; você pode baixar versões CTS do Android 1.6 até a versão mais recente em source.android.com .

Cada versão do software Android lançada ao público (imagens de instalação de fábrica e de atualização em campo) deve comprovar a compatibilidade do Android por meio de resultados CTS. Por exemplo, se o dispositivo executar o Android 7.1, a versão correspondente mais recente do CDD 7.1 e CTS 7.1 deverá ser referenciada quando uma imagem de compilação de intenção de lançamento for criada e testada. Os fabricantes são fortemente incentivados a usar o CTS precocemente e com frequência para identificar e remediar problemas.

NOTA: Os parceiros que assinam outros contratos, como o Google Mobile Services (GMS) , poderão ter de cumprir outros requisitos.

Fluxo de trabalho CTS

O fluxo de trabalho do CTS envolve a configuração do ambiente de teste, a execução de testes, a interpretação dos resultados e a compreensão do código-fonte do CTS. As diretrizes a seguir têm como objetivo ajudar os usuários do CTS (por exemplo, desenvolvedores, fabricantes) a usar o CTS de maneira eficaz e eficiente.

  • Execute testes com frequência . O CTS foi projetado como uma ferramenta automatizada que se integra ao seu sistema de construção. A execução frequente do CTS pode ajudá-lo a encontrar defeitos de forma rápida e antecipada quando ocorre degradação ou regressões do software.
  • Baixe e examine o código-fonte do CTS . O código-fonte completo do CTS é um software de código aberto que qualquer pessoa pode baixar e usar (o código-fonte baixado é totalmente edificável e executável). Quando um teste falha no dispositivo, examinar a seção relevante do código-fonte pode ajudar a identificar o motivo.
  • Obtenha o CTS mais recente . Novas versões do Android podem atualizar o CTS com correções de bugs, melhorias e novos testes. Verifique os downloads do CTS com frequência e atualize seu programa CTS conforme necessário. O fabricante e o Google deverão concordar com a versão do CTS para passar no lançamento do produto, já que o produto deve ser congelado em algum momento enquanto o CTS continua a ser atualizado.

Passe no CTS

Para um produto compatível com Android, o Google garante que os resultados dos testes dos relatórios CTS e CTS Verifier do dispositivo sejam aceitáveis. Em princípio, todos os testes devem ser aprovados. No entanto, um teste que falhar por outros motivos além do dispositivo não estar em conformidade com os requisitos de compatibilidade do Android estará sujeito à análise do Google. Durante este processo:

  1. O fabricante fornece ao Google os patches CTS propostos, validações de patches e justificativas para provar o argumento.
  2. O Google examina o material enviado e, se aceito, atualiza os testes CTS relevantes para que o dispositivo seja aprovado na próxima revisão do CTS.

Se um teste CTS falhar repentinamente após a aplicação de um patch de segurança, o fabricante deverá modificar o patch para que não quebre a compatibilidade OU mostrar que o teste está errado e fornecer uma correção para o teste (conforme descrito acima).

O CTS permanece aberto para revisões de correções de teste. Por exemplo, o Android 4.4 continua aceitando correções (consulte https://android-review.googlesource.com/#/c/273371/ ).

Perguntas frequentes (FAQ)

P: Quem é responsável por aplicar atualizações de segurança a uma implementação específica do Android?

R: O fabricante que fornece diretamente o dispositivo é responsável. Esta entidade não é o Google, que publica atualizações de segurança no AOSP e nem para um dispositivo específico (como um veículo).

P: Como o Google lida com problemas de segurança no Android?

R: O Google investiga continuamente os problemas e desenvolve possíveis correções, que o Google disponibiliza para todos os níveis de API suportados como parte do processo regular de atualização de segurança. Desde agosto de 2015, o Google mantém uma cadência regular de publicação de boletins e links para atualizações em source.android.com ; O Google também publica atualizações de segurança como parte dos principais lançamentos de sistemas operacionais. Consulte também a Política de backport de segurança .

P: Se um fabricante integrou todos os patches AOSP de um ASB, mas não integrou os patches do fornecedor BSP mencionado no mesmo boletim, ele ainda poderá aumentar o nível de segurança (por exemplo, aplicar o patch correspondente à plataforma/compilação)?

R: Para declarar um nível de patch de segurança (SPL) do Android, um fabricante deve abordar todos os problemas necessários publicados no Boletim de segurança do Android ( incluindo boletins anteriores ) e mapeados para uma SPL específica do Android. Por exemplo, um fabricante que usa o Boletim de Segurança de março de 2017 (SPL 2017-03-01) resolveu todos os problemas necessários documentados no boletim de março de 2017 para essa SPL e todas as atualizações anteriores, incluindo atualizações específicas do dispositivo para todos os Boletins de Segurança Android anteriores, incluindo as atualizações específicas do dispositivo associadas ao SPL 05/02/2017.

P: O que acontece quando o fabricante não concorda com as atualizações de segurança fornecidas pelo fornecedor do BSP OU quando as atualizações de segurança exigidas por um ASB não são fornecidas pelos fornecedores?

R: Um ASB descreve vulnerabilidades de segurança (enumeradas por uma lista de CVEs) e geralmente fornece testes de segurança correspondentes. O objetivo é garantir que as vulnerabilidades listadas não possam mais ser reproduzidas em um dispositivo e que o dispositivo possa passar nos testes de segurança associados. Como tal, a questão não é fazer uma atualização de segurança fornecida pelo Google ou por um fornecedor terceirizado, mas sim o fabricante atestar que o dispositivo não é vulnerável à lista de CVEs no ASB. O fabricante é livre para usar as atualizações de segurança fornecidas ou, se tiver uma alteração que seja mais apropriada ao seu dispositivo, usar essa alteração.

Por exemplo, considere um caso em que o Google aborda uma vulnerabilidade de segurança AOSP usando uma alteração de código que permite que o componente permaneça totalmente funcional e compatível com o CDD. Se o fabricante determinar que o componente não é necessário no dispositivo ou não é exigido pelo CDD (ou testes de certificação relacionados), o fabricante poderá remover o componente para reduzir futuras necessidades de manutenção e reduzir a superfície de ataque. Embora o fabricante não tenha usado a atualização de segurança fornecida, ele garantiu que o dispositivo não ficasse vulnerável ao CVE documentado no boletim de segurança. No entanto, ao desviar-se da atualização de segurança recomendada, o fabricante corre o risco de resolver o problema incorretamente, introduzindo novas vulnerabilidades de segurança ou reduzindo de outra forma a funcionalidade da versão final.

Embora trabalhemos com todos os parceiros de SoC para garantir que existam soluções para todos os problemas em um ASB, recomendamos que os fabricantes assegurem um contrato de serviço com seus fornecedores de SoC durante o ciclo de vida de um dispositivo. Os SoCs podem interromper a manutenção de um chipset antes do desejado, portanto, estabelecer acordos antes da seleção do chipset do dispositivo é uma parte importante do processo de lançamento do dispositivo.

Por fim, nos casos em que for impossível adquirir diretamente ou criar de forma independente uma correção para um problema documentado em um ASB, um fabricante poderá manter a SPL anterior do Android e ainda adicionar as novas correções disponíveis à compilação. No entanto, esta prática acabará por levar a problemas com a certificação de compilação (já que o Android garante que o nível de patch de segurança mais recente esteja disponível em dispositivos certificados). O Google recomenda trabalhar com seu SoC com antecedência para evitar essa prática.

P: Se o fabricante determinar que um item ASB não é aplicável ao produto, o item ainda precisará ser aplicado ou corrigido para atender aos outros requisitos do Google ou para passar no CTS?

R: Não exigimos a aplicação de patches para declarar um nível de patch de segurança (SPL) do Android; exigimos que o fabricante ateste que sua construção não é vulnerável ao problema.

Um exemplo é quando um componente que está sendo corrigido não existe no sistema do fabricante ou quando um componente é removido do sistema do fabricante para resolver um problema. Nesse caso, o sistema pode ser compatível sem exigir que o fabricante faça um patch.

Isso é fundamentalmente diferente de um fabricante querer, por exemplo, corrigir apenas patches críticos, sem usar outros patches aplicáveis ​​que causariam falha em um teste de segurança. Neste caso, presume-se que o SPL não foi cumprido.