Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as DynDNS-privileged user
-
DeliveryConfigure custom file:// Update URL
-
ExploitSet non-matching Result Match string
-
Execution_checkStatus() logs root file contents
-
ImpactHarvest config.xml / master.passwd secrets
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File name/path control
|
| Exploitation Conditions | Requires an authenticated pfSense CE account that has been granted the Dynamic DNS client privilege and access to services_dyndns_edit.php; the attacker must configure a custom DynDNS provider whose Update URL uses the file:// scheme (e.g. file:///conf/config.xml or file:///etc/master.passwd) and must supply a Result Match string that does NOT match the file contents, so that _checkStatus() logs the fetched data as root to the system log. Limiting factors: this privilege is not held by anonymous or default low-level users (PR:H), no victim interaction is needed (UI:N), and impact is confined to disclosure of files readable by root - there is no write/integrity or availability effect. It affects default-feature behavior of the DynDNS client, so no exotic non-default configuration beyond granting the privilege is required. |
| Impact | This is a credible but privilege-gated information-disclosure flaw, not a critical mass-exploitation threat. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N, VC:H only) and the 6.9 (Medium) score are internally consistent with the description: exploitation is network-reachable and low-complexity, but requires a user already holding the Dynamic DNS client privilege (PR:H), which is a non-default, administratively granted permission. Public exploit code exists (abraxas/pfsense-dyndns-file), reported by VulnCheck, which raises practical risk, but the vulnerability is NOT in CISA KEV and no active exploitation is indicated - so this should be treated as 'publicly available exploit code exists,' distinct from in-the-wild use. No EPSS score was provided in the input, so exploitation probability cannot be quantified here. The dominant factor limiting real-world risk is the PR:H prerequisite: an attacker must already be a semi-trusted authenticated operator, making this primarily a privilege-escalation-of-data / insider or post-initial-access concern (reading /conf/config.xml and /etc/master.passwd as root) rather than a perimeter breach. No SSVC decision data was supplied. Overall: real and worth patching given public POC and the sensitivity of the files exposed, but the authentication barrier keeps it out of emergency-priority territory. |
| Exploit ScenarioDerived | An authenticated pfSense operator (or an attacker who has compromised a limited account holding the Dynamic DNS client privilege) edits a DynDNS entry, selects a custom provider, and points the Update URL at file:///conf/config.xml with a deliberately non-matching Result Match string. When the client runs, _checkStatus() writes the fetched file contents to the system log as root, exposing the full configuration (including password hashes) or /etc/master.passwd. A public proof-of-concept for this technique is available on GitHub. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Local file read in Netgate pfSense CE through 2.9.0 allows an authenticated user who holds the Dynamic DNS client privilege to cause root-readable files such as /conf/config.xml or /etc/master.passwd to be written into the system log. The attacker configures a custom DynDNS provider with a file:// Update URL and a deliberately non-matching Result Match value, so the _checkStatus() routine logs the fetched content as root. Publicly available exploit code exists, but exploitation is privilege-gated: it requires access to services_dyndns_edit.php with the Dynamic DNS client privilege, and independent assessment confirms only confidentiality impact with no integrity or availability effect, making this a credible but limited information-disclosure risk rather than a mass-exploitation threat.
RemediationAI
No vendor-released patch identified at time of analysis; monitor the VulnCheck advisory at https://www.vulncheck.com/advisories/netgate-pfsense-ce-through-2.9.0-local-file-read-via-dynamic-dns-update-url and Netgate channels for an official fixed version. Until a patch is available, remove the Dynamic DNS client privilege from any account that does not absolutely require it and restrict access to services_dyndns_edit.php to trusted administrators; this blocks the required precondition but will break legitimate delegated DynDNS administration. Disable or avoid custom DynDNS providers that accept arbitrary Update URLs, or enforce a policy that only http and https URLs are used, noting that this may disrupt nonstandard provider configurations. Review system logs for file:// URL usage or leaked content from /conf/config.xml and /etc/master.passwd, and rotate any credentials or secrets exposed in logs; log review and secret rotation can be operationally noisy but limits damage if the flaw has already been triggered. The public exploit at https://github.com/abraxas/pfsense-dyndns-file and research at https://abraxaslabs.tech/research/pfsense-ce-leftovers provide additional detection context.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The pfSense CE Dynamic DNS client is implemented in PHP within dyndns.class and exposed through services_dyndns_edit.php; the vulnerable flow lets a privileged user supply a custom Update URL that is fetched by the DynDNS client. CWE-73 (External Control of File Name or Path) is the root cause class because the application does not constrain the URL scheme or target path, allowing PHP's file:// stream wrapper to read local files as the root user running the DynDNS update process. The referenced source lines show the parsing and status-check logic in dyndns.class L598-L616 and L2151-L2171 plus the edit page handling in services_dyndns_edit.php L138-L141; when the Result Match string fails to match, _checkStatus() logs the retrieved file content into the system log. The CPE cpe:2.3:a:netgate:pfsense_ce:*:*:*:*:*:*:*:* identifies pfSense CE through 2.9.0 as affected, and the issue requires the Dynamic DNS client privilege rather than anonymous access.
Know when Pfsense Ce gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable DynDNS feature (AV:N/AC:L) but requires the specially granted Dynamic DNS client privilege (PR:H); confidentiality-only impact (C:H, I:N, A:N) from root file reads, no scope change claimed.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Netgate pfSense CE through 2.9.0 contains a local file read vulnerability that allows users with the Dynamic DNS client privilege to read files as root by setting a file:// custom Update URL in services_dyndns_edit.php. Attackers can set a non-matching Result Match string so _checkStatus() logs file contents such as /conf/config.xml or /etc/master.passwd to the system log.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Pfsense Ce
View allThe SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot
OS command injection in Netgate pfSense CE 2.7.0 through 2.9.0 allows an authenticated web-interface user who holds the
OS command injection in Netgate pfSense CE 2.7.0 through 2.9.0 lets an authenticated web GUI user who holds the Traffic
Command injection in Netgate pfSense CE through 2.9.0 allows an authenticated user with Virtual IP (CARP) edit privilege
Command injection in Netgate pfSense CE through 2.9.0 allows remote authenticated users with limited 'Wireless Edit' or
Command injection in Netgate pfSense CE 2.4.5 through 2.9.0 lets an authenticated WebGUI user holding the Advanced Admin
OS command injection in Netgate pfSense CE (through 2.9.0) allows remote attackers holding an authenticated web-GUI acco
Command injection in pfSense CE 2.7.0 through 2.9.0 allows authenticated users who hold only the Captive Portal HA privi
Authorization bypass in Netgate pfSense CE through 2.9.0 allows an authenticated WebGUI account that holds page privileg
Authenticated VPN users can execute arbitrary commands as root on pfSense CE through 2.9.0 by exploiting an OS command i
Command injection in Netgate pfSense CE 2.7.0 through 2.9.0 lets an authenticated administrator who holds IPsec Mobile c
PHP code execution on Netgate pfSense Plus and pfSense CE firewalls can be achieved by an authenticated, highly privileg
EUVD-2026-102342
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB