← voltar
CVE-2016-0099highsob ataqueransomwareCWE-120

CVE-2016-0099

100Vexday Risk Score

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

ssvc Actcvss 7.8epss 37%
da publicação à arma12 dias
Publicada no NVD9 de mar.
1ª PoC+12d
metasploit+12d
CISA KEV+2185d
probabilidade de exploração
37%top 2% das CVEs
exploração observada
simCISA + VulnCheck
11 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-03-24

Apply updates per vendor instructions.

Resumo

Falha de elevação de privilégio local no serviço Secondary Logon (SecLogon) do Windows, que permite a um usuário autenticado localmente — sem privilégios administrativos — obter execução de código como SYSTEM. É crítica em cenários de pós-exploração e escalação lateral, mas não é remota: exige que o atacante já tenha logon válido na máquina, ainda que com conta de baixo privilégio.

Detalhamento técnico

O SecLogon expõe via RPC as APIs CreateProcessWithLogonW e CreateProcessWithTokenW, que na prática são executadas dentro do processo de serviço (svchost.exe hospedando seclogon), não no processo do chamador. Quando a flag STARTF_USESTDHANDLES é usada na STARTUPINFO, a função interna SlpSetStdHandles duplica os handles padrão (stdin/stdout/stderr) do processo chamador para o novo processo via DuplicateHandle, sem sanitizar os valores recebidos.

O problema (CWE-264, controle de acesso impróprio) é que NtDuplicateObject trata de forma especial dois valores de pseudo-handle: -1 (processo atual) e -2 (thread atual). Ao passar -2 como handle padrão, a duplicação ocorre dentro do contexto do processo de serviço seclogon, e o handle resultante aponta para uma thread do próprio pool de threads do svchost que hospeda seclogon — não para uma thread do processo do atacante. Como a duplicação usa DUPLICATE_SAME_ACCESS, o handle vazado para o processo de baixo privilégio chega com THREAD_ALL_ACCESS.

Com esse handle de thread do processo de serviço em mãos, o atacante pode suspender a thread, limpar seu token de impersonação e chamar NtImpersonateThread para forçar essa thread a impersonar a si mesma, obtendo um token de impersonação SYSTEM que pode então ser aplicado à própria thread do atacante via SetThreadToken. Como as threads capturadas pertencem ao pool de RPC compartilhado por vários serviços (BITS, Task Scheduler, o próprio seclogon), o atacante pode repetir a captura até obter uma thread útil.

Como é explorada

Pré-requisito real: o atacante precisa de logon local na máquina (sessão interativa ou equivalente), não é necessário privilégio administrativo nem SeImpersonatePrivilege verdadeiro. CreateProcessWithTokenW é bloqueado para usuários comuns porque o serviço valida SeImpersonatePrivilege no token primário do chamador, mas CreateProcessWithLogonW funciona: usando a flag LOGON_NETCREDENTIALS_ONLY, o valor de senha passado é irrelevante — o SecLogon apenas troca a credencial de rede de uma cópia do token do próprio chamador, então nenhuma senha válida é necessária.

A exploração pública demonstrada (Google Project Zero / James Forshaw, com PoCs em C# e em PowerShell) envolve uma corrida de condição: o atacante dispara repetidamente CreateProcessWithLogonW com STARTF_USESTDHANDLES apontando o handle -2, captura o handle de thread vazado no processo local, testa se pertence ao pool de RPC do seclogon (ou de outro serviço no mesmo host de processo) e usa NtImpersonateThread para roubar um token de impersonação SYSTEM. A exploração é mais confiável em máquinas com 2 ou mais núcleos de CPU, por depender de timing entre processos concorrentes.

O CVE está no catálogo KEV da CISA com exploração confirmada e existem módulo Metasploit e múltiplos PoCs públicos (ExploitDB), o que tornou a técnica amplamente incorporada em toolkits de pós-exploração e escalação de privilégio em Windows entre 2016 e anos seguintes, mesmo após patch disponível — refletindo ambientes sem atualização, não uma falha de correção do patch.

Versões

Afetadas
Windows Vista Service Pack 2; Windows Server 2008 Service Pack 2; Windows Server 2008 R2 Service Pack 1; Windows 7 Service Pack 1; Windows 8.1; Windows Server 2012; Windows Server 2012 R2; Windows RT 8.1; Windows 10 (versão inicial/Gold); Windows 10 versão 1511.
Corrigidas em
KB3139914 para Vista SP2, Server 2008 SP2, Server 2008 R2 SP1, Windows 7 SP1, 8.1, Server 2012, Server 2012 R2 e RT 8.1; KB3140745 para Windows 10 Gold (substitui KB3135174); KB3140768 para Windows 10 versão 1511 (substitui KB3140743).

Como se proteger

A correção definitiva é aplicar a atualização de segurança do boletim MS16-032 (KB3143141 para Vista SP2, Server 2008 SP2/R2 SP1, Windows 7 SP1, 8.1, Server 2012/R2 e RT 8.1; KB3140745 para Windows 10 Gold; KB3140768 para Windows 10 1511), que corrige como o Windows sanitiza os handles padrão passados ao SecLogon. Microsoft não identificou workarounds nem fatores mitigantes para esta vulnerabilidade — ou seja, não há configuração de compensação documentada pelo fornecedor além do patch.

Como controle compensatório real na ausência de patch, restringir logon local a usuários não confiáveis (RDP, contas de serviço compartilhadas, terminais compartilhados) reduz a superfície, já que a falha exige sessão local. Desabilitar o serviço Secondary Logon (seclogon) onde não for necessário para "Executar como outro usuário" elimina o vetor específico, mas quebra funcionalidades legítimas que dependem dele — avalie o impacto operacional antes de aplicar.

Como detectar

Não há assinatura de evento nativo do Windows específica para esta falha — a exploração usa APIs legítimas (CreateProcessWithLogonW, DuplicateHandle, NtImpersonateThread) e chamadas RPC padrão ao SecLogon, o que a torna difícil de distinguir de uso normal em logs padrão. Sinais indiretos a observar incluem: processos filhos suspensos criados repetidamente em rajada por um mesmo usuário não administrador com redirecionamento de handles padrão via STARTF_USESTDHANDLES; uso de PowerShell invocando funções com nomes como "Invoke-MS16-032" (presente em PoCs públicos e em módulos de frameworks de pós-exploração); e escalonamento abrupto de uma sessão de usuário padrão para contexto SYSTEM sem evento de logon administrativo correspondente. Nenhum desses sinais é conclusivo isoladamente — correlação com EDR que monitore chamadas a NtImpersonateThread e duplicação de handles entre processos é o caminho mais confiável.

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 Secondary Logon Service in Microsoft Windows Vista SP2, Windows Server 2008 SP2 and R2 SP1, Windows 7 SP1, Windows 8.1, Windows Server 2012 Gold and R2, Windows RT 8.1, and Windows 10 Gold and 1511 does not properly process request handles, which allows local users to gain privileges via a crafted application, aka "Secondary Logon Elevation of Privilege Vulnerability."
CVSS:3.1/AV:L/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.