Skip to main content

ZoneMinder EUVDEUVD-2026-103146

| CVE-2026-102607 HIGH
OS Command Injection (CWE-78)
2026-10-16 GitHub_M
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate with View Events/Snapshots permission
  2. Delivery
    Obtain valid CSRF token
  3. Exploit
    Submit export request with exportDetail enabled
  4. Execution
    Inject shell metacharacters via exportFile parameter
  5. Persist
    Command reaches exec() tar/zip directory argument
  6. Impact
    Execute arbitrary OS commands as web server user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: 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 ZoneMinder session whose user holds the 'View Events' OR 'View Snapshots' permission, a valid CSRF token for the export request, and the 'exportDetail' option enabled on that request; the crafted payload must be placed in the exportFile request parameter handled by web/ajax/event.php and exportEvents() in web/skins/classic/includes/export_functions.php. Limiting factors: this is NOT unauthenticated (PR:L) - the attacker needs valid low-privilege credentials or an authenticated victim's session, the CSRF-token requirement blocks blind cross-site forgery without a leaked/valid token, and exportDetail must be enabled, so instances not exposing event export to lower-privilege roles are not exploitable by those roles. Affected only prior to version 1.38.3.

Impact

This is a genuine OS command injection (CWE-78) confirmed by the vendor's own GHSA advisory (GHSA-7j62-cjxp-3cj5) and the fix commits, where the attacker-controlled exportFile parameter is concatenated into a tar/zip command passed to exec(). The provided CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, base 8.8) is internally consistent with the description: network-reachable web endpoint, low attacker complexity, and full C/I/A impact via arbitrary command execution as the web server user. The key limiting signal is PR:L - exploitation is NOT unauthenticated; it requires a valid session with 'View Events' or 'View Snapshots' permission plus a valid CSRF token and the exportDetail option enabled, which meaningfully narrows the attacker population to authenticated (possibly low-privilege) users or anyone who can ride an authenticated session. No EPSS score, KEV listing, or POC was provided in the input, so there is no evidence of active exploitation or public exploit code; the real-world risk is therefore 'high severity, authenticated-only, no current exploitation signal.' Treat it as a priority patch for internet-exposed ZoneMinder instances (where credential or session compromise is plausible) but not an emergency drop-everything issue absent any exploitation data. Note explicitly: EPSS is MISSING and KEV/POC status is UNKNOWN from the input, so the probability-of-exploitation dimension cannot be assessed.

Exploit ScenarioDerived

An authenticated ZoneMinder user holding only View Events or View Snapshots permission submits an event export request with exportDetail enabled and a crafted exportFile value containing shell metacharacters plus a valid CSRF token. The malicious string reaches the trailing directory argument of the tar/zip command run by exec(), executing arbitrary OS commands as the web server user. No public exploit code was identified in the provided data, but the single-parameter injection and low complexity make weaponization straightforward for anyone with a valid low-privilege account.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 16, 2026

Authenticated OS command injection in ZoneMinder versions prior to 1.38.3 allows a low-privilege user holding View Events or View Snapshots permission to run arbitrary operating system commands as the web server user. The flaw lives in exportEvents() in web/skins/classic/includes/export_functions.php, where the attacker-controlled exportFile request parameter is appended to a tar or zip command executed via exec() without shell escaping, so a crafted value can break out of the trailing directory argument. Exploitation requires a valid session (CVSS PR:L), a valid CSRF token for the export request, and the exportDetail option enabled; no public exploit code has been identified at time of analysis, and there is no confirmed active exploitation (CISA KEV), though the vendor's own GHSA advisory and fix commits confirm the issue is real and the EPSS-style risk is elevated by the low privilege threshold and high confidentiality, integrity, and availability impact (CVSS 8.8).

RemediationAI

Vendor-released patch: upgrade ZoneMinder to 1.38.3, which sanitizes export_root and connkey with preg_replace and wraps the composed export path in escapeshellarg() before it reaches exec(); the release is at https://github.com/ZoneMinder/zoneminder/releases/tag/1.38.3 and the advisory with details is at https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-7j62-cjxp-3cj5, with the underlying changes in commits 548ed87d47a49c17b4c842f6fee8a08660deb427 and 605f962b7b6ba7f5780b3e6715b5418b8b2addca. If immediate upgrade is not possible, apply compensating controls in combination: remove or restrict the View Events and View Snapshots permissions from untrusted and low-privilege accounts so they cannot reach the export endpoint at all (this is effective but may break legitimate operator workflows), ensure the exportDetail option is not enabled for roles that should not be exporting detail (side effect: exports lack per-event detail and downstream review is degraded), and restrict or block access to web/ajax/event.php at the reverse proxy for any client IP ranges that do not need to export events (side effect: legitimate remote administration from those ranges is blocked, so scope the rule narrowly). Because exploitation still requires a valid session, reduce the window further by enforcing short session lifetimes, rotating credentials, and invalidating sessions after privilege changes; note that CSRF tokens are a defense-in-depth layer here rather than the primary control, since the attacker is assumed to hold an authenticated session and a valid token. Monitor web server and ZoneMinder logs for export requests from web/ajax/event.php containing shell metacharacters such as semicolons, pipes, backticks, $(), or ampersands in the exportFile parameter, and alert on child processes spawned by the web server user running tar, zip, or unexpected shells.

Affected VersionsENISA

zoneminder < 1.38.2

Affected Packages

euvd zoneminder fix: 1.38.2

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-78 (Improper Neutralization of Special Elements used in an OS Command), a classic shell-injection pattern in PHP. ZoneMinder's event-export workflow accepts an exportFile parameter through web/ajax/event.php, which is passed into exportEvents() in web/skins/classic/includes/export_functions.php. There, the value is string-concatenated into a tar or zip command line and handed to PHP's exec(), which invokes a shell; because the parameter becomes the trailing directory argument without neutralization, shell metacharacters in the value are interpreted by the shell rather than treated as literal characters. The vendor fix (commits 548ed87d47a49c17b4c842f6fee8a08660deb427 and 605f962b7b6ba7f5780b3e6715b5418b8b2addca) does two things: it strips characters outside [\w\-.] from export_root and connkey via preg_replace with a zmExport fallback, and it wraps the composed export path in escapeshellarg() before appending it to $command, which is the correct primary defense for shell argument construction. The affected CPE is cpe:2.3:a:zoneminder:zoneminder:*:*:*:*:*:*:*:* covering all releases before 1.38.3. This is a PHP web-application component, so reachability depends on the export endpoint being exposed and the caller satisfying both the permission check and the CSRF-token check, which is why the CVSS vector is PR:L rather than PR:N.

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

Network-facing web endpoint reachable with any View Events/Snapshots account gives AV:N/PR:L; a held session supplies the CSRF token so AC:L, and command execution yields full C:H/I:H/A:H.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/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
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 16, 2026 - 21:03 EUVD
CVE Published
Oct 16, 2026 - 19:29 cve.org
HIGH 8.8

DescriptionCVE.org

ZoneMinder is a free, open source closed-circuit television software application. Prior to 1.38.3, the exportEvents() function concatenates the attacker-controlled exportFile request parameter into a shell command without neutralizing shell metacharacters when an authenticated user with View Events or View Snapshots permission submits an event export request with a crafted exportFile value, a valid CSRF token, and exportDetail enabled. The affected components are exportEvents(), exportFile, web/ajax/event.php, web/skins/classic/includes/export_functions.php. In this attack mechanism, the crafted exportFile value reaches the trailing directory argument of a tar or zip command executed by exec(). The attacker can execute arbitrary operating system commands as the web server user. This issue is fixed in version 1.38.3.

Technical POC Analysis

CWE-78 (OS command injection) in ZoneMinder's event export path.

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

ZoneMinder video-surveillance servers running versions older than 1.38.3 contain an authenticated OS command-injection flaw (CVE-2026-102607, CVSS 8.8) that allows any account holding only View Events or View Snapshots rights to execute arbitrary commands as the web server user. Because the required privilege level is minimal, any shared or contractor viewing account becomes a viable path to full compromise of a system that holds live camera feeds, recording archives, and credentials. Leadership should treat this as a high-priority exposure for physical-security and operations teams, since compromise of surveillance infrastructure can undermine both evidence integrity and site security.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations: disable the exportDetail option, restrict View Events and View Snapshots permissions to vetted accounts only, block shell metacharacters in the exportFile request parameter via reverse proxy or WAF, restrict web-interface access to trusted network segments, and monitor export endpoint logs for injection attempts.

Threat Intelligence Overview

Prevalence
Medium
popular open-source CCTV/NVR software, mainly homelab and SMB surveillance
Social Media
2
Sightings
Data Quality
3 sources
Confidence: Low

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 N/A
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

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

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

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

CVE-2013-0232 HIGH POC
7.5 Mar 20

includes/functions.php in ZoneMinder Video Server 1.24.0, 1.25.0, and earlier allows remote attackers to execute arbitra

CVE-2023-26035 CRITICAL POC
9.8 Feb 25

ZoneMinder is a free, open source Closed-circuit television software application for Linux which supports IP, USB and An

CVE-2022-29806 CRITICAL POC
9.8 Apr 26

ZoneMinder before 1.36.13 allows remote code execution via an invalid language. Rated critical severity (CVSS 9.8), this

CVE-2013-0332 MEDIUM POC
5.0 Mar 20

Multiple directory traversal vulnerabilities in ZoneMinder 1.24.x before 1.24.4 allow remote attackers to read arbitrary

CVE-2016-10140 HIGH
7.5 Jan 13

Information disclosure and authentication bypass vulnerability exists in the Apache HTTP Server configuration bundled wi

CVE-2025-65791 CRITICAL POC
9.8 Feb 18

Command injection in ZoneMinder v1.36.34 video surveillance system via web/views/image.php. Unsanitized user input enabl

CVE-2016-10204 CRITICAL POC
9.8 Mar 03

SQL injection vulnerability in Zoneminder 1.30 and earlier allows remote attackers to execute arbitrary SQL commands via

CVE-2024-43360 CRITICAL POC
9.8 Aug 12

ZoneMinder is a free, open source closed-circuit television software application. Rated critical severity (CVSS 9.8), th

CVE-2023-26036 CRITICAL POC
9.8 Feb 25

ZoneMinder is a free, open source Closed-circuit television software application for Linux which supports IP, USB and An

CVE-2019-8429 CRITICAL POC
9.8 Feb 18

ZoneMinder before 1.32.3 has SQL Injection via the ajax/status.php filter[Query][terms][0][cnj] parameter. Rated critica

CVE-2019-8428 CRITICAL POC
9.8 Feb 18

ZoneMinder before 1.32.3 has SQL Injection via the skins/classic/views/control.php groupSql parameter, as demonstrated b

CVE-2019-8427 CRITICAL POC
9.8 Feb 18

daemonControl in includes/functions.php in ZoneMinder before 1.32.3 allows command injection via shell metacharacters. R

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