← back
CVE-2019-1069highunder attackransomwareCWE-59

Task Scheduler Elevation of Privilege Vulnerability

73Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 7.8epss 6.1%
from disclosure to weapon0 days
Published on NVDJun 12
1st PoCJun 3
CISA KEV+1007d
exploitation probability
6.1%top 7% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 public exploit(s)
Action required by CISAfederal deadline: 2022-04-05

Apply updates per vendor instructions.

Summary

Falha de escalonamento de privilégios local no Windows Task Scheduler que permite a um usuário autenticado sem privilégios assumir controle total (incluindo posse) de qualquer arquivo do sistema, inclusive binários protegidos por TrustedInstaller — abrindo caminho para execução como SYSTEM. Foi divulgada publicamente por SandboxEscaper com exploit funcional antes de existir patch, e resolvida pela Microsoft em junho de 2019. Importa porque o vetor exige apenas execução de código local não privilegiado, um pré-requisito comum em pós-exploração e em ambientes multiusuário.

Technical detail

A causa é uma combinação de link following (CWE-59) com um problema de impersonation na função tsched::SetJobFileSecurityByName(), dentro de schedsvc.dll (o serviço Task Scheduler, que roda como NT AUTHORITY\SYSTEM). Quando um usuário pede para alterar a configuração 'run-as' de uma tarefa agendada (via schtasks.exe /change /RU /RP), a RPC _SchRpcSetSecurity() ajusta a DACL e o owner do arquivo .job correspondente em %Windir%\system32\tasks para dar ao usuário chamador acesso total — operação legítima quando o arquivo é de fato a tarefa do próprio usuário.

O problema aparece ao usar o schtasks.exe legado (da era Windows XP), que fala com uma interface RPC antiga. Analistas da 0patch depuraram a chamada e confirmaram, via !token, que no momento em que SetSecurityInfo() é invocado o token de impersonation não corresponde ao usuário atacante, mas sim a Local System — ou seja, a validação de que 'o chamador tem permissão de escrita sobre este arquivo' não está sendo feita corretamente sob o contexto certo antes da operação privilegiada de SetSecurityInfo.

O atacante controla o caminho de destino explorando comportamento de migração legado: tarefas criadas via schtasks.exe antigo em %Windir%\tasks são migradas para %Windir%\system32\tasks. Depois de disparar essa migração uma vez (criando o arquivo de tarefa legítimo), o atacante apaga o arquivo resultante e cria em seu lugar um hard link apontando para um arquivo protegido arbitrário do sistema (por exemplo, um driver em system32\drivers). Ao repetir o comando de alteração da tarefa, o serviço Task Scheduler, agindo como SYSTEM, aplica a mudança de DACL/owner sobre o que ele acredita ser o arquivo de tarefa do usuário — mas que na verdade, via hard link, é o arquivo de sistema.

O resultado documentado pela CERT/CC: o arquivo alvo deixa de ser propriedade de TrustedInstaller e passa a ter permissão Full Control para o usuário atacante, que passa a poder sobrescrevê-lo livremente.

How it’s exploited

Pré-requisito real: execução de código como usuário autenticado sem privilégios elevados na máquina — não há vetor remoto nem exige interação de outro usuário (UI:N). O exploit público (chamado 'polarbear', de SandboxEscaper) automatiza a sequência: copia um job para %Windir%\tasks, executa schtasks.exe legado com /change /RU /RP para forçar a migração e criação do arquivo em system32\tasks, apaga esse arquivo, cria um hard link para o arquivo-alvo protegido, e repete o /change para que o Task Scheduler aplique a alteração de permissão/owner sobre o alvo real via o link.

A CERT/CC confirmou funcionamento confiável em Windows 10 (32 e 64 bits) totalmente atualizado, além de Windows Server 2016 e Server 2019, à época do teste (antes do patch). Em Windows 8 a técnica pública só afeta arquivos onde o usuário já teria acesso de escrita, tornando o impacto prático desprezível ali; em Windows 7 os pesquisadores não conseguiram reproduzir. O ganho final é controle irrestrito sobre um arquivo de sistema escolhido — na prática usado para sobrescrever um binário ou driver executado com privilégios de SYSTEM e obter execução de código nesse nível, completando a escalada de privilégio total.

A vulnerabilidade está no catálogo KEV da CISA (adicionada em 2022, com prazo de correção 2022-04-05), confirmando exploração ativa observada, embora a CISA não a associe a campanhas de ransomware conhecidas. Como o PoC ficou público antes do patch oficial, houve uma janela real de exploração 0-day.

Versions

Affected
Microsoft Windows 10 Version 1507; Windows 10 Version 1607; Windows 10 Version 1703; Windows 10 Version 1709; Windows 10 Version 1709 for 32-bit Systems; Windows 10 Version 1803; Windows 10 Version 1809; Windows 10 Version 1903 for 32-bit Systems. A CERT/CC também confirmou exploração funcional em Windows Server 2016 e Windows Server 2019 totalmente atualizados (não listados na tabela oficial de produtos fornecida, mas testados pelos pesquisadores). Windows 8 apresenta a falha subjacente mas com impacto prático negligenciável pela técnica pública conhecida; Windows 7 não foi reproduzido pelos pesquisadores.
Fixed in
Corrigido pelas atualizações de segurança da Microsoft de junho de 2019 (ciclo 'Patch Tuesday' de 11/06/2019) para as versões e builds de Windows 10 listadas no advisory oficial. Números específicos de KB não constam nas fontes consultadas — verificar a build exata contra o MSRC Update Guide antes de confirmar remediação.

How to protect

A correção oficial da Microsoft veio nas atualizações cumulativas de junho de 2019 ('Patch Tuesday'), que ajustam a validação de operações de arquivo no Task Scheduler Service. Aplicar essas atualizações (e cumulativas posteriores) nas versões afetadas é a mitigação definitiva; não há números de KB confirmados nas fontes consultadas para citar aqui — confirme a atualização de junho/2019 correspondente à build específica no Update Catalog da Microsoft antes de considerar corrigido.

Como paliativo temporário antes do patch, a 0patch disponibilizou um micropatch de terceiros lançado cerca de 12 dias antes da correção oficial — trata-se de um patch binário aplicado em runtime, não endossado pela Microsoft, com o custo de introduzir uma dependência externa de terceiros no processo core do serviço; avalie esse tipo de solução apenas como mitigação de curtíssimo prazo em ambientes de alto risco.

Controles compensatórios genéricos: restringir contas de usuário padrão em endpoints (reduzir superfície de contas autenticadas com esse nível de acesso), monitorar e restringir a presença/execução de versões legadas de schtasks.exe, e usar EDR/whitelisting de aplicação para bloquear execução de binários não assinados/antigos que reproduzam esse padrão de RPC legado. Não existe mitigação de rede (firewall/WAF) aplicável, pois o vetor é inteiramente local.

How to detect

Sinal mais confiável: uso do schtasks.exe legado (versão antiga, estilo Windows XP, que fala com a interface RPC legada) em uma máquina moderna, algo atípico e raro em operação normal — presença desse binário ou chamadas a essa interface RPC específica é forte indicador. Em nível de sistema de arquivos/ETW, procurar por criação de arquivos em %Windir%\tasks (caminho legado, não usado normalmente em versões modernas) seguida rapidamente por exclusão e recriação como hard link para arquivos fora do diretório de tarefas — especialmente hard links apontando para binários do sistema (drivers, DLLs, executáveis protegidos por TrustedInstaller).

Process Monitor ou ETW podem capturar operações SetSecurityFile originadas de schedsvc.dll (via _SchRpcSetSecurity/SetJobFileSecurityByName) com alterações de DACL/owner em arquivos fora do escopo esperado do usuário chamador. Não há assinatura de rede, pois o ataque é inteiramente local; ambientes sem logging de criação de arquivo/hard link e sem auditoria de chamadas RPC ao Task Scheduler dificilmente terão evidência retroativa confiável.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
An elevation of privilege vulnerability exists in the way the Task Scheduler Service validates certain file operations. An attacker who successfully exploited the vulnerability could gain elevated privileges on a victim system. To exploit the vulnerability, an attacker would require unprivileged code execution on a victim system. The security update addresses the vulnerability by correctly validating file operations.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:P/RL:O/RC:C
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.