CVE-2019-15949
Patch now. It under exploitation confirmed by CISA and has a working public exploit.
Apply updates per vendor instructions.
Summary
Falha no Nagios XI anterior à versão 5.6.6 permite escalonamento de privilégios para root a partir de um usuário já autenticado no sistema. Não é uma RCE remota não autenticada como o nome sugere: exige acesso prévio como usuário 'nagios' no servidor, ou uma conta com permissão de gerenciar plugins no painel web (CCM). Importa porque está no catálogo KEV da CISA, tem PoC pública e módulo Metasploit — ou seja, qualquer acesso parcial ao ambiente vira controle total da máquina.
Technical detail
O endpoint profile.php?cmd=download aciona o script getprofile.sh para gerar um relatório de sistema. Esse script roda via uma entrada de sudo sem senha (NOPASSWD) configurada para o usuário nagios, ou seja, é executado como root sem exigir credencial adicional. Dentro de sua rotina, getprofile.sh invoca o executável check_plugin, que pertence ao usuário nagios (não a root) e tem permissão de escrita para esse usuário.
O problema é clássico de CWE-78 combinado com configuração insegura de sudo: um binário rodando com privilégio root chama outro binário que pode ser modificado por um usuário sem privilégio elevado. Quem controla o conteúdo de check_plugin — seja logado como 'nagios' no SO, seja através da interface web com permissão de editar/gerenciar plugins — controla o que será executado como root na próxima vez que o profile for gerado.
A cadeia de exploração não depende de um bug de parsing ou desserialização: é uma falha de design na separação de privilégios entre o script sudo e o binário que ele invoca, sem verificação de integridade ou path fixo protegido contra escrita pelo usuário de baixo privilégio.
How it’s exploited
O atacante precisa de uma das duas condições de acesso: (1) shell no servidor como usuário 'nagios' (não root), obtido por outra falha, credencial vazada ou acesso SSH limitado; ou (2) uma conta no painel web do Nagios XI com permissão para gerenciar plugins via CCM (Core Config Manager) — não precisa ser admin completo, mas precisa desse escopo específico. Isso corresponde ao PR:L do vetor CVSS: há necessidade de privilégio baixo prévio, não é exploração anônima.
Com qualquer um dos dois acessos, o atacante sobrescreve o executável check_plugin inserindo comandos arbitrários. Ao disparar a geração/download do system profile via profile.php?cmd=download, o sudo sem senha executa getprofile.sh como root, que por sua vez chama o check_plugin adulterado — os comandos injetados correm com privilégio root. O resultado final é shell reverso ou execução arbitrária de comando com controle total do sistema operacional subjacente.
Existe PoC público (script PHP que automatiza upload do payload e disparo do download do profile) e módulo Metasploit, o que reduz a complexidade prática a quase zero uma vez que o pré-requisito de acesso é satisfeito. A CISA incluiu a CVE no catálogo KEV confirmando exploração ativa observada, embora não haja indicação de uso em campanhas de ransomware conhecidas.
Versions
How to protect
Atualizar para Nagios XI 5.6.6 ou versão posterior é a correção do fornecedor — o problema foi corrigido em 20 de agosto de 2019, antes até da atribuição formal da CVE. Não há detalhe público do fornecedor sobre mudança exata no fix (se removeram o NOPASSWD, adicionaram verificação de integridade no check_plugin, ou restringiram permissões), então trate a atualização como a única mitigação validada.
Se a atualização não for possível de imediato, reduza a superfície: restrinja rigorosamente quem tem acesso de shell como usuário 'nagios' no servidor e revise as contas web com permissão de gerenciar/editar plugins no CCM — tratando esse escopo como equivalente a acesso root, já que é exatamente isso que ele concede via esta falha. Auditar e remover entradas sudo NOPASSWD desnecessárias no servidor Nagios é um controle compensatório genérico, mas não substitui o patch porque a cadeia específica de invocação pode ter outros pontos de entrada.
Não existe mitigação via WAF eficaz aqui: a falha não está em parsing de requisição HTTP, está em uma cadeia de execução local pós-autenticação. Bloquear o endpoint profile.php?cmd=download no perímetro apenas atrasa, não impede, se o atacante já tem acesso à rede interna ou VPN até o painel.
How to detect
Monitore chamadas ao endpoint profile.php?cmd=download nos logs do servidor web, especialmente vindas de contas sem privilégio administrativo pleno ou fora do padrão de uso normal de geração de relatórios. No nível de sistema, auditoria de integridade de arquivos (ex.: auditd, aide) sobre o binário check_plugin revela modificações não autorizadas — qualquer alteração de timestamp, hash ou owner nesse arquivo fora de uma atualização legítima é sinal forte de exploração.
Não há assinatura de rede confiável, já que o tráfego HTTP para baixar o profile é indistinguível de uso legítimo sem contexto de quem está autenticado e com qual permissão. A ausência de logging de auditoria de sudo (comando getprofile.sh executado como root via sudo) é o ponto cego mais comum — habilitar log de sessão sudo é o sinal mais confiável disponível.