PesquisaCrítico

Reforço de Segurança na GPU do Android: Reduzindo a Superfície de Ataque com SELinux

3 min de leituraFonte: Google Security Blog

Google e Arm implementam medidas de segurança para a GPU Mali em dispositivos Android, restringindo IOCTLs de alto risco com SELinux e reduzindo vulnerabilidades.

Reforço de Segurança na GPU do Android: Um Esforço Colaborativo para Reduzir a Superfície de Ataque

A Equipe de Segurança e Privacidade do Android da Google, em parceria com a Arm, implementou novas medidas de reforço de segurança para a GPU Mali, um componente utilizado em bilhões de dispositivos Android em todo o mundo. A iniciativa visa reduzir a superfície de ataque do driver da GPU, restringindo o acesso a IOCTLs (Input/Output Controls) de alto risco por meio de políticas SELinux (Security-Enhanced Linux).

Por Que a Segurança da GPU é Importante

As GPUs se tornaram um alvo primário para atacantes devido à sua complexidade e acesso privilegiado ao sistema. Desde 2021, a maioria dos exploits baseados em drivers do kernel do Android tem como alvo as GPUs, particularmente a interface entre o User-Mode Driver (UMD) e o Kernel-Mode Driver (KMD). Entradas maliciosas podem explorar falhas nessa interface, levando a corrupção de memória e comprometimento do sistema.

Abordagem Técnica: Restringindo IOCTLs da GPU com SELinux

A Equipe Vermelha do Android e a Arm categorizaram os IOCTLs da GPU Mali em três grupos:

  • IOCTLs Não Privilegiados – Necessários para operação normal, acessíveis a todas as aplicações.
  • IOCTLs de Instrumentação – Utilizados para depuração e profiling, restritos a aplicações shell ou debuggable.
  • IOCTLs Restritos – Obsoletos ou exclusivos para desenvolvimento, bloqueados em ambientes de produção.

Para impor essas restrições, a Google implementou uma implantação gradual de políticas SELinux para minimizar interrupções:

  1. Política Opt-In – Testada inicialmente em aplicações do sistema selecionadas, utilizando um novo atributo SELinux gpu_harden.
  2. Política Opt-Out – Aplicou o reforço por padrão, permitindo que desenvolvedores contornassem as restrições via:
    • Dispositivos com root
    • android:debuggable="true" no manifesto do aplicativo
    • Exceções permanentes na política SELinux

Guia de Implementação para OEMs e Desenvolvedores

A Google forneceu um guia passo a passo para que parceiros adotem medidas semelhantes de reforço:

1. Utilize a Macro de Reforço em Nível de Plataforma

Uma nova macro em system/sepolicy/public/te_macros permite a filtragem de IOCTLs específica para dispositivos:

  • Permite IOCTLs não privilegiados para todas as aplicações (appdomain).
  • Restringe IOCTLs de instrumentação a ferramentas de depuração (shell, runas_app).
  • Bloqueia IOCTLs obsoletos com base na versão do SDK alvo.

2. Defina Listas de IOCTLs Específicas para o Dispositivo

Os OEMs devem criar um arquivo ioctl_macros no diretório de políticas SELinux do dispositivo, categorizando os IOCTLs (ex.: mali_production_ioctls, mali_instrumentation_ioctls).

Exemplo:

define(`unpriv_gpu_ioctls', `0x0000, 0x0001, 0x0002')
define(`restricted_ioctls', `0x1110, 0x1111, 0x1112')
define(`instrumentation_gpu_ioctls', `0x2220, 0x2221, 0x2222')

A categorização oficial dos IOCTLs da Arm está disponível na documentação da GPU r54p2.

3. Aplique a Política ao Dispositivo da GPU

Crie um arquivo gpu.te no diretório de políticas SELinux do dispositivo e invoque a macro da plataforma com as listas de IOCTLs definidas.

4. Teste, Refine e Imponha

Siga as melhores práticas de desenvolvimento iterativo de políticas SELinux, auditando logs de negação para garantir que nenhuma aplicação legítima seja interrompida.

Impacto e Perspectivas Futuras

Este esforço de reforço reduz a superfície de ataque das GPUs Mali, protegendo os usuários contra vulnerabilidades conhecidas e desconhecidas. Ao tornar as vulnerabilidades inacessíveis, a abordagem oferece benefícios de segurança a longo prazo. A Google incentiva os OEMs a adotarem essas medidas, reforçando a segurança das GPUs em todo o ecossistema Android.

Documentação Oficial

Agradecimentos

Agradecimento especial a Jeffrey Vander Stoep pelas contribuições a esta iniciativa.

Compartilhar

TwitterLinkedIn