CVE-2019-13272
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Falha no ptrace do kernel Linux permite que um processo local escale para root explorando o registro incorreto das credenciais usadas para validar uma relação de ptrace criada via PTRACE_TRACEME. É explorável de forma confiável contra o helper pkexec do Polkit, presente por padrão em praticamente todas as distros Linux com desktop, o que torna o impacto prático muito maior do que uma CVE de kernel típica com CVSS 7.8 — está no catálogo KEV da CISA com exploração ativa confirmada e há módulo Metasploit e PoCs públicas.
Detalhamento técnico
A função ptrace_link() em kernel/ptrace.c é chamada quando um processo se torna 'tracee' de outro, seja via PTRACE_ATTACH (o tracer inicia) seja via PTRACE_TRACEME (o próprio processo, futuro filho, pede para ser rastreado pelo pai). Essa função grava, junto com o vínculo de ptrace, as credenciais que serão usadas depois para checagens de permissão (ptrace_has_cap / __ptrace_may_access) sempre que o tracer tentar operações privilegiadas sobre o tracee.
Como é explorada
O bug mora exatamente na fonte de credencial usada nesse registro: no código vulnerável, __ptrace_link() gravava __task_cred(new_parent) sob rcu_read_lock() — a credencial do processo que se tornará tracer, lida em um instante que pode não corresponder ao estado que ela terá quando a relação for de fato usada para validação. O commit de correção (6994eefb0053) troca isso para current_cred(), a credencial do processo que está executando a chamada de fato no momento em que o vínculo é estabelecido, removendo a leitura via RCU. NVD classifica isso como duas falhas combinadas: um problema de lifetime de objeto (que também pode causar panic/DoS) e a marcação incorreta de quando uma relação de ptrace deve ser tratada como privilegiada.
Versões
Como se proteger
A correção definitiva é atualizar o kernel Linux para 5.1.17 ou posterior, que incorpora o commit 6994eefb0053799d2e07cd140df6c2ea106c41ee (uso de current_cred() em vez de __task_cred() sob RCU). Distribuições enterprise fizeram backport em seus próprios ramos: Red Hat publicou correção via RHSA-2019:2405 e RHSA-2019:2411 (RHEL 8, kernel e kernel-rt) e RHSA-2019:2809 (RHEL 7, kernel-alt); há também Kernel Live Patch (LSN-0054-1) e atualização para Slackware 14.2 — consulte a errata específica da sua distro para o NVR exato do pacote corrigido, já que os números de build (ex.: 4.18.0-80.7.2.rt9.154.el8_0) são amarrados ao ramo/versão de cada distribuição.
Como detectar
Como pré-condição, o Polkit's pkexec (ou qualquer suid-binário que faça fork+PTRACE_TRACEME+execve) é o vetor mais citado; disponibilidade do pkexec com kernel vulnerável já configura risco relevante em qualquer distro Linux desktop/server com esse binário instalado. Não há assinatura de rede — é falha 100% local (AV:L), exigindo apenas acesso a shell/execução de código como usuário sem privilégios (PR:L conforme o CVSS informado) e sem interação do usuário.