CVE-2016-0151
Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.
Apply updates per vendor instructions.
Resumo
Falha de elevação de privilégio local no CSRSS (Client-Server Run-time Subsystem) do Windows 8.1, Windows Server 2012/2012 R2, Windows RT 8.1 e Windows 10 (Gold e 1511), causada por gerenciamento incorreto de tokens de processo. Um usuário já autenticado localmente pode rodar uma aplicação especialmente construída para obter um processo com token elevado (efetivamente rodando na Sessão 0), abrindo caminho para escalar a administrador. Importa porque está no catálogo KEV da CISA e tem PoC pública, mas o pré-requisito de logon local já concedido limita bastante o cenário de risco a máquinas multiusuário, servidores de terminal ou pós-comprometimento inicial.
Detalhamento técnico
O componente CSRSS (basesrv.dll) expõe o método RPC BaseSrvCheckVDM, que verifica se a Virtual DOS Machine (VDM) está instalada e habilitada. No Windows 8 e versões posteriores (builds de 32 bits) a VDM vem desabilitada por padrão; quando isso ocorre, o CSRSS tenta 'ajudar' criando um processo na área de trabalho para pedir a instalação da VDM. O token usado para criar esse novo processo vem do token de impersonation do chamador — não do primário. Um atacante local pode impersonar o token anônimo (Anonymous Logon) antes de chamar CsrClientCallServer, fazendo o CSRSS usar esse token anônimo como token primário do novo processo. Como o token anônimo tem Session ID 0, o processo resultante é criado na Sessão 0, área normalmente reservada a serviços do sistema (CWE-264, gerenciamento incorreto de privilégios).
Como é explorada
A cadeia identificada pelo Google Project Zero (issue 692) explora BaseSrvLaunchProcess: o CSRSS impersona o cliente, duplica o token anônimo como token primário, depois reverte e impersona o token real do processo chamador (via BasepImpersonateClientProcess) apenas para a chamada de NtCreateUserProcess. Isso quebra a expectativa de que o token anônimo restringiria o acesso a arquivos: o processo final acaba rodando com contexto de segurança do usuário atual, mas na Sessão 0. Combinando isso com abuso de CreateProcessWithLogonW (flag LOGON_NETCREDENTIALS_ONLY, informando o PID do processo anônimo como pai), o atacante consegue criar um processo arbitrário com o token do usuário corrente executando na Sessão 0 — sessão isolada desde o Vista, onde é possível criar objetos nomeados em \BaseNamedObjects sem o privilégio SeCreateGlobalPrivilege e potencialmente interferir com serviços que assumem confiança baseada na Sessão 0.
Versões
Como se proteger
A correção definitiva é aplicar o MS16-048 (KB3148528), que ajusta como o Windows gerencia tokens de processo em memória. Os pacotes específicos são KB3146723 para Windows 8.1, Windows Server 2012, Windows Server 2012 R2 e Windows RT 8.1, e as atualizações cumulativas KB3147461 (Windows 10 RTM) e KB3147458 (Windows 10 versão 1511) para as edições correspondentes de 32 e 64 bits, incluindo instalações Server Core. A própria Microsoft declara não ter identificado fatores mitigantes nem workarounds para esta vulnerabilidade — não há flag de registro ou configuração alternativa documentada que neutralize o problema sem o patch.
Como detectar
Não há assinatura de rede a procurar, já que a exploração é inteiramente local: o vetor é uma chamada RPC interna ao CSRSS (BaseSrvCheckVDM) seguida de manipulação de tokens de impersonation. Em telemetria de endpoint, sinais possíveis incluem criação inesperada de processos filhos do csrss.exe fora do padrão normal, processos rodando com logon 'Anonymous Logon' na Sessão 0, ou aparecimento anômalo de processos como notepad.exe/painel de controle suspensos criados por um usuário comum imediatamente após uma falha reportada de instalação de VDM. Nenhuma das fontes consultadas (boletim da Microsoft, PoC, CISA) documenta indicadores oficiais de detecção ou IOCs de campanhas reais que exploraram essa CVE.