Skip to main content

ZoneMinder EUVDEUVD-2026-103151

| CVE-2026-102608 CRITICAL
OS Command Injection (CWE-78)
2026-10-16 GitHub_M GHSA-v9cj-6fp2-33q4
9.0
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 monitor-edit permission
  2. Delivery
    Store monitor Name with shell metacharacters
  3. Exploit
    User with Events View exports that monitor's events
  4. Execution
    Payload breaks out of manual single-quote wrapping in ffmpeg/tar/zip command
  5. Impact
    Execute arbitrary 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 two authenticated prerequisites, not a default-reachable path: (1) an account with monitor-create or monitor-edit permission to store a monitor Name containing shell metacharacters, and (2) a user with Events View permission who exports that monitor's events, invoking downloadEvents(). The stored Name must reach the ffmpeg concatenation command and the tar/zip archive command, where it breaks out of the manual single-quote wrapping. Limiting factors that reduce real-world risk: the attacker needs a privileged (monitor-edit) role, the payload only fires when a victim performs the export action (user interaction), and only ZoneMinder versions prior to 1.38.3 are affected. It is not exploitable unauthenticated or against a patched install.

Impact

This is a genuine high-priority issue for ZoneMinder operators running versions prior to 1.38.3, but it is not a mass-exploitable internet worm candidate. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H = 9.0) is internally consistent with the description: network-reachable web UI, low complexity, but requiring authenticated privileges (PR:L - a monitor-create/monitor-edit role) and user interaction (UI:R - a user with Events View permission must export the monitor's events). The scope change (S:C) and triple-high impact reflect that injected commands run as the web server user, a different privilege context. No EPSS score, no CISA KEV listing, and no explicit POC flag were supplied in the input, so exploitation status is 'no public exploit identified at time of analysis' - though a technical writeup reference ('two-sinks-one-shell') suggests the mechanism is publicly documented, which typically shortens time-to-exploit. The key tempering factor missing from the raw 9.0 is that this is a stored/second-order injection gated behind two authenticated roles and a victim-triggered export, so it is far more realistic as a privilege-escalation / insider or multi-user-tenant attack than as unauthenticated RCE. The CWE-78 root cause (manual single-quote wrapping instead of escapeshellarg()) is confirmed directly by the vendor patch diff.

Exploit ScenarioDerived

An attacker holding a ZoneMinder account with monitor-create or monitor-edit permission sets a monitor's Name to a string containing shell metacharacters (e.g. breaking out of the manual single quotes). When any user with Events View permission later exports that monitor's events, downloadEvents() passes the stored Name into both the ffmpeg concat command and the tar/zip archive command, where the payload escapes the quoting and executes arbitrary commands as the web server user. The technique is publicly described in a blog writeup ('two-sinks-one-shell'), but no confirmed weaponized exploit code or active exploitation is indicated in the provided data.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available

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

Alert me

AnalysisAIv1 – Oct 16, 2026

Remote command execution in ZoneMinder prior to 1.38.3 allows an authenticated user with monitor-create or monitor-edit rights to store a monitor Name containing shell metacharacters that break out of manual single-quote wrapping when a user with Events View permission exports that monitor's events, executing arbitrary commands as the web server user. Exploitation requires two authenticated roles and victim interaction (CVSS vector PR:L/UI:R), so this is not a default-reachable or mass-exploitable issue; no public exploit identified at time of analysis, and a vendor-released patch is available in 1.38.3.

RemediationAI

Vendor-released patch: 1.38.3 (upgrade to that version). The release contains commits 2de2ae44a1d751bad4b020c5573b2d58c59c1525, b3a7c05f079c87badf4b0ce052da0acfd4047a4b, and b5605e01c14354fc8e2dcae8cefd90c3674880d9 that replace manual single-quote wrapping with escapeshellarg() and harden related shell and SQL constructs. See the advisory at https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-88m4-hrgp-m9v3 and release notes at https://github.com/ZoneMinder/zoneminder/releases/tag/1.38.3. If immediate upgrade is not possible, restrict monitor-create and monitor-edit permissions to fully trusted administrators, limit Events View and export permissions to trusted users, and consider whitelisting monitor names to alphanumeric characters only (trade-off: may break existing monitor names containing special characters or spaces), or temporarily disable the event export/archiving feature (trade-off: loss of export functionality). These compensating controls reduce exposure but do not fully eliminate the risk because the underlying command injection remains until the patch is applied.

Affected VersionsENISA

zoneminder 1.37.48, < 1.38.3

Affected Packages

euvd zoneminder fix: 1.38.3

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

ZoneMinder is an open-source CCTV/video surveillance application. The vulnerability class is CWE-78 (OS command injection). In downloadEvents() within web/includes/download_functions.php, the application constructs shell commands for ffmpeg concatenation and for tar/zip archiving, manually wrapping the monitor Name value in single quotes instead of using escapeshellarg(). An attacker with monitor-create or monitor-edit permission can store a malicious Name, and when a user with Events View permission exports that monitor's events, the stored Name propagates to both the ffmpeg and tar/zip commands, breaking out of the quoting and allowing arbitrary command execution as the web server user. The fix commit 2de2ae44a1d751bad4b020c5573b2d58c59c1525 replaces manual quoting with escapeshellarg() and also hardens related shell calls (cp -as, rm -rf) and SQL construction (intval, dbEscape), while commits b3a7c05f and b5605e01 address related issues. CPE cpe:2.3:a:zoneminder:zoneminder:*:*:*:*:*:*:*:* covers all versions, but only releases prior to 1.38.3 are vulnerable.

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

Web-reachable (AV:N), trivial payload (AC:L), but needs monitor-edit privileges (PR:L) and a victim export action (UI:R); commands run as web server user in a changed scope (S:C) with full C/I/A impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/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
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 16, 2026 - 21:03 EUVD
CVE Published
Oct 16, 2026 - 19:35 cve.org
CRITICAL 9.0

DescriptionCVE.org

ZoneMinder is a free, open source closed-circuit television software application. Prior to 1.38.3, downloadEvents() manually wraps a monitor Name value in single quotes instead of using escapeshellarg() before placing it in shell commands when a user with monitor-create or monitor-edit permission stores a monitor Name containing shell metacharacters and a user with Events View permission exports that monitor's events. In this attack mechanism, the stored monitor Name reaches both the ffmpeg concatenation command and the tar or zip archive command and breaks out of manual quoting. Arbitrary commands execute as the web server user. This issue is fixed in version 1.38.3.

Technical POC Analysis

CWE-78 OS command injection.

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 critical remote command execution flaw in ZoneMinder (all versions prior to 1.38.3) allows an authenticated user holding monitor-create or monitor-edit rights to plant malicious content in a camera monitor name that executes as the web server account when a colleague with Events View permission exports that monitor's event data. Exploitation is not mass-reachable - it requires two separate authenticated roles plus a victim to trigger the export - but a successful compromise yields code execution on the video surveillance platform, exposing camera feeds, recorded evidence, and any credentials or trust relationships the web server host holds. Leadership should care because surveillance infrastructure is often lightly governed, internet-exposed for remote viewing, and sits adjacent to physical security operations, making it an attractive pivot point for intrusions that are difficult to detect and reputationally damaging if footage or access is lost.

Business Impact: High
Compensating Controls

Vendor advisory identifies a fix in ZoneMinder 1.38.3; until that upgrade is applied, restrict monitor-create/monitor-edit and Events View permissions to the minimum necessary staff, segregate the ZoneMinder host from the general network, require VPN or proxy access instead of direct internet exposure, disable or tightly control event export, enforce MFA, and monitor web server logs for shell metacharacters in monitor names and for spawned shell processes.

Threat Intelligence Overview

Prevalence
Low
niche open-source CCTV/NVR software, mostly self-hosted security-camera deployments
Social Media
4
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 CRITICAL
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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

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

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