Isolamento do sistema do veículo

Para garantir a integridade do sistema do carro, o Android Automotive protege os dados recebidos nestes níveis:

Componentes do Sistema EVS

Figura 1. Arquitetura de serviço do sistema

  • Aplicativos . O sistema verifica se um aplicativo tem permissão para falar com os subsistemas do carro.
  • APIs bem definidas . APIs genéricas não aceitam blobs de dados arbitrários (APIs devem ser bem definidas).
  • Serviço de carro . Atualizações permitidas apenas via OTA (ou USB), com criptografia de disco completo e inicialização verificada. Não pode ser carregado lateralmente.
  • Veículo HAL . Verifica se mensagens específicas são permitidas.

Aplicativos e APIs

O Android Automotive é construído no Android e interage diretamente com vários subsistemas críticos de segurança. Além disso, diferentes veículos podem ter diferentes interfaces com diferentes funcionalidades expostas ao Android. Para tornar essas funcionalidades seguras e simplificadas, elas são isoladas em uma camada de abstração, separadas do resto do Android. Somente APIs bem definidas com formatação estrita em mensagens enviadas por meio de redes veiculares podem se comunicar com o HAL do veículo. Isso fornece uma interface previsível para desenvolvedores Android e fornece uma interação segura com o restante do veículo.

As mensagens HAL do veículo são filtradas em dois níveis:

  • Nível de aplicativo . Os aplicativos que não são do sistema podem acessar o HAL do veículo por meio do serviço de carro com as permissões adequadas.
  • Nível HAL do veículo . Permite uma camada adicional de proteção e garantia de que as mensagens enviadas aos subsistemas do veículo se originam de uma fonte legítima. Também pode ser usado para mensagens de limite de taxa, evitando que aplicativos maliciosos inundem o barramento CAN e interfiram potencialmente nos subsistemas do veículo.

Veículo HAL

O HAL do veículo é uma camada inferior que interage com o veículo, comunicando-se com as redes do veículo e outro hardware veicular por meio de chamadas de controle de entrada/saída do motorista (ioctl).

O HAL do veículo é o único componente no Android Automotive conectado ao sistema IVI, seja por meio de uma conexão direta do processador de aplicativos/microcontrolador ou por meio de um VMCU. O acesso ao HAL do Veículo deve ser restrito a aplicativos do sistema usando regras do SELinux e permissões adequadas nas interfaces do kernel.

Políticas do SELinux

O Android Automotive estende o SELinux para filtrar o acesso do driver, incluindo abrir, fechar, ler, gravar e chamadas ioctl. O uso da filtragem ioctl (junto com outras funcionalidades do SELinux) limita o tipo de mensagens CAN permitidas e aceitas pelo HAL do veículo, reduzindo drasticamente a superfície de ataque. Para obter detalhes sobre o SELinux, consulte Security-Enhanced Linux in Android .

Além disso, os casos de uso automotivo incluem novos tipos de dados confidenciais que devem ser isolados e controlados. Os dados confidenciais têm permissões separadas; outros recursos, como controles HVAC e ajuste de janela, devem ser fornecidos apenas para aplicativos do sistema. Exemplo de uma política SELinux específica para automóveis:

<permission-group
 android:name=”android.support.car.permission.CAR_MONITORING />

<permission
 android:name=”android.support.car.permission.CAR_MILEAGE”
 android:protectionLevel=”signature|privileged” />
<permission
 android:name=”android.support.car.permission.CAR_SPEED”
 android:permissionGroup=”android.permission-group.LOCATION”
 android:protectionLevel=”dangerous” />
<permission
 android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION”
 android:permissionGroup=”android.support.car.permission.CAR_INFORMATION”
 android:protectionLevel=”signature|privileged” />

O grupo de permissões CAR_MONITORING foi criado para permissões relacionadas a automóveis. A velocidade atual pode ser considerada uma informação sensível. Portanto, as permissões CAR_SPEED foram criadas com um nível de proteção perigoso . Este nível significa que a informação é privada e sensível. A permissão CAR_VENDOR_EXTENSION foi criada com a permissão em nível de sistema ou assinatura, que é usada para aplicativos do sistema ou aplicativos assinados que recebem explicitamente essa permissão.

Bloqueio de aplicativos e atividades

Para reduzir a distração ao dirigir, o Android Automotive fornece controles adicionais (uma lista de permissões) para garantir que aplicativos de carregamento lateral não possam ser usados ​​quando o veículo estiver em movimento. Esses aplicativos ainda podem ser executados quando um veículo está estacionado ou parado.

A lista branca especifica aplicativos que podem ser usados ​​quando o veículo está em movimento. Somente aplicativos de sistema confiáveis ​​podem atualizar a lista de permissões. Embora as atualizações possam ocorrer pela rede, as atualizações não devem ser consideradas confiáveis.