CVE-2018-8440
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply updates per vendor instructions.
Resumen
Falha de elevação de privilégio local no Windows Task Scheduler: o método SchRpcSetSecurity, exposto via ALPC, altera a lista de controle de acesso (ACL) de um arquivo sem impersonar o usuário que fez a chamada. Um usuário local sem privilégios pode usar isso para conceder a si mesmo permissão de escrita sobre praticamente qualquer arquivo do sistema, inclusive DLLs carregadas por processos SYSTEM, e escalar para execução de código com privilégios de sistema. Importa porque foi divulgada como 0day público com PoC funcional antes de existir patch, e está no catálogo KEV da CISA por exploração confirmada — mas o vetor é estritamente local, não remoto.
Detalle técnico
O componente afetado é o Task Scheduler (schedsvc.dll, com lógica auxiliar em taskcomp.dll). O método RPC SchRpcSetSecurity(path, sddl, flags) é chamado por qualquer processo local via ALPC e serve para definir o security descriptor de uma tarefa ou pasta de tarefas em um caminho de arquivo arbitrário. A função RpcServer::SetSecurity, que implementa esse método, chama a operação de sistema de arquivos SetSecurityFile antes de iniciar a impersonação do cliente chamador — quando deveria impersonar primeiro. O resultado é que a alteração de ACL é executada com a identidade do próprio serviço, Local System, e não com a identidade (normalmente restrita) do usuário que fez a chamada. Isso é essencialmente uma falha de controle de autorização/impersonação incorreta (CWE-269 — gerenciamento incorreto de privilégios).
Cómo se explota
O SandboxEscaper (pesquisador que divulgou a falha) demonstrou o abuso da seguinte forma, conforme análise do 0patch: um usuário sem privilégios cria, na pasta %SystemRoot%\Tasks (onde a criação de novas tarefas é permitida a usuários não administradores), um arquivo .job que na verdade é um hard link apontando para um arquivo protegido do sistema (no PoC, uma DLL usada pelo spooler de impressão). Em seguida, o atacante chama SchRpcSetSecurity sobre esse .job para 'liberar' as permissões — como a chamada não é impersonada, a alteração de ACL se propaga para o arquivo de sistema apontado pelo hard link, tornando-o gravável pelo usuário comum. Com isso o atacante sobrescreve o arquivo de sistema com conteúdo malicioso e aciona a execução dele por um processo privilegiado (no exemplo, disparando o serviço de spooler de impressão para carregar a DLL adulterada), obtendo execução de código como SYSTEM.
Exigências reais: acesso local interativo com uma conta já autenticada, mesmo de baixo privilégio (PR:L no vetor CVSS); nenhuma interação de usuário adicional é necessária; não há componente de rede/remoto. É, portanto, uma vulnerabilidade de escalonamento pós-comprometimento inicial ou de ambiente multiusuário compartilhado (terminal server, RDS, estações compartilhadas), não uma falha explorável remotamente por si só.
A CISA confirma exploração ativa (entrada no catálogo KEV), e existem PoC pública original e módulo Metasploit, o que reduz bastante a barreira técnica para reprodução — a complexidade de exploração é baixa uma vez obtido acesso local.
Versiones
Cómo protegerse
A correção definitiva é aplicar a atualização de segurança da Microsoft para CVE-2018-8440, distribuída via Windows Update em 11/09/2018, que corrige a função RpcServer::SetSecurity em schedsvc.dll para impersonar corretamente o chamador antes (e reverter depois) da operação de definição de ACL — comportamento confirmado por diff binário (BinDiff) pelo 0patch, que mostrou a correção da Microsoft funcionalmente idêntica à sua micropatch. Não há números de KB específicos nas fontes consultadas aqui; o caminho correto é aplicar o cumulative update do mês correspondente à versão de Windows em uso, conforme instruções do fornecedor.
Como paliativo temporário — antes de existir patch oficial — o 0patch publicou uma micropatch de terceiros para diversas versões de Windows, injetando chamadas RpcImpersonateClient/RpcRevertToSelf em torno da operação vulnerável; isso é um controle compensatório de terceiros, não substitui o patch oficial e deixa de ser aplicado automaticamente quando o schedsvc.dll é atualizado (o hash do binário muda). Não há flag de registro ou configuração suportada pela Microsoft que desative apenas o comportamento vulnerável do Task Scheduler sem quebrar sua funcionalidade — restringir ou desabilitar o serviço Task Scheduler não é uma mitigação recomendada, pois quebra funcionalidades essenciais do sistema.
Cómo detectar
As fontes consultadas não descrevem assinaturas de detecção formais publicadas pelo fornecedor ou por terceiros para esta CVE. Com base no mecanismo, sinais suspeitos a observar incluem: eventos de alteração de permissões (Security log ID 4670) em arquivos de sistema sensíveis feitos por contas não administrativas; criação de hard links dentro de %SystemRoot%\Tasks ou uso do método SchRpcSetSecurity por processos não relacionados à administração de tarefas agendadas; modificações inesperadas em DLLs do sistema (como bibliotecas usadas pelo spooler de impressão) fora de janelas de atualização; e carregamento de DLLs recém-modificadas por serviços privilegiados (schedsvc.exe, spoolsv.exe) imediatamente após uma mudança de ACL. Não há indicador de rede, já que a exploração é inteiramente local via ALPC.