← voltar
CVE-2021-28664highsob ataqueCWE-787

CVE-2021-28664

51Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA.

ssvc Actcvss 8.8epss 5.4%
da publicação à arma
Publicada no NVD10 de mai.
CISA KEV+177d
probabilidade de exploração
5.4%top 8% das CVEs
exploração observada
simCISA + VulnCheck
Ação exigida pela CISAprazo federal: 2021-11-17

Apply updates per vendor instructions.

Resumo

Falha no driver de kernel da GPU Arm Mali que permite a um processo sem privilégios obter acesso de leitura/escrita a páginas de memória marcadas como somente leitura, resultando em escalonamento de privilégios ou corrupção de memória/DoS. Afeta as três linhas de arquitetura Mali (Bifrost, Valhall, Midgard), presentes em um número enorme de SoCs Android e outros dispositivos embarcados — o que torna o alcance real da falha muito maior do que sugere um único CVE de fornecedor de IP de GPU. Está no catálogo KEV da CISA por exploração confirmada, geralmente como peça de uma cadeia de exploração para comprometer dispositivos móveis.

Detalhamento técnico

O CWE associado pela CISA é CWE-787 (Out-of-bounds Write). O mecanismo, conforme a descrição do fornecedor, é uma falha no gerenciamento de permissões de memória do driver: um processo não privilegiado consegue obter mapeamento de escrita sobre páginas que deveriam ser somente leitura. Isso é consistente com o padrão de bugs já visto nessa família de drivers — falhas na validação de comandos ioctl que o driver Mali expõe ao userspace para alocação e gerenciamento de buffers de GPU (memória compartilhada entre CPU e GPU), que se manipulados incorretamente permitem que o atacante controle regiões de memória do kernel além do que deveria ser permitido pelo seu nível de privilégio.

O que o atacante controla, na prática, é o conteúdo e os parâmetros das chamadas que o processo faz ao dispositivo de caractere do driver (interface via nó de dispositivo, tipicamente exposto para qualquer app com acesso ao hardware gráfico). Ao conseguir escrita em páginas somente leitura, o atacante pode corromper estruturas de dados do kernel — o passo clássico para transformar uma primitiva de escrita restrita em execução de código com privilégios de root ou em pânico do kernel (DoS).

O fornecedor não publicou um write-up técnico detalhado do bug em si (apenas o aviso de segurança listando as versões afetadas); não há, nas fontes disponíveis, detalhamento de qual ioctl específico ou qual estrutura de kernel é o vetor exato. Qualquer afirmação mais granular sobre a rotina de código exata seria especulação e não está confirmada aqui.

Como é explorada

A CISA descreve a exploração como permitindo a um usuário não privilegiado ganhar acesso de escrita a memória somente leitura, obter privilégio root, corromper memória e modificar memória de outros processos — e confirma exploração ativa ao incluir a falha no catálogo KEV. O vetor CVSS informado (AV:N/PR:L/UI:N) é o valor padrão de scoring do NVD para esse tipo de bug de driver de kernel; na prática, a exploração não ocorre pela rede de forma direta — ela exige que o atacante já tenha capacidade de executar código não privilegiado no dispositivo (um app instalado, ou um processo comprometido por um vetor de entrada anterior, como um bug de navegador) e a partir daí abuse do driver Mali para escalar privilégios.

Isso encaixa no padrão típico de cadeias de exploração contra Android: um primeiro estágio compromete um app ou navegador com privilégio de usuário comum, e um segundo estágio usa uma falha como esta no driver da GPU para pular do sandbox da aplicação para root no dispositivo. A complexidade de descobrir e confiabilizar o exploit é alta (requer engenharia reversa do driver específico do SoC), mas uma vez desenvolvido o exploit é reutilizável contra qualquer dispositivo com a mesma revisão de driver não corrigida.

As fontes disponíveis não detalham o ator, a campanha ou o alvo específico da exploração que levou à inclusão no KEV — apenas confirmam que houve exploração no mundo real e fixam prazo de correção (adicionada em 2021-11-03, prazo 2021-11-17, ação recomendada: 'aplicar atualizações conforme instruções do fornecedor').

Versões

Afetadas
Bifrost: r0p0 até r29p0 (antes de r30p0). Valhall: r19p0 até r29p0 (antes de r30p0). Midgard: r8p0 até r30p0 (antes de r31p0).
Corrigidas em
Bifrost r30p0; Valhall r30p0; Midgard r31p0.

Como se proteger

A correção definitiva é atualizar o driver de kernel Mali para a revisão corrigida da respectiva linha: r30p0 para Bifrost e Valhall, r31p0 para Midgard. O ponto crítico é que o driver Mali raramente é atualizado diretamente pelo usuário final: em dispositivos Android e outros embarcados, a correção depende do fabricante do SoC (que integra o driver Arm no kernel Android) e do fabricante do dispositivo, que precisa distribuir essa versão corrigida via patch de segurança do sistema. Isso significa atraso — às vezes de meses — entre a publicação do fix pela Arm e a chegada da correção ao usuário, e dispositivos fora de suporte simplesmente nunca recebem o patch.

Como paliativo real, sem acesso à versão corrigida do driver, não há uma mitigação de configuração eficaz publicada pelo fornecedor — a falha está no próprio driver de kernel, não em um parâmetro exposto que possa ser desabilitado sem perda de funcionalidade da GPU. Restringir a instalação de aplicativos não confiáveis reduz a superfície de exposição (já que a exploração normalmente depende de rodar código local não privilegiado), mas não elimina o risco em caso de outro vetor de entrada (browser, app comprometido).

Não funciona como mitigação: assumir que atualizar apenas o sistema operacional Android sem confirmar o patch level de segurança do fabricante do SoC resolve o problema — a versão do driver Mali integrada varia por fabricante e por branch de kernel, e precisa ser verificada especificamente contra as revisões r30p0/r31p0 mencionadas.

Como detectar

Não há assinatura de exploração publicamente documentada nas fontes disponíveis. Em ambiente de resposta a incidente móvel, sinais indiretos a procurar incluem crashes ou pânicos de kernel relacionados ao subsistema Mali/GPU em logs do dispositivo (dmesg/logcat), processos com privilégio elevado inesperado originados de apps comuns, e presença de apps ou binários que interajam diretamente e de forma atípica com o nó de dispositivo da GPU via ioctl. Como a exploração normalmente é o segundo estágio de uma cadeia (após comprometimento inicial de app ou navegador), a ausência de sinal específico do driver não descarta comprometimento — a análise deve olhar a cadeia completa, não só o componente Mali.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
The Arm Mali GPU kernel driver allows privilege escalation or a denial of service (memory corruption) because an unprivileged user can achieve read/write access to read-only pages. This affects Bifrost r0p0 through r29p0 before r30p0, Valhall r19p0 through r29p0 before r30p0, and Midgard r8p0 through r30p0 before r31p0.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a