← back
CVE-2020-0041highunder attackCWE-20

CVE-2020-0041

76Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 7.8epss 3.2%
from disclosure to weapon21 days
Published on NVDMar 10
1st PoC+21d
CISA KEV+603d
exploitation probability
3.2%top 13% of all CVEs
observed exploitation
yesCISA + VulnCheck
8 public exploit(s)
Action required by CISAfederal deadline: 2022-05-03

Apply updates per vendor instructions.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
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.
Fixed in
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.

How to protect

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.

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
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
Affected products
n/a · Android
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.