
LFI pre-autenticazione che porta a RCE
Ricercatore: K | Prodotto: Cacti ≤ 1.2.30 | CVE: CVE-2026-39938
| Campo | Valore |
|---|---|
| Prodotto | Cacti — La soluzione di graphing completa basata su RRDtool |
| Versione(i) affetta(e) | ≤ 1.2.30 |
| Classe di vulnerabilità | CWE-22: Path Traversal (LFI) → CWE-78: OS Command Injection |
| Vettore d'attacco | Rete |
| Autenticazione | Nessuna richiesta (bypass account ospite) |
| Interazione utente | Nessuna |
| Punteggio CVSSv3.1 | 9.8 — CRITICO |
| Vettore | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
Cacti ≤ 1.2.30 è vulnerabile a Local File Inclusion (LFI) non autenticato tramite il parametro graph_theme in graph_image.php, concatenato a Remote Code Execution (RCE) tramite command injection OS via cacti_escapeshellarg() su Windows.
Richiesta HTTP
│
▼
graph_image.php
│
├── $guest_account = true → Bypass autenticazione (nessun login richiesto)
│
├── parametro graph_theme → LFI (CWE-22)
│ └── Path traversal tramite bypass di basename()
│
└── Altri parametri (graph_height, ecc.)
└── cacti_escapeshellarg() → OS injection (CWE-78)
└── proc_open() → RCE
graph_themeIl parametro graph_theme non viene sanitizzato a sufficienza. La correzione ha tentato di utilizzare basename(), ma questo è banalmente bypassabile — un percorso come themes/../../etc/passwd supera la validazione di basename() pur continuando a attraversare le directory.
Percorso del codice vulnerabile in graph_image.php:
$theme = basename($_GET['graph_theme']); // basename() is NOT sufficient
include_once("./include/theme_" . $theme . ".php"); // LFI
La correzione in 1.2.31 sostituisce basename() con cacti_validate_theme(), che utilizza una whitelist del filesystem.
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
L'OS command injection fornisce già una Remote Code Execution (RCE) diretta, quindi LFI non è necessario per raggiungere il compromesso.
Tuttavia, dal punto di vista di un ricercatore, se entrambi i problemi sono considerati insieme:
Questo mostra che la combinazione di più vulnerabilità aumenta l'impatto complessivo e rende lo sfruttamento più facile e affidabile.
| Pilastro | Valutazione | Descrizione |
|---|---|---|
Punteggio: 9.8 — CRITICO
| Priorità | Azione |
|---|---|
| Immediata | Aggiornare a Cacti 1.2.31 o successivo |
MENG HOKSENG
Ricercatore di sicurezza indipendente
Riferimenti:
| Condizione | Probabilità | Note |
|---|
| Cacti in esecuzione su Windows | Comune in azienda | Il difetto di escaping di cmd.exe permette RCE |
| Account ospite abilitato | Comune — spesso predefinito | L'utente ospite consente la visualizzazione pubblica dei grafici |
| Almeno un grafico esiste | Quasi universale | local_graph_id=1 presente dopo l'installazione |
| RRDtool installato | Richiesto da Cacti | Sempre presente |
| Riservatezza |
| ALTA |
| Accesso in lettura completo al filesystem del server web (config, credenziali DB) |
| Integrità | ALTA | Esecuzione arbitraria di comandi, distribuzione di web shell |
| Disponibilità | ALTA | Terminazione di processi, corruzione di file, DoS |
| Metrica | Valore |
|---|
| Vettore d'attacco | Rete |
| Complessità dell'attacco | Bassa |
| Privilegi richiesti | Nessuno |
| Interazione utente | Nessuna |
| Ambito | Invariato |
| Riservatezza | Alta |
| Integrità | Alta |
| Disponibilità | Alta |