CVE-2016-3309
Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.
Apply updates per vendor instructions.
Resumen
Falha de elevação de privilégio no componente kernel-mode do Win32k do Windows, corrigida pelo boletim MS16-098 (agosto/2016). Permite que um usuário local com poucos privilégios execute uma aplicação especialmente construída e obtenha execução de código em modo kernel — ou seja, vira SYSTEM a partir de uma sessão comum. Está no catálogo KEV da CISA por exploração confirmada, e existe PoC público detalhado que expõe o mecanismo exato da corrupção de memória.
Detalle técnico
A vulnerabilidade está no driver win32k (kernel-mode), especificamente na rotina win32kfull!bFill, responsável por operações de preenchimento de estruturas gráficas (bitmaps/paletas). A Microsoft descreve a causa como falha no tratamento de objetos em memória; a CISA classifica como CWE-264 (controle de privilégio/permissão inadequado), mas a análise técnica publicada pela siberas identifica concretamente um pool overflow — escrita fora dos limites de um buffer alocado no pool do kernel, disparada por manipulação de objetos GDI (bitmaps e paletas) com dimensões ou parâmetros controlados pelo atacante.
O atacante controla os parâmetros dos objetos GDI que alimentam bFill — dimensões de bitmap, entradas de paleta — de forma a fazer a rotina escrever além do buffer alocado, corrompendo estruturas adjacentes no pool do kernel. Isso é primitiva clássica de escalonamento local: corrupção controlada de memória kernel que, com técnicas de heap grooming, vira controle de execução em modo kernel.
A MS16-098 corrigiu quatro CVEs distintos no mesmo boletim (CVE-2016-3308, 3309, 3310, 3311), todos win32k EoP mas com causas técnicas diferentes — a Microsoft é explícita em dizer que CVE-2016-3309 é uma falha distinta das outras três. O nome dado pela pesquisa posterior ('wild pool overflow') sugere que a falha foi originalmente identificada por já estar sendo explorada, e não por auditoria proativa — reforçando por que aparece no catálogo KEV.
Cómo se explota
Pré-requisito real: acesso local autenticado, mesmo que com privilégios baixos (PR:L no vetor CVSS). Não é explorável remotamente e não depende de interação de outro usuário (UI:N) — o próprio atacante executa a aplicação maliciosa que dispara o bug. Isso limita o impacto a cenários onde o atacante já tem um shell ou sessão de usuário no Windows: pós-exploração de outra falha, malware já executando com usuário padrão, ou insider com conta de baixo privilégio.
O exploit público (siberas, 2017, publicado como CVE-2016-3309_Reloaded) demonstra duas técnicas de exploração — uma via manipulação de Bitmaps e outra via Paletas — ambas culminando em corrupção do pool do kernel controlada o suficiente para escrever em memória arbitrária e escalar para SYSTEM. Uma terceira variante do PoC demonstra apenas um deadlock do sistema decorrente da validação de handle malformada, sem chegar a RCE — útil para reconhecer tentativas menos sofisticadas ou falhas de exploração.
O caráter 'wild' documentado nos writeups indica exploração ativa observada antes da correção completa do bug, o que motivou a inclusão tardia no catálogo KEV da CISA (adicionado em 2022, cinco anos após o patch) — sinal de que a exploração continuou relevante em ambientes não corrigidos por muito tempo, tipicamente em cadeias de ataque que primeiro obtêm execução com usuário comum e depois usam esta CVE para virar SYSTEM.
Versiones
Cómo protegerse
Aplicar a atualização do boletim MS16-098 (KB3178466). Os pacotes específicos por sistema, conforme a Microsoft: KB3177725 para Windows Vista SP2, Server 2008 SP2, Server 2008 R2 SP1, Windows 7 SP1, Windows 8.1, Server 2012, Server 2012 R2 e Windows RT 8.1; KB3176492 para Windows 10 versão inicial (Gold); KB3176493 para Windows 10 versão 1511; KB3176495 para Windows 10 versão 1607. Todas essas versões estão fora de suporte hoje — qualquer sistema ainda rodando essas builds sem atualização de segurança está exposto a esta e a centenas de outras falhas de kernel já corrigidas, e o caminho real de mitigação é migrar para uma versão suportada do Windows.
Não há paliativo de configuração conhecido e documentado pelo fornecedor para esta falha específica — ela está no caminho de código padrão do subsistema gráfico do kernel, usado por qualquer aplicação Win32 normal, então não existe flag para 'desligar' a função vulnerável sem quebrar funcionalidade básica do sistema. Controle compensatório real é reduzir a superfície de ataque local: impedir execução de binários não confiáveis por usuários de baixo privilégio, isolar sessões, e usar EDR para detectar comportamento de exploração de kernel (crashes anômalos em win32k/csrss, chamadas atípicas de GDI). Isso mitiga o risco, não fecha a falha.
Cómo detectar
Não há assinatura de rede a procurar — a exploração é inteiramente local, dentro do kernel, sem tráfego externo associado. Em endpoints, os sinais possíveis são: crashes ou comportamento anômalo em win32k.sys/win32kfull.sys, criação de objetos GDI (bitmaps/paletas) com parâmetros fora do padrão por processos de usuário comum, e telemetria de EDR que capture chamadas de escalonamento de privilégio seguidas de execução com token SYSTEM a partir de processo que não deveria ter esse nível. O PoC público da siberas (CVE-2016-3309_Reloaded) tem binários e comportamento documentados que podem servir de base para regras de detecção baseadas em comportamento, mas não existe indicador de comprometimento genérico e confiável publicado pelo fornecedor.