Skip to main content

OPNsense CVE-2026-58390

| EUVDEUVD-2026-102136 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-15 GitHub_M
8.0
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Register backend username with double quote
  2. Delivery
    Connect to OpenVPN as that user
  3. Exploit
    Break out of data-common-name attribute
  4. Install
    Admin opens dashboard and hovers client row
  5. C2
    Event handler runs in admin session
  6. Execute
    Invoke privileged APIs, reset root password
  7. Impact
    Obtain root command execution

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a specific, non-default identity configuration: an OpenVPN server set to username-as-common-name with RADIUS or LDAP authentication, where the attacker can provision or self-register a valid backend username containing a double-quote character. A separate trust boundary must exist - the advisory explicitly states deployments where one administrator controls both the identity backend and the firewall do not cross a trust boundary, and the local user database is not exploitable because its username validator rejects quotes. Execution further depends on a firewall administrator opening the OpenVPN dashboard widget or connection-status page AND triggering the injected event handler (the demonstrated payload required pointer movement over the client row, not unconditional page-load execution). These factors - external RADIUS/LDAP backend, quote-permitting username provisioning, and active admin interaction - substantially limit realistic exploitation despite the network attack vector.

Impact

This is a high-severity stored XSS (CWE-79, CVSS 8.0) in the OPNsense OpenVPN connection-status dashboard widget that chains to full administrative/root compromise of the firewall. The CVSS vector (AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H) is internally consistent with the description: network-reachable but gated by high attack complexity, low-privilege authentication, required administrator interaction, and a scope change from the victim admin's browser to root on the firewall. Real-world risk is tempered by several converging limiters rather than inflated: AC:H reflects the narrow preconditions (username-as-common-name mode plus RADIUS/LDAP backend plus a separate trust boundary plus an attacker-controllable username containing a double quote), and UI:R reflects that the demonstrated payload fired on pointer movement over the client row, not on page load. No EPSS score was provided, no CISA KEV listing is indicated, and no public exploit flag was supplied - so there is no signal of active exploitation or mass scanning; the only exploitation evidence is the vendor's own advisory demonstration. Because the preconditions require a federated/outsourced identity backend distinct from firewall administration (the advisory explicitly notes same-admin deployments do not cross a trust boundary), this is a genuine but targeted/conditional priority rather than a broadly wormable internet threat. Net: treat as a high-priority patch for organizations running OpenVPN with external RADIUS/LDAP and username-as-common-name, lower urgency for single-administrator or local-DB deployments.

Exploit ScenarioDerived

In an environment where OPNsense authenticates OpenVPN users against RADIUS/LDAP in username-as-common-name mode, an attacker who can self-register or provision a backend username containing a double quote injects a broken-out data-common-name attribute carrying an event handler. When a firewall administrator later opens the OpenVPN dashboard widget or connection-status page and moves the pointer over the malicious client's row, the script runs in the admin's authenticated session, reading config.xml and invoking privileged APIs to reset the root password and achieve root command execution. No standalone public exploit is indicated beyond the vendor advisory, which demonstrates the full chain.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 15, 2026

Stored cross-site scripting in the OPNsense OpenVPN connection-status dashboard widget and status view lets an authenticated VPN client execute arbitrary JavaScript inside a firewall administrator's browser session, which the advisory demonstrates can read config.xml, invoke privileged APIs, reset the root password and ultimately obtain root command execution on the appliance. Exploitation is heavily gated: the OpenVPN server must be configured with username-as-common-name and a RADIUS or LDAP authentication backend, the attacker must be able to provision or self-register a backend username containing a double quote, a separate trust boundary must exist between the identity backend and the firewall (the local user database is unaffected because its username validator rejects quotes), and an administrator must open the affected dashboard or status page and trigger the injected handler - the demonstrated payload required pointer movement over the client row rather than unconditional page-load execution. Consistent with the CVSS vector (AV:N/AC:H/PR:L/UI:R) this is a low-privilege, high-complexity, admin-interaction-dependent issue; no public exploit code was identified at time of analysis, and the fix shipped in OPNsense 26.1.11.

RemediationAI

Vendor-released patch: upgrade to OPNsense 26.1.11 or later, which applies htmlSafe() encoding to the data-common-name attribute in both src/opnsense/www/js/widgets/OpenVPNClients.js and src/opnsense/mvc/app/views/OPNsense/OpenVPN/status.volt (see advisory https://github.com/opnsense/core/security/advisories/GHSA-26cj-h9rj-g5pf and commits https://github.com/opnsense/core/commit/11180daf579879d84d91a7fbea7a59320bc80868 and https://github.com/opnsense/core/commit/e7b2ac8093f804bef8eb88dfa9a0d99fad00c12b). If upgrading cannot be done immediately, the most effective compensating control is to stop using username-as-common-name on the OpenVPN server and rely on certificate common names instead - this removes the attacker-controlled value from the attribute entirely, at the cost of losing username-based session identification and any accounting or per-user logging that depends on it. Second, enforce strict username validation in the RADIUS/LDAP identity backend so that quote characters (and other HTML metacharacters) cannot be provisioned or self-registered; this closes the injection vector but may reject or require renaming of legitimate existing accounts and depends entirely on the directory administrator cooperating. Third, maintain an explicit separation of duties so that whoever governs the identity backend is not also an OPNsense administrator, preserving the trust boundary the advisory assumes. Finally, if the widget cannot be removed, restrict who can log into the OPNsense GUI and treat any administrator browsing of the OpenVPN dashboard or connection-status page as requiring a validated client list; note that because the payload executes only when an administrator loads the page and triggers the handler, avoiding those pages reduces but does not reliably eliminate exposure.

Affected VersionsENISA

core < 26.1.11

Affected Packages

euvd core fix: 26.1.11

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 root cause is CWE-79 (improper neutralization of input during web page generation) in an HTML attribute context. OpenVPN client common names were concatenated directly into data-common-name="..." attributes in two places: the dashboard widget src/opnsense/www/js/widgets/OpenVPNClients.js and the connection-status view src/opnsense/mvc/app/views/OPNsense/OpenVPN/status.volt. When an OpenVPN server is configured with username-as-common-name and RADIUS/LDAP authentication, the user-supplied backend username becomes the common_name value; a double quote in that username closes the attribute early, allowing an attacker to append arbitrary markup such as an event handler. The vendor fix wraps both sinks with the existing htmlSafe() helper (commit 11180daf579879d84d91a7fbea7a59320bc80868 for status.volt and commit e7b2ac8093f804bef8eb88dfa9a0d99fad00c12b for OpenVPNClients.js), performing context-appropriate encoding before the value is emitted. The CPE cpe:2.3:a:opnsense:core:*:*:*:*:*:*:*:* identifies the OPNsense core package across all versions prior to the fixed release, and the scope change (S:C) in the CVSS vector reflects that code running in the administrator's authenticated UI origin can pivot to privileged appliance APIs and the operating system.

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

Vendor (GitHub_M) PRIMARY 8.0 HIGH
AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H
vuln.today AI 8.0 HIGH

AC:H for the multiple preconditions (external backend, quote-bearing username, trust boundary); PR:L as an authenticated VPN client; UI:R because an admin must view and hover the row; S:C and C/I/A:H for root RCE via the admin session.

3.1 AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 17:17 EUVD
CVE Published
Oct 15, 2026 - 15:21 cve.org
HIGH 8.0

DescriptionCVE.org

OPNsense is a FreeBSD based firewall and routing platform. Prior to version 26.1.11, the OpenVPN connection-status dashboard widget in src/opnsense/www/js/widgets/OpenVPNClients.js and the connection-status view place a client common_name into data-common-name attributes without quote-safe encoding. Exploitation requires an OpenVPN server configured with username-as-common-name and RADIUS or LDAP authentication, plus the ability to provision or self-register a valid backend username containing a double quote; deployments where the same administrator controls both the identity backend and firewall do not cross a separate trust boundary. An authenticated client using that username can close the attribute and add an event handler, while the local user database is not affected because its username validator rejects quotes. Script executes in an administrator's session when the administrator opens the dashboard or connection-status page and the injected event is triggered; the demonstrated payload used pointer movement over the client row rather than unconditional page-load execution. The advisory demonstrates that the script can read config.xml, invoke privileged APIs, reset the root password, and obtain root command execution. This issue is fixed in version 26.1.11.

Technical POC Analysis

CWE-79 (stored cross-site scripting), a two-part defect in opnsense/core itself, not in a third-party library: The MVC response layer serializes API output with htmlspecialchars($result, ENTNOQUOTES)…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A high-severity stored cross-site scripting vulnerability in the OPNsense OpenVPN connection-status dashboard could allow a malicious VPN user to execute arbitrary code in a firewall administrator's browser, potentially leading to full root-level compromise of the appliance. This poses a significant risk to organizations that rely on OPNsense for network perimeter security, as an attacker could read sensitive configuration files, reset credentials, and take control of the firewall. Although exploitation requires specific configurations and administrator interaction, the absence of a vendor patch makes immediate mitigation critical.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: restrict OpenVPN authentication to the local user database (which rejects usernames containing double quotes), disable or limit access to the OpenVPN connection-status dashboard and status view, enforce strict username validation in RADIUS/LDAP backends to disallow quotes, monitor authentication logs for suspicious usernames, and restrict administrator browser sessions to trusted networks.

Threat Intelligence Overview

EPSS Score
0.5%
Top 60% exploitable
Prevalence
Medium
Popular open-source firewall, common in SMB/homelab but not enterprise-ubiquitous
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2023-39004 CRITICAL POC
9.8 Aug 09

Insecure permissions in the configuration directory (/conf/) of OPNsense Community Edition before 23.7 and Business Edit

CVE-2023-27152 CRITICAL POC
9.8 Oct 23

DECISO OPNsense 23.1 does not impose rate limits for authentication, allowing attackers to perform a brute-force attack

CVE-2023-39008 CRITICAL POC
9.8 Aug 09

A command injection vulnerability in the component /api/cron/settings/setJob/ of OPNsense Community Edition before 23.7

CVE-2023-39001 CRITICAL POC
9.8 Aug 09

A command injection vulnerability in the component diag_backup.php of OPNsense Community Edition before 23.7 and Busines

CVE-2023-39007 CRITICAL POC
9.6 Aug 09

/ui/cron/item/open in the Cron component of OPNsense Community Edition before 23.7 and Business Edition before 23.4.2 al

CVE-2023-39003 HIGH POC
7.5 Aug 09

OPNsense Community Edition before 23.7 and Business Edition before 23.4.2 was discovered to contain insecure permissions

CVE-2023-39005 HIGH POC
7.5 Aug 09

Insecure permissions exist for configd.socket in OPNsense Community Edition before 23.7 and Business Edition before 23.4

CVE-2023-38997 HIGH POC
7.2 Aug 09

A directory traversal vulnerability in the Captive Portal templates of OPNsense Community Edition before 23.7 and Busine

CVE-2023-38999 MEDIUM POC
6.5 Aug 09

A Cross-Site Request Forgery (CSRF) in the System Halt API (/system/halt) of OPNsense Community Edition before 23.7 and

CVE-2019-25373 MEDIUM POC
6.4 Feb 15

OPNsense 19.1 contains a stored cross-site scripting vulnerability that allows authenticated attackers to inject malicio

CVE-2019-25369 MEDIUM POC
6.4 Feb 15

OPNsense 19.1 contains a stored cross-site scripting vulnerability in the system_advanced_sysctl.php endpoint that allow

CVE-2019-25372 MEDIUM POC
6.1 Feb 15

OPNsense 19.1 contains a reflected cross-site scripting vulnerability that allows unauthenticated attackers to inject ma

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy