Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with Firewall Alias Edit privilege
-
DeliveryConfigure attacker-controlled GeoIP source URL
-
ExploitUpload archive with traversing country_code
-
ExecutionWrite newsyslog fragment and oversized log as root
-
PersistTrigger default hourly root cron job
-
ImpactExecute arbitrary commands as root
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 | Attacker must hold an authenticated account with the 'Firewall Alias Edit' privilege and must be able to configure a GeoIP alias pointing to an attacker-controlled source URL - a non-default alias configuration the operator supplies. The supplied archive's CSV country_code must contain traversal characters so process_zip()/process_gzip() write files (with -IPv4/-IPv6 suffixes) outside /usr/local/share/GeoIP/alias. Full root code execution additionally requires planting a crafted newsyslog fragment plus an oversized log file so the default hourly root cron job runs the payload. Limiting factors: exploitation is gated by the Firewall Alias Edit privilege (not unauthenticated), depends on the attacker controlling the GeoIP source archive contents, and relies on the default hourly root cron/newsyslog behavior being present; affected only prior to version 26.1.11. |
| Impact | CVSS is 9.9 (critical) with vector AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, indicating a network-reachable, low-complexity attack that escapes its privilege boundary (S:C) to achieve full compromise. The key tempering signal is PR:L: exploitation requires an already-authenticated account holding the 'Firewall Alias Edit' privilege, so this is a privilege-escalation-to-root primitive for a semi-trusted operator rather than an unauthenticated internet-facing bug. No EPSS probability score and no CISA KEV status were provided in the input, so exploitation-likelihood and active-exploitation signals cannot be assessed quantitatively - their absence should be treated as 'unknown', not 'low'. No SSVC decision data was supplied. The root cause (unvalidated two-character country_code used in output filenames) is confirmed by the vendor advisory and the patch commit diff, which makes the vulnerability highly credible and straightforward to weaponize once an attacker has the required privilege. The realistic priority is high for environments with multiple firewall administrators, delegated/role-based access, or MSP/multi-tenant management where an Alias-Edit operator is not fully trusted; it is lower for single-admin deployments where the only accounts able to reach this code already have full root-equivalent control. |
| Exploit ScenarioDerived | An authenticated user with the Firewall Alias Edit privilege (for example a delegated junior admin or a compromised limited operator account) creates a GeoIP alias pointing at an attacker-controlled source URL and uploads an archive whose CSV country_code value contains path-traversal sequences. The importer, running as root, writes the attacker's content (a crafted newsyslog fragment plus an oversized log file) to a directory outside the intended GeoIP path, and the default hourly root cron job then executes the planted commands as root. A detailed technical write-up exists publicly (hackerask.com), but no confirmed weaponized exploit code was provided in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Root-level code execution on OPNsense firewalls running versions prior to 26.1.11 is achievable by an authenticated operator who holds the 'Firewall Alias Edit' privilege and can point a GeoIP alias at an attacker-controlled source URL. The GeoIP importer's process_zip() and process_gzip() routines trust the CSV country_code field when building output filenames under /usr/local/share/GeoIP/alias, so a crafted value traverses out of that directory and writes attacker-controlled files as root; chaining a planted newsyslog fragment with an oversized log file then lets the default hourly root cron job execute the payload, yielding complete firewall compromise (CVSS 9.9, AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H). No public exploit code and no confirmed active exploitation were identified at time of analysis, and exploitation requires a non-default alias configuration that the operator must supply.
RemediationAI
Upgrade OPNsense to version 26.1.11 or later, which is the vendor-released patch; the two upstream commits c46aced9c47d956167e294911113bc334fea5f48 and e7fbfaa7f5e070da667e3f243da11fd3d4b731fa enforce a two-character alphanumeric country_code in both process_zip() and process_gzip(), and the advisory GHSA-wjqq-rfmm-v5h3 confirms the fix. If upgrading immediately is not possible, revoke the 'Firewall Alias Edit' privilege from all accounts that do not strictly require it, since the attack is gated on PR:L and cannot be reached unauthenticated; the trade-off is that legitimate alias administration must be performed by a small, monitored set of administrators. Additionally, restrict GeoIP alias sources to the official OPNsense-maintained feed rather than arbitrary or third-party URLs - this removes the attacker's ability to supply the malicious archive, though it limits operational flexibility for custom GeoIP data sets. As a detective control, audit /usr/local/share/GeoIP/alias and other writable system paths for unexpected files with -IPv4/-IPv6 suffixes, and review newsyslog configuration fragments for unauthorized additions, since the root-code-execution chain depends on planting a newsyslog fragment alongside an oversized log file for the hourly root cron job. Neither workaround eliminates the traversal bug itself; they only raise the cost of exploitation, so patching to 26.1.11 remains the only complete fix.
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 flaw is a classic CWE-22 path traversal introduced in the GeoIP alias data pipeline of OPNsense core (cpe:2.3:a:opnsense:core:*:*:*:*:*:*:*:*), a FreeBSD-based firewall and routing platform. The importer in src/opnsense/scripts/filter/lib/alias/geoip.py downloads a GeoIP archive from a user-configurable source, decompresses it via process_zip() or process_gzip(), parses the embedded CSV, and derives an output filename from the record's country_code field before writing into /usr/local/share/GeoIP/alias with an -IPv4 or -IPv6 suffix. Because that field was never constrained, values containing directory separators or traversal sequences escape the intended alias directory and land attacker-controlled content elsewhere on disk with root ownership. The upstream fix hardens the parsing rather than the path: the ZIP branch now requires len(parts[4]) == 2 and parts[4].isalnum(), and the GZIP branch adds an equivalent elif guard requiring a two-character alphanumeric country code, rejecting any record whose country code could contain path metacharacters. The escalation to full root command execution is not in the traversal itself but in the follow-on chain: an attacker-writable newsyslog fragment plus an oversized log file is consumed by the default hourly root cron job, converting arbitrary root file writes into arbitrary root command execution. The CVSS scope change (S:C) reflects that low-privilege Firewall Alias Edit access is leveraged to cross into the root security authority of the appliance.
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:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Reachable via the web UI (AV:N) by a low-privileged Alias-Edit operator (PR:L) with no user interaction; traversal yields root code execution escaping the app boundary (S:C) with full C/I/A impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
OPNsense is a FreeBSD based firewall and routing platform. Prior to version 26.1.11, the Firewall Alias GeoIP importer's process_zip() and process_gzip() paths in src/opnsense/scripts/filter/lib/alias/geoip.py use an unvalidated CSV country_code value to construct output filenames below /usr/local/share/GeoIP/alias. A user with Firewall Alias Edit privilege can configure an attacker-controlled GeoIP source URL and supply an archive whose country code traverses into another existing directory, causing attacker-controlled content to be written as root with an -IPv4 or -IPv6 suffix. A crafted newsyslog fragment and oversized log file can use the default hourly root cron job to execute commands as root, resulting in complete firewall compromise. This issue is fixed in version 26.1.11.
Technical POC Analysis
CWE-22 path traversal.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
OPNsense firewalls running versions prior to 26.1.11 can be fully compromised - root-level code execution - by an authenticated operator holding the Firewall Alias Edit privilege, meaning any administrator with that non-default permission (or any attacker who obtains such credentials) can convert routine alias management into complete control of a perimeter security device. Because the firewall is typically the enforcement point between the organization and the internet, successful exploitation exposes all downstream network segments, credentials, and logging integrity, and the compromise is difficult to detect since the attacker operates with root authority on the very system that produces the audit trail. Leadership should treat this as a high-priority insider-and-privileged-account risk affecting all OPNsense deployments at or below the affected release.
No vendor-released patch identified at time of analysis. Interim mitigations: revoke the 'Firewall Alias Edit' privilege from all non-essential accounts and enforce least privilege with MFA on firewall administration; disable or repoint any GeoIP alias whose source URL is external, untrusted, or unverified; restrict firewall-initiated outbound traffic to allow-listed GeoIP providers only; monitor and integrity-check /usr/local/share/GeoIP/alias, the newsyslog configuration, and log-rotation artifacts for unauthorized writes or anomalous oversized files; audit and alert on the hourly root cron job for unexpected execution; isolate firewall management interfaces on a dedicated administrative network segment and rotate credentials for all privileged operators.
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-102114
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB