Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with monitor-edit permission
-
DeliveryStore monitor Name with shell metacharacters
-
ExploitUser with Events View exports that monitor's events
-
ExecutionPayload breaks out of manual single-quote wrapping in ffmpeg/tar/zip command
-
ImpactExecute 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
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
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
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
More in Zoneminder
View allincludes/functions.php in ZoneMinder Video Server 1.24.0, 1.25.0, and earlier allows remote attackers to execute arbitra
ZoneMinder is a free, open source Closed-circuit television software application for Linux which supports IP, USB and An
ZoneMinder before 1.36.13 allows remote code execution via an invalid language. Rated critical severity (CVSS 9.8), this
Multiple directory traversal vulnerabilities in ZoneMinder 1.24.x before 1.24.4 allow remote attackers to read arbitrary
Information disclosure and authentication bypass vulnerability exists in the Apache HTTP Server configuration bundled wi
Command injection in ZoneMinder v1.36.34 video surveillance system via web/views/image.php. Unsanitized user input enabl
SQL injection vulnerability in Zoneminder 1.30 and earlier allows remote attackers to execute arbitrary SQL commands via
ZoneMinder is a free, open source closed-circuit television software application. Rated critical severity (CVSS 9.8), th
ZoneMinder is a free, open source Closed-circuit television software application for Linux which supports IP, USB and An
ZoneMinder before 1.32.3 has SQL Injection via the ajax/status.php filter[Query][terms][0][cnj] parameter. Rated critica
ZoneMinder before 1.32.3 has SQL Injection via the skins/classic/views/control.php groupSql parameter, as demonstrated b
daemonControl in includes/functions.php in ZoneMinder before 1.32.3 allows command injection via shell metacharacters. R
EUVD-2026-103151
GHSA-v9cj-6fp2-33q4
NVD
CVE.org
Exploit-DB