CVE-2018-11138
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply updates per vendor instructions.
Resumen
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.
Detalle técnico
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.
Cómo se explota
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.
Versiones
Cómo protegerse
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.
Cómo detectar
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.