Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with Client Specific Override privileges
-
DeliveryStore path-traversal value in common_name
-
ExploitInduce matching OpenVPN connect/auth event
-
Executionopenvpn_csc_conf_write concatenates path without basename
-
ImpactCSO config file written outside intended directory
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated user holding OPNsense OpenVPN Client Specific Override privileges, who stores a path-traversal sequence (e.g. ../) in the CSO common_name field - the exact unsanitized input consumed by openvpn_csc_conf_write() via the client_connect.php and user_pass_verify.php event handlers. The write does not occur until a matching OpenVPN client-connect or authentication event is processed with that common name/username, so the attacker must also cause such an event to fire. Key limiting factors: (1) operator-level privilege and access to CSO configuration are prerequisites; (2) the written payload is generated OpenVPN configuration content, not arbitrary attacker-controlled bytes, limiting what can be achieved by overwriting a target file; (3) the traversal only affects systems running the OpenVPN server with Client Specific Override entries prior to version 26.1.11. |
| Impact | This is a medium-severity (CVSS 5.9) path traversal (CWE-22) that the combined signals place well below genuine emergency priority. The CVSS vector CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L is network-reachable but gated by two meaningful brakes: AC:H and PR:L. PR:L is confirmed authenticated access, and the description sharpens this to a specific role - a user holding Client Specific Override privileges, which is an administrative/operator capability, not an ordinary low-privileged account. AC:H is justified because exploitation is not self-contained: the attacker must additionally cause a matching OpenVPN client-connect or authentication event (a client presenting the matching common name/username) before the malicious CSO file is written. No EPSS score was provided in the input, so exploitation probability cannot be quantified. KEV status is not listed (no active exploitation signal) and no POC/exploit code is referenced - no public exploit identified at time of analysis. The impact is further constrained by the vulnerability's own mechanics: the file written is generated OpenVPN configuration content, not attacker-controlled arbitrary bytes, which caps the realistic integrity damage well below what I:H alone would imply. Net assessment: a real but lower-tier issue - an authenticated, operator-privileged, multi-condition flaw in a single product rather than a widely-weaponizable remote bug. Note one tension worth flagging: the official I:H rating sits uneasily with the description's explicit statement that content is generated config rather than arbitrary bytes, which argues for a lower integrity impact - verify intended file-overwrite consequences against the vendor advisory GHSA-2m9v-p7r9-gfcw. |
| Exploit ScenarioDerived | An authenticated OPNsense operator with Client Specific Override privileges sets an OpenVPN CSO common_name containing path traversal sequences (e.g. ../../). When a VPN client subsequently connects or authenticates with a matching common name/username, openvpn_csc_conf_write() concatenates the unsanitized value into the target path and writes a generated OpenVPN config file outside /var/etc/openvpn-csc/<vpnid>/, potentially clobbering a file elsewhere on the FreeBSD host. No public exploit code is referenced, and the attacker must still engineer the matching connect/auth event, so this is a deliberate, privileged action rather than drive-by exploitation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
A path traversal in OPNsense's OpenVPN Client Specific Override (CSO) handling allows an authenticated user holding CSO privileges to store a traversal sequence such as '../' in the common_name field, which openvpn_csc_conf_write() concatenates into the target path /var/etc/openvpn-csc/<vpnid>/<common_name> without normalization or a basename check; when a matching OpenVPN client-connect or authentication event is later processed by client_connect.php or user_pass_verify.php, a generated CSO configuration file is written outside the intended directory. Exploitation is constrained: the attacker must first have operator-level CSO access and must cause a matching common name or username to be processed, and the written content is generated OpenVPN configuration rather than arbitrary attacker-controlled bytes, which limits achievable impact - there is no public exploit identified at time of analysis. The issue is rated medium severity (vendor CVSS 5.9, independent assessment CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:L) and is fixed in OPNsense 26.1.11.
RemediationAI
Vendor-released patch: upgrade to OPNsense 26.1.11, which applies basename() to the common_name when constructing the CSO target filename and tightens the model field to StrictTextField with a /[^\/]+/ mask (see the advisory at https://github.com/opnsense/core/security/advisories/GHSA-2m9v-p7r9-gfcw and commits 3af496143a19153c18b2f9458b2510d58aff2b98 and 6101b3e2c90482111f420a47775c14a447441a72). If immediate upgrade is not possible, the most effective compensating control is to restrict who holds OpenVPN Client Specific Override privileges, since the attack requires an authenticated user with CSO configuration access - audit and revoke that privilege from accounts that do not need it, with the trade-off that CSO administration becomes limited to a small set of administrators. As a second control, review existing CSO entries for common_name values containing '/' or '..' and remove or correct them so the traversal string cannot be stored, noting this is a manual, ongoing process rather than a durable fix. Additionally, monitor /var/etc/openvpn-csc/ and its parent directories for unexpected file creation and watch OpenVPN client-connect/auth events whose common name or username contains path components, since these are the events that trigger the write; detection logging does not block the write itself and should be treated as a compensating detection measure rather than prevention.
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
OPNsense is a FreeBSD-based firewall and routing platform, and the affected component is its OpenVPN server integration written in PHP, tracked under the CPE cpe:2.3:a:opnsense:core:*:*:*:*:*:*:*:* (the OPNsense core package, tags PHP, Path Traversal, Core). The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory): the CSO 'common_name' model field in src/opnsense/mvc/app/models/OPNsense/OpenVPN/OpenVPN.xml was a plain TextField with no character masking, and openvpn_csc_conf_write() in src/etc/inc/plugins.inc.d/openvpn.inc built the destination filename by direct string concatenation as '/var/etc/openvpn-csc/' . $vpnid . '/' . $settings['common_name']. Because the VPN ID was sanitized with FILTER_SANITIZE_NUMBER_INT but the common name was not passed through basename() or any normalization, embedded '../' sequences escaped the per-instance CSO directory. The write is triggered lazily by the OpenVPN event handlers client_connect.php and user_pass_verify.php, which invoke the CSO configuration writer when a connecting client's common name or authenticating username matches the stored override entry. The upstream fix applies basename() to the common name, converts the model field to StrictTextField with AllowSpaces and a /[^\/]+/ mask that rejects slashes, closing the traversal vector at both the input-validation and file-write layers.
Know when Opnsense 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
AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L
Authenticated CSO operator (PR:L) and a required matching connect/auth event (AC:H); integrity lowered to I:L because written content is generated config, not arbitrary bytes, with no confidentiality loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
OPNsense is a FreeBSD based firewall and routing platform. Prior to version 26.1.11, the OpenVPN Client Specific Override common_name field accepts path traversal sequences and openvpn_csc_conf_write() concatenates the value into /var/etc/openvpn-csc/<vpnid>/<common_name> without normalization or a basename check. The affected event handlers are client_connect.php and user_pass_verify.php. An authenticated user with Client Specific Override privileges can store the traversal value, and a matching OpenVPN client-connect or authentication event causes a generated CSO file to be written outside the intended directory. The file content is generated OpenVPN configuration rather than arbitrary bytes, and practical exploitation requires the attacker to cause a matching common name or username to be processed. This issue is fixed in version 26.1.11.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Insecure permissions in the configuration directory (/conf/) of OPNsense Community Edition before 23.7 and Business Edit
DECISO OPNsense 23.1 does not impose rate limits for authentication, allowing attackers to perform a brute-force attack
A command injection vulnerability in the component /api/cron/settings/setJob/ of OPNsense Community Edition before 23.7
A command injection vulnerability in the component diag_backup.php of OPNsense Community Edition before 23.7 and Busines
/ui/cron/item/open in the Cron component of OPNsense Community Edition before 23.7 and Business Edition before 23.4.2 al
OPNsense Community Edition before 23.7 and Business Edition before 23.4.2 was discovered to contain insecure permissions
Insecure permissions exist for configd.socket in OPNsense Community Edition before 23.7 and Business Edition before 23.4
A directory traversal vulnerability in the Captive Portal templates of OPNsense Community Edition before 23.7 and Busine
A Cross-Site Request Forgery (CSRF) in the System Halt API (/system/halt) of OPNsense Community Edition before 23.7 and
OPNsense 19.1 contains a stored cross-site scripting vulnerability that allows authenticated attackers to inject malicio
OPNsense 19.1 contains a stored cross-site scripting vulnerability in the system_advanced_sysctl.php endpoint that allow
OPNsense 19.1 contains a reflected cross-site scripting vulnerability that allows unauthenticated attackers to inject ma
EUVD-2026-102115
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB