← back
CVE-2018-11138criticalunder attackransomwareCWE-78

CVE-2018-11138

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 92%
from disclosure to weapon27 days
Published on NVDMay 31
1st PoC+27d
metasploitMay 31
CISA KEV+1394d
exploitation probability
92%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
2 public exploit(s)
Action required by CISAfederal deadline: 2022-04-15

Apply updates per vendor instructions.

Summary

Falha de injeção de comandos OS (CWE-78) no script '/common/download_agent_installer.php' do Quest KACE System Management Appliance (K1000), acessível sem autenticação. Um parâmetro passado ao script chega sem sanitização a uma chamada de shell no servidor, permitindo execução arbitrária de comandos como o usuário do servidor web. Está no catálogo KEV da CISA com exploração confirmada em ambiente real, apesar de a CVE ter quatro anos quando foi adicionada — sinal de que appliances desatualizados continuam expostos.

Technical detail

O script download_agent_installer.php monta o instalador do agente KACE dinamicamente a partir de parâmetros GET, entre eles orgid (ID da organização). O valor desse parâmetro é concatenado em um comando de sistema executado no lado servidor sem escape de metacaracteres de shell — típico CWE-78 (OS Command Injection). Um atacante que insira caracteres como ';' no valor de orgid consegue encadear um segundo comando arbitrário, executado com os privilégios do processo web (usuário 'www' no FreeBSD, no caso testado).

O endpoint é alcançável por qualquer cliente não autenticado — não há verificação de sessão antes de processar a requisição. Isso, combinado com a natureza do parâmetro vulnerável (usado internamente para localizar o pacote do agente antes de ser passado a um comando de shell), é o que torna a falha crítica: não exige nenhuma autenticação prévia, apenas conhecimento de três valores que o próprio appliance expõe.

A cadeia de exploração documentada pelo módulo Metasploit usa três parâmetros: orgid (onde a injeção ocorre; o valor padrão de organização é '1'), version (uma versão de agente Windows válida — descobrível via share Samba '\\kace.local\client\agent_provisioning\windows_platform' se compartilhamento de arquivos estiver habilitado, ou listada no site do fornecedor) e um número de série do appliance, obtido através de outro endpoint não autenticado, '/common/about.php', que retorna o serial em texto claro na resposta.

How it’s exploited

O vetor é HTTP, remoto, sem autenticação (AV:N/PR:N/UI:N no vetor CVSS) — corresponde ao que os pesquisadores da Core Security e o módulo Metasploit público demonstraram. O único pré-requisito prático é acesso de rede ao appliance KACE e conhecimento de: (1) o ID de organização válido (o valor padrão '1' funciona na maioria das instalações não customizadas), (2) uma string de versão de agente Windows aceita pelo servidor, e (3) o número de série do appliance — item que o próprio atacante consegue coletar antes do ataque via '/common/about.php', também sem autenticação. Não há configuração não padrão necessária além de as duas rotas HTTP estarem acessíveis, o que é o comportamento padrão do produto.

Na prática, o ataque consiste em enviar uma requisição GET para download_agent_installer.php com o parâmetro de organização manipulado para injetar um comando de shell adicional, encadeado ao processamento legítimo do orgid. O servidor executa o comando injetado como usuário do serviço web, resultando em execução remota de código (RCE) sem shell reverso previamente estabelecido — o próprio módulo Metasploit trata isso como execução de payload em linha de comando.

A CISA confirma exploração ativa (entrada no catálogo KEV desde março de 2022, com prazo de correção definido para abril de 2022), e a disponibilidade de PoC pública e módulo Metasploit desde 2018 tornou o exploit trivial de operacionalizar por qualquer agente de ameaça com varredura de appliances KACE expostos à internet.

Versions

Affected
Quest KACE System Management Appliance (K1000) build 8.0.318 confirmada como vulnerável pelo pesquisador original; o verificador do módulo Metasploit trata como vulneráveis todas as versões anteriores a 7.0, e as faixas 7.0.x < 7.0.121307, 7.1.x < 7.1.150, 7.2.x < 7.2.103, 8.0.x < 8.0.320 e 8.1.x < 8.1.108.
Fixed in
7.0.121307, 7.1.150, 7.2.103, 8.0.320 e 8.1.108, conforme notificação de produto do fornecedor (noti-00000134).

How to protect

O fornecedor (Quest) publicou correção via notificação de produto (noti-00000134). Segundo as faixas de versão verificadas pelo próprio módulo Metasploit contra os cabeçalhos X-KACE-Version do appliance, as versões corrigidas são: 7.0.121307 (para o ramo 7.0.x), 7.1.150 (ramo 7.1.x), 7.2.103 (ramo 7.2.x), 8.0.320 (ramo 8.0.x — a versão testada e vulnerável foi 8.0.318) e 8.1.108 (ramo 8.1.x). Qualquer versão anterior a 7.0 também é tratada como vulnerável pelo verificador.

Se a atualização imediata não for viável, o controle compensatório real é restringir o acesso de rede ao appliance KACE — colocá-lo fora do alcance direto da internet e limitar acesso aos endpoints '/common/download_agent_installer.php' e '/common/about.php' a redes de gerenciamento confiáveis, já que ambos operam sem autenticação por design. Desabilitar o compartilhamento Samba de provisionamento de agentes não neutraliza a falha (o atacante pode obter a versão do agente por outras fontes, como o site do fornecedor), então não deve ser tratado como mitigação suficiente isoladamente.

Não há mitigação eficaz apenas por regra de WAF genérica contra o parâmetro orgid sem quebrar funcionalidade legítima do provisionamento de agentes — o caminho seguro é a atualização de versão combinada com segmentação de rede até a atualização ser aplicada.

How to detect

Requisições HTTP para '/common/download_agent_installer.php' contendo metacaracteres de shell (';', '`', '|', '&') no valor do parâmetro orgid são o indicador mais direto de tentativa de exploração — não deveriam aparecer em uso legítimo, já que orgid é normalmente um número inteiro simples. Requisições anteriores a '/common/about.php' partindo do mesmo IP, sem sessão autenticada, indicam reconhecimento para obter o número de série do appliance, passo típico da cadeia de exploração documentada.

O próprio appliance expõe os cabeçalhos 'X-KACE-Appliance' e 'X-KACE-Version' nas respostas HTTP, úteis para identificar rapidamente se um host é um KACE e qual build está rodando — verificação que o módulo Metasploit e templates Nuclei usam antes de tentar a injeção. Não há um IOC de payload único, pois o comando injetado é definido pelo atacante; monitorar logs de acesso do webserver para os dois endpoints citados, combinados com execução de processos inesperados pelo usuário do serviço web (www), é o sinal mais confiável disponí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.
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by anonymous users and can be abused to execute arbitrary commands on the system.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.