Windows Print Spooler Remote Code Execution Vulnerability
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
PrintNightmare é uma falha crítica no Windows Print Spooler que permite execução remota de código com privilégios SYSTEM através da função RpcAddPrinterDriverEx (e variante RpcAsyncAddPrinterDriver). A CVE existe em praticamente toda versão de Windows com o serviço de impressão ativo, de estações a controladores de domínio, e passou de PoC pública para exploração ativa documentada em menos de 48 horas — hoje está no catálogo KEV da CISA. O detalhe que a manchete '8.8 crítico' esconde: a exploração remota exige autenticação prévia no serviço (mesmo que com um usuário de baixo privilégio), o que reduz drasticamente o universo de atacantes anônimos, mas não elimina o risco em ambientes de Active Directory, onde qualquer conta de domínio comprometida se torna um trampolim para SYSTEM em qualquer host com o Spooler exposto.
Detalhamento técnico
A função RPC RpcAddPrinterDriverEx() (interface MS-RPRN) instala drivers de impressora recebendo um objeto DRIVER_CONTAINER com metadados do driver e uma flag dwFileCopyFlags controlando como os arquivos substitutos são copiados. O Print Spooler não valida adequadamente a origem e a integridade do arquivo de driver referenciado — qualquer usuário autenticado pode apontar para um driver hospedado em um servidor remoto (via SMB) e o serviço spoolsv.exe, executando como SYSTEM, carrega e executa a DLL apontada sem verificação de assinatura ou de contexto de privilégio adequado. Isso é classificado como restrição de acesso incorreta a funcionalidade privilegiada (CWE-269, privilege management).
Como é explorada
O vetor primário é RpcAddPrinterDriverEx() invocado sobre SMB, ou a variante RpcAsyncAddPrinterDriver() invocada via RPC puro — ambas atingem o mesmo caminho de código de AddPrinterDriverEx. O pré-requisito real é autenticação: um atacante precisa de credenciais válidas no sistema-alvo (mesmo que de baixo privilégio) para chamar a RPC remotamente; localmente, um usuário sem privilégios também consegue escalar para SYSTEM sem interação do usuário-alvo. Isso torna o cenário mais perigoso em redes internas e domínios AD, onde uma conta comprometida por phishing ou credential stuffing se transforma em execução SYSTEM em qualquer máquina com o Spooler acessível pela rede — inclusive controladores de domínio, cujo comprometimento equivale a takeover total do domínio.
Versões
Como se proteger
A correção completa exige aplicar a atualização de segurança da Microsoft para CVE-2021-34527 correspondente à versão do sistema (lançada em ondas entre 1º e 7 de julho de 2021, cobrindo inclusive Windows Server 2012, Server 2016 e Windows 10 versão 1607, que ficaram sem patch nos primeiros dias) e, adicionalmente, confirmar que as chaves de registro em HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint (NoWarningNoElevationOnInstall e UpdatePromptSettings) estão em 0 ou ausentes — sistemas com essas chaves em valor diferente de zero permanecem vulneráveis 'by design' mesmo com o patch instalado, segundo a própria Microsoft. Após o patch, a chave RestrictDriverInstallationToAdministrators (documentada em KB5005010) passa a ser verificada para restringir instalação de drivers a administradores.
Quando a atualização não pode ser aplicada imediatamente, os paliativos reais documentados pela Microsoft e replicados pelo CERT/CC são: parar e desabilitar o serviço Spooler (Stop-Service -Name Spooler -Force; Set-Service -Name Spooler -StartupType Disabled), o que elimina impressão local e remota; ou desabilitar a política 'Allow Print Spooler to accept client connections' via GPO, que bloqueia o vetor remoto mas mantém impressão local em dispositivo diretamente conectado (exige reinício do serviço Spooler). Bloquear as portas 135/tcp (RPC Endpoint Mapper) e 139/445/tcp (SMB) em firewall baseado em host reduziu a exploração remota em testes, mas pode quebrar funcionalidades legítimas de servidor.
Não funciona como mitigação: instalar apenas a atualização de CVE-2021-1675 (o patch de junho de 2021) — essa CVE é distinta e trata de outro vetor na mesma função; sistemas só com esse patch permanecem expostos ao PrintNightmare.
Como detectar
Sinais de exploração incluem: criação de novos arquivos .dll em C:\Windows\System32\spool\drivers\x64\3\ (ou subpastas equivalentes) fora de processo legítimo de instalação de driver, seguida de carregamento por spoolsv.exe; entradas de log de eventos do Windows Print Service (Microsoft-Windows-PrintService/Operational e /Admin) registrando adição de drivers com nomes suspeitos ou origem em caminho de rede (UNC); e processos filhos anômalos gerados por spoolsv.exe com token SYSTEM. Chamadas RPC para as interfaces RpcAddPrinterDriverEx/RpcAsyncAddPrinterDriver capturadas em tráfego SMB (portas 139/445) ou RPC (porta 135) partindo de hosts que não deveriam administrar impressão são um indicador de rede. Não há assinatura única confiável para todas as variantes do exploit publicadas — múltiplas PoCs (incluindo módulo Metasploit) usam caminhos de execução levemente diferentes, então ausência de alerta em uma ferramenta específica não garante que o host não foi alvo de tentativa.