CVE-2020-0041
Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.
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
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.