Skip to main content

OPNsense CVE-2026-58391

| EUVDEUVD-2026-102113 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-15 GitHub_M
5.4
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain Firewall Categories/Alias Edit access
  2. Delivery
    Store crafted category name or alias description
  3. Exploit
    Payload breaks out of title attribute via unescaped quote
  4. Execution
    Assign category/alias to a rule and save
  5. Persist
    Admin opens Rules or NAT page, script executes
  6. Impact
    Steal CSRF token, perform authenticated admin actions

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 an authenticated account holding the Firewall Categories or Firewall Alias Edit privilege to store a malicious category name or alias description. The poisoned category must then be assigned to a filter or NAT rule, OR the alias must be referenced as a rule source or destination, and that rule must be saved so the affected tooltip (data-toggle="tooltip" title attribute) is rendered. Execution is gated on a second user - an administrator or other user - actually opening the affected Firewall Rules or NAT page (UI:R). Limiting factors: the attacker needs pre-existing firewall-editing privileges (not a default/anonymous capability), a victim must view the specific page, and only versions prior to 26.1.11 are affected; the flaw does not exist against default low-trust deployments where untrusted users lack category/alias edit rights.

Impact

This is a moderate-risk, authenticated stored XSS (CWE-79) in OPNsense core prior to 26.1.11, and the supplied signals are internally consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N = 5.4) correctly captures a low-privilege attacker (PR:L - a user with Firewall Categories or Firewall Alias Edit rights) who injects a payload that later fires in a different, typically higher-privileged user's session (S:C scope change, UI:R because a victim must open the affected page). No EPSS score, CISA KEV entry, or public POC is present in the provided data, so exploitation status is 'no public exploit identified at time of analysis' - this is not a drive-by, internet-facing bug. The practical risk is bounded by two real gates: the attacker must already hold a privileged firewall-editing role, and an administrator must subsequently view the poisoned Rules or NAT page. That makes this primarily a privilege-escalation / insider or post-compromise lateral-movement issue rather than a mass-exploitation priority; its value is that successful execution yields CSRF material and authenticated actions as an administrator on a security device. The hackerask.com reference may contain technical write-up detail but is not confirmed as working exploit code. Treat as a 'patch-in-normal-cycle, prioritize if low-trust accounts can edit firewall categories/aliases' issue, not an emergency.

Exploit ScenarioDerived

A semi-trusted operator with only Firewall Categories or Firewall Alias Edit privileges stores a category name or alias description containing a double quote that breaks out of the HTML title attribute and injects an event-handler attribute; they assign the category to a rule (or have the alias referenced by a rule) and save it. When an administrator later opens the Firewall Rules or NAT page, the tooltip renders and the script executes in the admin's session, stealing CSRF tokens and performing authenticated actions as the administrator. No public exploit code is identified at time of analysis, but the root cause is confirmed by the vendor fix commits (ENT_NOQUOTES encoding left double quotes unescaped in filter_rule.volt / nat_rule.volt).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% 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 OPNsense core before 26.1.11 allows a user holding Firewall Categories or Firewall Alias Edit privileges to plant script that executes in the browser session of an administrator or other operator who opens the Firewall Rules or NAT page. The injected code runs with the victim's context, can read CSRF tokens, and can therefore perform authenticated actions on the firewall as that victim. Exploitation is not anonymous - it requires the attacker to already possess category or alias editing rights (PR:L, CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N, base 5.4), and the malicious category must be attached to a rule or the alias referenced as a rule source/destination and saved so the tooltip renders; no public exploit code was identified at time of analysis and the issue is not confirmed as actively exploited in CISA KEV. Fixed in OPNsense 26.1.11.

RemediationAI

Upgrade to OPNsense 26.1.11, which is the vendor-released fix for CVE-2026-58391; the change applies htmlSafe() encoding to category and alias tooltip output in filter_rule.volt and nat_rule.volt (see commits 5e6313f50546474031805039e209830b63b2b0e4 and fb3b8a07f407ce281b1dde748706acbb0bc514ce and advisory GHSA-2xrm-p255-p43h). If immediate upgrade is not possible, the most effective compensating control is to remove Firewall Categories and Firewall Alias Edit privileges from any account that is not a fully trusted firewall administrator - this eliminates the ability to store the payload at all, at the cost of losing delegated rule/alias management for those users. Additionally, audit existing category names and alias descriptions for embedded double quotes or HTML/event-handler fragments and strip or rename them; note that this is a one-time cleanup that does not prevent a privileged user from re-planting a payload, so it is a supplement, not a substitute for patching. Because the payload only executes when a victim opens the Rules or NAT page, restricting GUI access to trusted management networks reduces exposure but does not remove the flaw for administrators who must use those pages. After upgrading, clear cached browser content or force-reload the Rules and NAT pages so any previously stored tooltip markup is no longer rendered from stale state.

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

OPNsense is a FreeBSD-based firewall and routing platform whose web GUI is built on a PHP MVC stack using Volt templates. The affected views, src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt and nat_rule.volt, interpolate user-supplied category names (${name}, ${cat.name}) and alias tooltip content (${tooltipHtml}) directly into HTML title attributes of Bootstrap tooltip spans. The upstream escaping layer applies ENT_NOQUOTES, which leaves double quotes intact, so a stored value containing a quote can break out of the title attribute and append an event-handler attribute (e.g. onmouseover/onload) to the existing span, a classic CWE-79 stored/reflected-into-attribute XSS pattern. The upstream fix wraps the same expressions in htmlSafe(name) and htmlSafe(tooltipHtml) in four locations across the two templates, applying quote-safe encoding at the point of output. The single CPE entry, cpe:2.3:a:opnsense:core:*:*:*:*:*:*:*:*, confirms that all versions of the opnsense core package prior to the fix are in scope, regardless of edition or hardware platform.

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 5.4 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

Low-privilege attacker stores the payload (PR:L) over the web (AV:N); a victim must load the page (UI:R); script runs in the victim's authentication context, a scope change (S:C), with limited C/I and no availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 15, 2026 - 16:02 EUVD

DescriptionCVE.org

OPNsense is a FreeBSD based firewall and routing platform. Prior to version 26.1.11, Firewall Rules and NAT views place stored category names and alias descriptions into HTML title attributes in filter_rule.volt and nat_rule.volt without quote-safe encoding. The response layer uses ENT_NOQUOTES, so a double quote survives and closes the attribute, allowing an event-handler attribute to be added to the existing span. A user with Firewall Categories or Firewall Alias Edit privileges can store a category name or alias description; the category must be assigned to a filter or NAT rule, or the alias must be referenced by a rule source or destination, and the rule must be saved so the affected tooltip is rendered. Script then executes in the session of an administrator or other user who opens the affected Rules or NAT page. The script can access CSRF material and perform authenticated actions as the victim. This issue is fixed in version 26.1.11.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Medium
popular open-source firewall/router platform, common but not ubiquitous enterprise footprint
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
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.

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

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