← volver
CVE-2020-0041highbajo ataqueCWE-20

CVE-2020-0041

76Vexday Risk Score

Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.

ssvc Actcvss 7.8epss 3.2%
de la publicación al arma21 días
Publicada en NVD10 mar
1ª PoC+21d
CISA KEV+603d
probabilidad de explotación
3.2%top 13% de las CVE
explotación observada
CISA + VulnCheck
8 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumen

Falha de escrita fora dos limites (out-of-bounds write) no driver Binder do kernel Android, em binder_transaction() dentro de binder.c, que permite escalonamento de privilégios local sem necessidade de interação do usuário. Importa porque o Binder é o mecanismo central de IPC do Android, presente em praticamente todo dispositivo, e a falha foi efetivamente usada em campanha de malware real (AbstractEmu) para conseguir root em smartphones.

Detalle técnico

O binder_transaction() no driver Binder (drivers/android/binder.c) faz uma verificação de limites incorreta ao processar transações IPC entre processos. A checagem de tamanho/offset permite que um valor controlado pelo processo chamador leve a uma escrita além do buffer alocado para a transação, corrompendo memória do kernel. A CISA classifica a causa raiz como CWE-20 (validação de entrada inadequada), que se manifesta como CWE-787 (out-of-bounds write) no momento da exploração.

O atacante controla os parâmetros da transação Binder — o tamanho e os offsets de objetos dentro do buffer de transação — que são enviados via chamadas ao driver Binder (device /dev/binder) através de ioctl. Como qualquer app instalado consegue interagir com o Binder para fazer chamadas de sistema Android normais, a superfície de ataque está disponível para qualquer processo local, sem privilégios adicionais alocados previamente (PR:L no vetor CVSS reflete apenas a necessidade de rodar código como app comum, não como root ou system).

O Google classificou o bug como Elevation of Privilege (EoP) de severidade Alta no componente Kernel/Binder, corrigido no nível de patch de segurança 2020-03-05. Não há, nas fontes disponíveis, detalhamento de qual commit upstream específico corrigiu a checagem de limites nem qual struct de transação exatamente foi afetada — o boletim da Google só referencia 'Upstream kernel' de forma genérica.

Cómo se explota

A exploração é local: exige que o atacante já tenha capacidade de executar código no dispositivo, tipicamente via um aplicativo Android instalado (inclusive um app aparentemente benigno, sideloaded ou distribuído por loja de apps). Não é necessária interação do usuário além da instalação/execução do app malicioso, e não são necessários privilégios elevados prévios — um app comum já consegue acionar o driver Binder. A corrupção de memória no kernel é usada para escalar de contexto de app para privilégios de kernel/root.

A CISA documenta exploração confirmada em campanha real: a CVE-2020-0041 foi observada encadeada com CVE-2019-2215 (outra falha no Binder, use-after-free) e CVE-2020-0069 (EoP em componente MediaTek) na cadeia de exploits conhecida como 'AbstractEmu'. Isso indica que, isoladamente, a falha no Binder por si só pode não ser suficiente para todos os objetivos do atacante em todos os dispositivos — dependendo do modelo e da versão de kernel, ela foi combinada com outras vulnerabilidades para obter root persistente.

O resultado final documentado é escalonamento de privilégios local completo (root), usado por malware para instalar-se de forma persistente e obter controle total do dispositivo, contornando as proteções de isolamento de app do Android.

Versiones

Afectadas
Kernel Android com nível de patch de segurança anterior a 2020-03-05 (componente Binder). O boletim da Google não especifica faixa de versões do Android por número (como fez para outras CVEs do mesmo boletim); trata-se de correção via patch level do kernel, aplicável a dispositivos Android 8.0, 8.1, 9 e 10 então suportados.
Corregidas en
Nível de patch de segurança Android 2020-03-05 ou posterior (Android Security Bulletin — March 2020). Correção via patch upstream do kernel referenciado no bug interno A-145988638; nenhum número de commit ou versão específica de kernel foi detalhado nas fontes disponíveis.

Cómo protegerse

Aplicar o nível de patch de segurança Android 2020-03-05 ou posterior, conforme o Android Security Bulletin de março de 2020 do Google. O fornecedor não publicou faixa de versões afetadas em termos de versões do Android (8.0, 8.1, 9, 10) para este CVE especificamente — a correção é reportada apenas via nível de patch de segurança do kernel, aplicável a todas as versões suportadas na época.

Se a atualização de patch level não for possível (comum em dispositivos Android de baixo custo ou fora de suporte, que é justamente o perfil alvo do AbstractEmu), não há paliativo de configuração real que neutralize a falha — é um bug de kernel explorável por qualquer app local. O único controle compensatório efetivo é reduzir a superfície de instalação de apps não confiáveis: restringir instalação fora de lojas com verificação, manter o Google Play Protect ativo e monitorar comportamento anômalo de apps. Isso mitiga o vetor de entrega, não a vulnerabilidade em si.

Não funciona como mitigação: apenas desinstalar apps suspeitos após infecção, já que a exploração visa root persistente que pode sobreviver a esse tipo de limpeza superficial; nesse caso, o caminho seguro é reflash/restauração de fábrica combinado com atualização do patch de segurança.

Cómo detectar

Não há assinatura de rede confiável, pois a exploração é inteiramente local — não gera tráfego identificável. Em nível de dispositivo, sinais possíveis incluem crashes ou panics do kernel relacionados ao driver Binder em logs (dmesg/kernel log), negações inesperadas de SELinux envolvendo /dev/binder, e comportamento de apps que tentam obter privilégios elevados sem justificativa aparente. Como a exploração real documentada (AbstractEmu) ocorreu encadeada com outras CVEs dentro de apps maliciosos distribuídos como aplicativos comuns, a detecção prática mais eficaz é a análise de amostras de apps (indicadores de comprometimento específicos da campanha) e não uma assinatura genérica da falha de Binder isolada.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
In binder_transaction of binder.c, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local escalation of privilege with no additional execution privileges needed. User interaction is not needed for exploitation.Product: AndroidVersions: Android kernelAndroid ID: A-145988638References: Upstream kernel
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Productos afectados
n/a · Android
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.