← voltar
CVE-2013-6282highsob ataqueCWE-20

CVE-2013-6282

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 8.8epss 40%
da publicação à arma0 dias
Publicada no NVD19 de nov.
1ª PoC18 de nov.
metasploit6 de set.
CISA KEV+3222d
probabilidade de exploração
40%top 2% das CVEs
exploração observada
simCISA + VulnCheck
9 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-10-06

Apply updates per vendor instructions.

Resumo

Falha de validação de endereço nas funções get_user e put_user do kernel Linux, usadas internamente por syscalls para copiar dados entre espaço de usuário e kernel em plataformas ARM v6k e v7. Uma aplicação local sem privilégios pode passar um endereço de kernel arbitrário como se fosse um ponteiro de usuário e conseguir ler ou escrever memória do kernel, resultando em escalonamento de privilégio local. Importa porque foi explorada in the wild contra dispositivos Android (app de root 'vroot') antes mesmo da correção e da atribuição pública da CVE.

Detalhamento técnico

get_user e put_user são macros/rotinas de baixo nível em arch/arm/lib/getuser.S e putuser.S que o kernel usa para ler e escrever valores vindos de ponteiros fornecidos por processos em userspace (ex.: argumentos de syscalls). Em arquiteturas ARM que usam o modelo de 'domains' de memória (CONFIG_CPU_USE_DOMAINS), o hardware valida automaticamente se o endereço pertence ao domínio de usuário. Em builds sem esse mecanismo — comuns em ARMv6k/v7, inclusive na maioria dos kernels Android da época — essa validação de hardware não existe, e antes do patch as rotinas assembly não faziam nenhuma verificação de software equivalente.

Como é explorada

O código malicioso simplesmente passa, como argumento a uma chamada que internamente usa get_user/put_user (via syscall), um endereço apontando para dentro do espaço de endereçamento do kernel em vez de um endereço de usuário válido. Sem a checagem, a rotina lê ou grava naquele endereço como se fosse legítimo, dando ao atacante uma primitiva arbitrária de leitura e escrita de memória do kernel. CWE-20 (Improper Input Validation), classificação usada pela CISA no KEV.

A exploração documentada (app 'vroot' distribuída para root de dispositivos Android em out/nov de 2013, e posteriormente encapsulada em módulo Metasploit por fi01/cubeundcube) usa a primitiva de leitura para localizar em memória os endereços de commit_creds e ptmx_fops (via kallsyms), e a primitiva de escrita para sobrescrever esses pontos e executar código com uid 0.

Pré-requisito real: é preciso executar código nativo local no dispositivo — uma aplicação instalada e executada pelo usuário ("crafted application", conforme a descrição oficial). Não há vetor de rede. O vetor CVSS informado (AV:N) reflete a metodologia de scoring genérica aplicada retroativamente pelo NVD a vulnerabilidades antigas de kernel, e não corresponde ao mecanismo real de exploração, que é estritamente local (AV:L seria mais fiel ao comportamento observado).

Versões

Afetadas
Kernel Linux anterior a 3.5.5, em plataformas ARM v6k e v7 (tipicamente builds sem CONFIG_CPU_USE_DOMAINS habilitado, cenário comum em kernels Android da época).
Corrigidas em
Kernel Linux 3.5.5 e posteriores, via commit 8404663f81d212918ff85f493649a7991209fa04. Fabricantes de dispositivos Android precisaram aplicar backport próprio a seus branches de kernel; não há registro de datas/versões específicas por fabricante nas fontes consultadas.

Como se proteger

A correção está no commit 8404663f81d212918ff85f493649a7991209fa04, que adiciona a macro check_uaccess para validar o endereço contra current_thread_info()->addr_limit antes de get_user/put_user operarem, quando CONFIG_CPU_USE_DOMAINS não está habilitado. Isso entrou no kernel mainline na versão 3.5.5.

Para distribuições de kernel embarcado — o caso típico afetado, Android — a correção depende do fabricante do dispositivo fazer backport do patch para o branch de kernel usado naquele SoC/firmware específico, já que esses kernels raramente seguem o mainline diretamente. Não há uma lista pública consolidada de quais builds Android por fabricante já incorporaram o backport; a única forma confiável de verificar é conferir se o patch do commit citado está presente no código-fonte do kernel do dispositivo.

Não há mitigação de configuração equivalente que substitua o patch: habilitar CONFIG_CPU_USE_DOMAINS reintroduz a validação via hardware e reduz a exposição nos builds sem o fix, mas altera o modelo de proteção de memória do kernel e tem impacto de desempenho — não é um controle recomendado como substituto permanente da atualização, apenas um dado técnico sobre por que alguns builds eram menos expostos.

Como detectar

Não há assinatura de rede a procurar, pois a exploração é inteiramente local. Sinais indiretos incluem: instalação/execução de aplicativos Android desconhecidos que carregam bibliotecas nativas (.so) com nomes gerados aleatoriamente e depois as removem do disco imediatamente após o carregamento — padrão usado pelo módulo Metasploit e por ferramentas de root da época (ex.: 'vroot'); processos userspace realizando syscalls repetidas com padrões de leitura/escrita sequencial de memória consistentes com scanning de kallsyms; e presença de artefatos correspondentes ao EDB-40975 ou variantes do exploit original. Sem instrumentação de auditoria de syscalls ou EDR no próprio dispositivo, não há sinal confiável de exploração passada.

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 (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the v6k and v7 ARM platforms do not validate certain addresses, which allows attackers to read or modify the contents of arbitrary kernel memory locations via a crafted application, as exploited in the wild against Android devices in October and November 2013.
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
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.