Skip to main content

OPNsense CVE-2026-71490

| EUVDEUVD-2026-102140 HIGH
Incorrect Authorization (CWE-863)
2026-10-15 GitHub_M
7.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as user with directly-assigned write + readonly privs
  2. Exploit
    Call MVC API guarded by throwReadOnly()
  3. Execution
    Readonly check bypassed via string-concatenation flaw
  4. Impact
    Persist unauthorized configuration change

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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

Exploitation Conditions

Requires an authenticated OPNsense account that has been DIRECTLY assigned (not inherited through a group) both a component write privilege AND the user-config-readonly privilege; this combination is what triggers the exact-comparison parser flaw in ACL::hasPrivilege(). Limiting factors: exploitation is impossible for accounts whose privileges are assigned via groups (the group path splits comma-separated values correctly), requires a valid low-privileged account to already exist, and is confined to persisting configuration changes for components the account can write. Fixed in version 26.1.11, so unpatched installs prior to 26.1.11 are the exposed population. Impact is limited to configuration integrity for the affected component - no confidentiality disclosure.

Impact

The input provides a CVSS 3.1 base score of 7.1 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L), indicating a network-reachable, low-complexity flaw requiring low privileges, with high integrity impact, no confidentiality impact, and low availability impact - consistent with CWE-863 (Incorrect Authorization). No EPSS score, no CISA KEV listing, and no public exploit code were supplied, so there is no public exploit identified at time of analysis and no SSVC decision data to corroborate exploitation likelihood. Critically, the network vector is gated by a non-default precondition: an administrator must have DIRECTLY assigned a single account BOTH a component write privilege AND user-config-readonly (group-assigned privileges are explicitly NOT vulnerable because the group path splits comma-separated values correctly). This makes the realistic risk narrower than the 7.1 score implies - it is an authenticated privilege-containment bypass affecting a specific, operator-created privilege configuration rather than a broadly exploitable remote flaw. Treat as a moderate, config-dependent integrity issue; prioritize patching where delegated/semi-trusted OPNsense accounts exist, but it is not a drop-everything internet-facing RCE.

Exploit ScenarioDerived

An OPNsense account directly assigned both a component write privilege and the user-config-readonly restriction is intended to be read-only. Because ACL::hasPrivilege() concatenates the directly-assigned comma-separated privilege string and performs an exact match, the readonly check fails to match and the account is treated as not read-only, letting it call an MVC API guarded by throwReadOnly() to persist configuration changes for that component. No public exploit code is identified; exploitation requires the attacker to already hold such an account.

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

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

Alert me

AnalysisAIv1 – Oct 15, 2026

Improper authorization handling in OPNsense core before 26.1.11 lets an authenticated low-privileged user (CVSS PR:L) bypass the user-config-readonly restriction and persist configuration changes through MVC APIs that rely on the throwReadOnly() guard. The flaw only triggers for accounts whose privileges are assigned directly: when a user is given both a component write privilege and user-config-readonly inside one comma-separated <priv> value, ACL::hasPrivilege() fails to detect the read-only flag through its exact string comparison, so the write is allowed; accounts receiving privileges through groups are unaffected. Impact is confined to configuration integrity for the affected component (I:H with C:N and A:L), no public exploit has been identified at time of analysis, and the vendor has shipped the fix in OPNsense 26.1.11.

RemediationAI

Vendor-released patch: upgrade to OPNsense 26.1.11 or later, which corrects the comma-separated privilege evaluation in ACL::hasPrivilege() and adds the page-all enforcement helper used by sensitive controllers; details and the upgrade path are documented in the advisory at https://github.com/opnsense/core/security/advisories/GHSA-p9pr-782r-w2xw, with the code changes in commits 578e025111161ffd03fd3fd0ccdac203be546505, e15a884973746319e79bd2cd421e8a015cc3ddb9, and f674f4ff294a3f7c4cd0591563f6df47bea50034. Where immediate upgrade is not possible, audit local user accounts in System > Access > Users and eliminate the risky combination by removing user-config-readonly from any account that also holds direct component write privileges, or by granting those privileges through groups instead of directly - the group code path splits comma-separated values correctly and is not affected, though this changes privilege administration and should be verified against your intended read-only policy. As a compensating control, restrict API and GUI access for such accounts to trusted management networks and review configuration history for unauthorized changes to the affected components; these controls reduce reachability and improve detection but do not remove the underlying authorization flaw, so patching to 26.1.11 remains the definitive fix.

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 and API are built on a custom MVC framework. Authorization decisions route through OPNsense\Core\ACL::hasPrivilege(), which evaluates privilege strings; the parser appends a directly assigned comma-separated <priv> value as a single string and then performs an exact (non-splitting) comparison when testing for user-config-readonly. Because 'component-write,user-config-readonly' is never equal to the literal token 'user-config-readonly', the read-only check silently fails, and controllers that call throwReadOnly() - and therefore the underlying ApiMutableModelControllerBase save paths - accept configuration writes they should reject. This is a classic CWE-863 incorrect authorization defect: the identity check itself is well-intentioned but the token normalization is inconsistent with the group code path, which already splits comma-separated privilege lists correctly. The upstream commits (578e025111161ffd03fd3fd0ccdac203be546505, e15a884973746319e79bd2cd421e8a015cc3ddb9, f674f4ff294a3f7c4cd0591563f6df47bea50034) correct the evaluation logic and additionally introduce an internalSaveRequiresAdmin flag plus a throwNotFullAdmin() helper for components deemed sensitive enough to require the page-all privilege, as demonstrated by the Monit settings controller. The CPE cpe:2.3:a:opnsense:core:*:*:*:*:*:*:*:* covers all unpatched core releases.

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 7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
vuln.today AI 7.1 HIGH

API-reachable over network (AV:N) by an existing low-privileged account (PR:L); the flaw deterministically bypasses the readonly check (AC:L), yielding config-write integrity impact (I:H) with no data disclosure (C:N) and minor availability effect (A:L).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

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

DescriptionCVE.org

OPNsense is a FreeBSD based firewall and routing platform. Prior to 26.1.11, OPNsense\Core\ACL::hasPrivilege() appends a directly assigned comma-separated <priv> value as one string and then uses an exact comparison when checking user-config-readonly. A user directly assigned both a component write privilege and user-config-readonly can therefore be treated as lacking the read-only restriction, and MVC APIs protected by throwReadOnly() can persist configuration changes for that component. Group privileges are not affected by the same parser flaw because the group path already splits comma-separated values. This issue is fixed in version 26.1.11.

Technical POC Analysis

CWE-863 (Incorrect Authorization) in OPNsense\Core\ACL::hasPrivilege() (src/opnsense/mvc/app/models/OPNsense/Core/ACL.php).

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

OPNsense firewall deployments running core versions earlier than 26.1.11 contain an authorization weakness that lets a low-privileged, authenticated account bypass read-only configuration restrictions and permanently write configuration changes through the management APIs. Because OPNsense commonly serves as the network perimeter control, unauthorized configuration edits can undermine security enforcement, although the flaw affects only configuration integrity for the impacted component and does not expose data or enable code execution. Leadership should care most if delegated or self-managed accounts hold write privileges assigned directly to the user rather than through groups, since those are the only accounts affected.

Business Impact: Medium
Compensating Controls

Apply vendor patch (OPNsense 26.1.11). If upgrade cannot be completed immediately: assign read-only and write privileges through separate group memberships rather than comma-separated direct user privileges, audit and reduce directly-assigned write privileges, and monitor configuration change logs for unauthorized modifications.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Medium
popular open-source FreeBSD firewall, common in SMB/homelab, not ubiquitous enterprise-wide
Data Quality
5 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.4%
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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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