
LFI pré-autenticação leva a RCE
Pesquisador: K | Produto: Cacti ≤ 1.2.30 | CVE: CVE-2026-39938
| Campo | Valor |
|---|---|
| Produto | Cacti — A Solução Completa de Gráficos Baseada em RRDtool |
| Versão(ões) Afetada(s) | ≤ 1.2.30 |
| Classe de Vulnerabilidade | CWE-22: Travessia de Caminho (LFI) → CWE-78: Injeção de Comandos do SO |
| Vetor de Ataque | Rede |
| Autenticação | Nenhuma exigida (bypass da conta de convidado) |
| Interação do Usuário | Nenhuma |
| Pontuação CVSSv3.1 | 9.8 — CRÍTICO |
| Vetor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
O Cacti ≤ 1.2.30 está vulnerável a Inclusão de Arquivo Local (LFI) não autenticada por meio do parâmetro graph_theme em graph_image.php, encadeada a Execução Remota de Código (RCE) por meio de injeção de comandos do SO via cacti_escapeshellarg() no Windows.
HTTP Request
│
▼
graph_image.php
│
├── $guest_account = true → Auth bypass (no login needed)
│
├── graph_theme param → LFI (CWE-22)
│ └── Path traversal via basename() bypass
│
└── Other params (graph_height, etc.)
└── cacti_escapeshellarg() → OS injection (CWE-78)
└── proc_open() → RCE
graph_themeO parâmetro graph_theme é sanitizado de forma insuficiente. A correção tentou usar basename(), mas isso é trivialmente contornável — um caminho como themes/../../etc/passwd passa pela validação do basename() enquanto ainda percorre diretórios.
Caminho de código vulnerável em graph_image.php:
$theme = basename($_GET['graph_theme']); // basename() is NOT sufficient
include_once("./include/theme_" . $theme . ".php"); // LFI
A correção na versão 1.2.31 substitui basename() por cacti_validate_theme(), que usa uma lista de permissões do sistema de arquivos.
GET /cacti/graph_image.php?local_graph_id=1&graph_theme=../../../../etc/passwd
GET /cacti/graph_image.php?local_graph_id=1&graph_height=100" & whoami & "&action=view
A injeção de comandos do SO já fornece Execução Remota de Código (RCE) direta, portanto, o LFI não é necessário para comprometer o sistema.
No entanto, do ponto de vista de um pesquisador, se ambos os problemas forem considerados em conjunto:
Isso mostra que combinar múltiplas vulnerabilidades aumenta o impacto geral e torna a exploração mais fácil e confiável.
| Pilar | Nível | Descrição |
|---|---|---|
Pontuação: 9.8 — CRÍTICO
| Prioridade | Ação |
|---|---|
| Imediata | Atualizar para o Cacti 1.2.31 ou posterior |
MENG HOKSENG
Pesquisador de Segurança Independente
Referências:
| Condição | Probabilidade | Observações |
|---|
| Cacti roda no Windows | Comum em empresas | A falha no escape do cmd.exe permite RCE |
| Conta de convidado habilitada | Comum — frequentemente padrão | O usuário convidado permite visualização pública de gráficos |
| Pelo menos um gráfico existe | Quase universal | local_graph_id=1 presente após a instalação |
| RRDtool instalado | Exigido pelo Cacti | Sempre presente |
| Confidencialidade |
| ALTO |
| Acesso total de leitura ao sistema de arquivos do servidor web (config, credenciais do banco de dados) |
| Integridade | ALTO | Execução arbitrária de comandos, implantação de web shell |
| Disponibilidade | ALTO | Encerramento de processos, corrupção de arquivos, DoS |
| Métrica | Valor |
|---|
| Vetor de Ataque | Rede |
| Complexidade do Ataque | Baixa |
| Privilégios Necessários | Nenhum |
| Interação do Usuário | Nenhuma |
| Escopo | Inalterado |
| Confidencialidade | Alta |
| Integridade | Alta |
| Disponibilidade | Alta |